Linux运维相关基础知识(二)

news2025/1/8 1:47:15

系列文章目录

Linux常用命令
linux 账号管理与权限设定
Linux运维相关基础知识


文章目录

  • 系列文章目录
  • 前言
  • 1. 自动任务执行
    • at 与 atd
    • crontab 与 crond
  • 2. SELinux
    • tty多任务管理
    • 与进程管理相关的命令
    • /proc/* 文件的意义
    • SELinux
  • 3. 守护进程
    • 早期SystemV的init管理行为中daemon的主要分类
    • systemd
    • systemctl
      • 设定一个backup服务
      • 设定周期性执行
      • 设定固定日期执行
  • 4. 系统日志
    • rsyslog.service
    • logrotate
    • systemd-journald.service
  • 5. Linux开机流程
    • Linux开机过程
      • 1. BIOS,开机自检
      • 2. Boot Loader 启动kernel
      • 3. load kernel & initramfs
      • 4. 第一个进程systemd & 通过default.target分析开机程序
    • Boot Loader: Grub2
  • 其他
  • 总结


前言


1. 自动任务执行

at 与 atd

在未来只执行一次的任务
at是用户与系统交互的工具,用于定义任务
atd是实际执行任务的后台服务

crontab 与 crond

cron daemon 是实际在后台执行由crontab定义的周期任务。似乎是每分钟执行一次检查是否有任务需要被执行?

2. SELinux

tty多任务管理

向当前任务发送 SIGINT 信号 Ctrl+C

将当前任务暂停并放入后台 Ctrl+Z SIGTSTP

将当前任务放入后台执行 ./taskname &

将任务放入后台并重定向标准输出和标准错误流

./a.out this is cmdline 1>/dev/null 2>/dev/null
./a.out this is cmdline 1>/dev/null 2>&1  &

查看后台由哪些任务 jobs

将后台任务搬到前台继续执行 fg [tasknumber]

让任务在后台继续执行 bg [tasknumber]

让程序离线运行

nohup ./a.out &
nohup ./a.out > log.txt 2>&1 &

tail -f log.txt

与进程管理相关的命令

ps aux 观察系统所有的程序

top [-d -b -n -p]
-d 更新秒数
-b 以批次的方式执行top,通常搭配文件重定向将批次的结果保存为文件
-n 和-b搭配,需要进行几次输出
-p 指定某些PID来进行观察

pstree 查看进程树

程序之间可以通过signal进行相互控制

都可以通过程序名称kill进程
pkill -9 cmdline
killall -9 cmdline

找到PID:pidof systemd rsyslogd
端口号占用: lsof -i:8080

/proc/* 文件的意义

see more https://blog.csdn.net/surfaceyan/article/details/144926745?sharetype=blogdetail&sharerId=144926745&sharerefer=PC&sharesource=surfaceyan&spm=1011.2480.3001.8118

文件desc
cmdline命令行字符串
cpuinfo
devices系统各主要装置的代号与 mknod 有关
filesystems目前系统已经载入的文件系统
interrupts目前系统上的IRQ分配状态
ioports目前系统上各个装置所配置的I/O位址
loadavgtop和uptime显示的在此
meminfofree列出的
modules目前的Linux已经载入的内核模组列表,可以是驱动程序,lsmod的信息
mounts系统已经挂载的文件系统,就是mount的打印
swaps
partitions使用fdisk -l打印的目前所有的分区
uptime
version
bus/*USB装置等

SELinux

Security Enhanced Linux
初衷:避免资源的误用,为了安全
SELinux是一个内核模块

在这里插入图片描述
SELinux通过MAC(Mandatory Access Control 委托式存取控制)的方式来管控程序,它控制的主体是程序,而目标则是该程序能否读取档案资源。

  • 主体
    程序
  • 目标
    主体能否读写文件系统
  • 策略
    由于程序档案数量庞大,因此SELinux会依据某些服务来制定基本的存取安全性策略。这些政策内还有很详细的规则来指定不同的服务开放某些资源的存取
  • 安全性本文(security context)
    主体与目标的安全性本文必须一致才能顺利存取。文件本文有点类似文件系统的rwx,如果设定错误则服务器程序就无法存取文件系统,会出现权限不符的问题

在这里插入图片描述
security context 是存放在文件的inode内的; ls -Z可查看文件的安全本文

3. 守护进程

服务(service),达成周期性启动工作历程服务(service)的程序为crond这个daemon。

早期SystemV的init管理行为中daemon的主要分类

早期的init管理机制:

  • 所有的服务启动脚本都放在/etc/init.d/目录下

  • 服务启动的分类,init服务的分类中依据服务是否独立启动分为两类:

    • 独立启动模式:
    • super daemon:有特殊的xinetd或inetd这俩个程序负责管理(systemd 早期原型?)其它程序的启停
  • 服务启动时的依赖问题有人工手动设置

  • 执行等级分类
    init进程是kernel启动的第一个进程,然后init可根据使用者自定的执行等级runlevel来启动不同的服务。
    Linux提供了7个执行等级0,1(单人模式),2,3(纯文字模式)…5(文字加图形界面),6。各执行等级的启动脚本是通过/etc/rc.d/rc[0-6]/

  • init 0 关机 init --help see more

systemd

  • 任务并行启动
  • systemd + systemctl
  • 自动启动服务的依赖
  • 依据daemon功能分类
    systemd先定义所有的服务为一个服务单位(unit),并将该unit归类到不同的服务类型(type)去,systemd将服务单位分为众多类型 service、socket、target、path等等
  • 将多个daemons集合为一个群组
  • 向下兼容init服务脚本

systemd似乎无法完全取代init

systemd unit类型
.service一般服务类型 (service unit):主要是系统服务,包括伺服器本身所需要的本机服务以及网路服务都是!比较经常被使用到的服务大多是这种类型! 所以,这也是最常见的类型了!
.socket内部程序资料交换的插槽服务 (socket unit):主要是 IPC (Inter-process communication) 的传输讯息插槽档 (socket file) 功能。 这种类型的服务通常在监控讯息传递的插槽档,当有透过此插槽档传递讯息来说要连结服务时,就依据当时的状态将该用户的要求传送到对应的 daemon, 若 daemon 尚未啟动,则啟动该 daemon 后再传送用户的要求。使用 socket 类型的服务一般是比较不会被用到的服务,因此在开机时通常会稍微延迟啟动的时间 (因為比较没有这麼常用嘛!)。一般用於本机服务比较多,例如我们的图形界面很多的软体都是透过 socket 来进行本机程序资料交换的行為。 (这与早期的 xinetd 这个 super daemon 有部份的相似喔!)
.target执行环境类型 (target unit):其实是一群 unit 的集合,例如上面表格中谈到的 multi-user.target 其实就是一堆服务的集合~也就是说, 选择执行 multi-user.target 就是执行一堆其他 .service 或/及 .socket 之类的服务就是了!
.mount
.automount
档案系统掛载相关的服务 (automount unit / mount unit):例如来自网路的自动掛载、NFS 档案系统掛载等与档案系统相关性较高的程序管理。
.path侦测特定档案或目录类型 (path unit):某些服务需要侦测某些特定的目录来提供佇列服务,例如最常见的列印服务,就是透过侦测列印佇列目录来啟动列印功能! 这时就得要 .path 的服务类型支援了!
.timer循环执行的服务 (timer unit):这个东西有点类似 anacrontab 喔!不过是由 systemd 主动提供的,比 anacrontab 更加有弹性!

systemctl

systemctl相当于前端,systemd相当于后端

systemctl [command] [unit]
command 主要有:
start     :立刻啟动后面接的 unit
stop      :立刻关闭后面接的 unit
restart   :立刻关闭后啟动后面接的 unit,亦即执行 stop 再 start 的意思
reload    :不关闭后面接的 unit 的情况下,重新载入设定档,让设定生效
enable    :设定下次开机时,后面接的 unit 会被啟动
disable   :设定下次开机时,后面接的 unit 不会被啟动
status    :目前后面接的这个 unit 的状态,会列出有没有正在执行、开机预设执行否、登录等资讯等!
is-active :目前有没有正在运作中
is-enabled:开机时有没有预设要啟用这个 unit
# 列出系统上面有啟动的 unit
systemctl

# 列出所有已经安装的 unit 有哪些?
systemctl list-unit-files

systemctl list-units --type=service --all
systemctl list-units --type=service --all | grep cpu

通过systemctl可管理不同的操作环境(target unit)如是否开启图形界面是否开启多人模式,开关机等
可分析各服务之间的依赖关系

/etc/services查看端口号和对应的服务

查看端口号使用情况
netstat -tlunp

设定一个backup服务

~/backup.sh

#!/bin/bash

source="/etc /var/lib /var/spool/{cron,at,mail}"
target="/home/xxx/backups/backup-system-$(date +%Y-%m-%d).tar.gz"
[ ! -d /home/xxx/backups ] && mkdir /home/xxx/backups
tar -zcvf ${target} ${source} &> /home/xx/backups/backup.log

/etc/systemd/system/backup.service

[Unit]
Description=backup my server
Requires=

[Service]
Type=simple
ExecStart=/bin/bash -c /home/xxx/backup.sh

[Install]
WantedBy=multi-user.target

设定周期性执行

设定固定日期执行

4. 系统日志

系统中的日志默认在/var/log*

与日志相关的主要服务程序:

  • systemd-journald.service:最主要的訊息收受者,由 systemd 提供的;
  • rsyslog.service:主要登錄系統與網路等服務的訊息;
  • logrotate:主要在進行登錄檔的輪替功能。

rsyslog.service

设定文件 /etc/rsyslog.conf

该服务支持将日志发送到远程

logrotate

滚动写入log

/etc/logrotate.conf
/etc/logrotate.d/

systemd-journald.service

和rsyslog.service很像,不过数据存储在内存中?

5. Linux开机流程

Linux开机过程

1. BIOS,开机自检

BIOS分为传统BIOS和新的UEFI BIOS。硬盘分区表分为MBR和GPT,但是GPT也保留一块与MBR兼容的区域,即硬盘最前面可安装boot loader的区域。

开机首先载入BIOS,并透过 BIOS 程式去载入 CMOS 的资讯,并且藉由 CMOS 内的设定值取得主机的各项硬体设定, 例如 CPU 与周边设备的沟通时脉、开机装置的搜寻顺序、硬碟的大小与类型、 系统时间、各周边汇流排的是否启动 Plug and Play (PnP, 随插即用装置) 、 各周边设备的 I/O 位址、以及与 CPU 沟通的 IRQ 岔断等等的资讯。

在获取硬件信息后BIOS会进行开机自检(Power-on Self Test,POST)。然后开始执行硬件检测初始化、确定开机装置顺序、读取开机装置的资料。

由于不同操作系统的文档格式不同(不同内核的启动方法不一样),必须有一个开机管理程序来处理内核的载入(load)问题,该程序称为Boot Loader。bl就在开机装置的第一个扇区(sector)内,也就是MBR(Master Boot Record,主开机记录区)。

BIOS 是通过硬件的 INT 13 中断功能来读取 MBR 的,也就是说,只要 BIOS 能够侦测的到你的磁碟 (不论该磁碟是 SATA 还是 SAS 介面),那他就有办法透过 INT 13 这条通道来读取该磁碟的第一个磁区内的 MBR 软体。

2. Boot Loader 启动kernel

它会确认操作系统的档案格式并加载kernel。

每个文件系统 (filesystem, 或者是 partition) 都会保留一块开机磁区 (boot sector) 提供操作系统安装 boot loader , 而通常操作系统预设都会安装一份 loader 到他根目录所在的文件系统的 boot sector 上。如果我们在一部主机上面安装 Windows 与 Linux 后,该 boot sector, boot loader 与 MBR 的相关性会有点像下图:
在这里插入图片描述

如上图所示,每个作业系统预设是会安装一套 boot loader 到他自己的档案系统中 (就是每个 filesystem 左下角的方框),而在 Linux 系统安装时,你可以选择将 boot loader 安装到 MBR 去,也可以选择不安装。 如果选择安装到 MBR 的话,那理论上你在 MBR 与 boot sector 都会保有一份 boot loader 程式的。 至于 Windows 安装时,他预设会主动的将 MBR 与 boot sector 都装上一份 boot loader!所以啦, 你会发现安装多重作业系统时,你的 MBR 常常会被不同的作业系统的 boot loader 所覆盖。

boot loader 主要的功能如下:

  • 提供选单:使用者可以选择不同的开机项目,这也是多重开机的重要功能!
  • 载入核心档案:直接指向可开机的程式区段来开始作业系统;
  • 转交其他 loader:将开机管理功能转交给其他 loader 负责。

在这里插入图片描述

3. load kernel & initramfs

内核启动后会接管BIOS,测试与驱动外设。内核文件一般放在/boot下并取名/boot/vmlinuz ,bl会加载这个内核文件并将执行权交给它。内核模块放在/lib/modules/目录内,外设驱动等以内核模块的形式存放在该目录下。

因此在开机过程中必须要(只读模式)挂载根目录。

虚拟档案系统 (Initial RAM Disk 或 Initial RAM Filesystem) 一般使用的档名为 /boot/initrd 或 /boot/initramfs ,这个档案的特色是,他也能够透过 boot loader 来载入到记忆体中,然后这个档案会被解压缩并且在内存当中模拟成一个根目录, 且此模拟在内存当中的档案系统能够提供一支可执行的程式,透过该程式来载入开机过程中所最需要的核心模组, 通常这些模组就是 USB, RAID, LVM, SCSI 等档案系统与磁碟介面的驱动程式!等载入完成后, 会帮助核心重新调用 systemd 来开始后续的正常开机流程。
在这里插入图片描述
如上图所示,boot loader 可以载入 kernel 与 initramfs ,然后在内存中让 initramfs 解压缩成为根目录, kernel 就能够藉此载入适当的驱动程式,最终释放虚拟文件系统,并挂载实际的根文件系统,就能够开始后续的正常开机流程。

man initrd 查看更多内容
initramfs 就是一个小型的根目录

当根目录挂载完成,外设驱动加载完后,开始执行系统的第一个程序systemd。

4. 第一个进程systemd & 通过default.target分析开机程序

在调用systemd时,主机硬件已经准备就绪了。 systemd 最主要的功能就是准备软体执行的环境,包括系统的主机名称、网路设定、语系处理、档案系统格式及其他服务的启动等。 而所有的动作都会透过 systemd 的预设启动服务集合,亦即是 /etc/systemd/system/default.target 来规划。

init [OPTIONS...] COMMAND

Send control commands to the init daemon.

Commands:
  0              Power-off the machine
  6              Reboot the machine
  2, 3, 4, 5     Start runlevelX.target unit
  1, s, S        Enter rescue mode
  q, Q           Reload init daemon configuration
  u, U           Reexecute init daemon

『 init 3 』转成文字界面,『 init 5 』转成图形界面

要知道系统的服务启用的流程,最简单的方法就是『 systemctl list-dependencies graphical.target 』这个指令

sysinit.target 的初始化流程让系统可以存取之后,加上 basic.target 让系统成为作业系统的基础, 之后就是伺服器要顺利运作时,需要的各种主机服务以及提供伺服器功能的网路服务的启动了。这些服务的启动则大多是附挂在 multi-user.target 这个操作环境底下, 可以到 /etc/systemd/system/multi-user.target.wants/ 查看预设要被启动的服务。

Boot Loader: Grub2

  • stage1:第一阶段为执行 boot loader 的主程式,这个主程式必须要被安装在开机区,亦即是 MBR 或者是 boot sector 。因为 MBR 实在太小了,所以,MBR 或 boot sector 通常仅安装 boot loader 的最小主程式, 并没有安装 loader 的相关设定档;
  • stage2: 第二阶段为透过 boot loader 载入所有设定档与相关的环境参数档案 (包括档案系统定义与主要设定档 grub.cfg), 一般来说,设定档都在 /boot 底下

硬盘及其分区在grub2中的代号

硬盘搜索顺序在grub2中的代号
第一个(MBR)(hd0) (hd0,msdos1) (hd0,msdos2) (hd0,msdos3)…
第二个(GPT)(hd1) (hd1,gpt1) (hd1,gpt2) (hd1,gpt3)…
第三个(hd2) (hd2,1) (hd2,2) (hd2,3)…
  • chroot 目录:代表将你的根目录『暂时』切换到 chroot 之后所接的目录。 /sysroot 将会被暂时作为根目录, 而我们知道那个目录其实就是最原先的系统根目录,所以当然就能够用来处理你的档案系统与相关的帐号管理

其他

localectl

locale

# 分析系统硬件
dmidecode -t type

gdisk: 可以使用 gdisk -l 将分割表列出;
dmesg: 观察核心运作过程当中所显示的各项讯息记录;
vmstat: 可分析系统 (CPU/RAM/IO) 目前的状态;
lspci:列出整个 PC 系统的 PCI 介面装置!很有用的指令;
lsusb:列出目前系统上面各个 USB 埠口的状态,与连接的 USB 装置;
iostat:与 vmstat 类似,可即时列出整个 CPU 与周边设备的 Input/Output 状态。

总结

总结个J

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2272943.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

java开发springoot

阅读理解 命令之间空一行:表示前面的是配置 红色背景:表示待验证蓝色背景:表示常用或推荐绿色背景:注意/推荐 json 转 对象 import com.fasterxml.jackson.databind.ObjectMapper; public DebangResp convertJsonToObject(Stri…

MLU上使用MagicMind GFPGANv1.4 onnx加速!

文章目录 前言一、平台环境准备二、环境准备1.GFPGAN代码处理2.MagicMind转换修改env.sh修改run.sh参数解析运行 3.修改后模型运行 前言 MagicMind是面向寒武纪MLU的推理加速引擎。MagicMind能将人工智能框架(TensorFlow、PyTorch、Caffe与ONNX等)训练好…

Nginx——入门介绍、安装与核心配置文件结构(一/五)

目录 1.Nginx 简介1.1.背景介绍1.2.名词解释1.3.常见服务器对比1.3.1.IIS1.3.2.Tomcat1.3.3.Apache1.3.4.Lighttpd1.3.5.其他的服务器 1.4.Nginx 的优点1.4.1.速度更快、并发更高1.4.2.配置简单,扩展性强1.4.3.高可靠性1.4.4.热部署1.4.5.成本低、BSD 许可证 1.5.Ng…

nginx-限流(请求/并发量)

一. 简述: 在做日常的web运维工作中,难免会遇到服务器流量异常,负载过大等情况。恶意攻击访问/爬虫等非正常性请求,会带来带宽的浪费,服务器压力增大,影响业务质量。 二. 限流方案: 对于这种情…

【学Rust开发CAD】1 环境搭建

文章目录 一、搭建C/C编译环境二、安装Rust三、配置 PATH 环境变量四、验证安装结果五、安装编辑工具 一、搭建C/C编译环境 Rust 的编译工具依赖 C 语言的编译工具,这意味着你的电脑上至少已经存在一个 C 语言的编译环境。如果你使用的是 Linux 系统,往…

模型创新、论文复现、科研辅导、论文代码定制

建模先锋团队长期致力于为用户提供优质的代码定制服务。团队提供全网最低价格的服务,同时保证高性价比和高质量的代码交付,为您提供个性化定制的服务。 以下是定制服务范围: 通过深度学习和信号处理技术,我们能够针对不同行业和场…

基于云效 Windows 构建环境和 Nuget 制品仓库进行 .Net 应用开发

作者:陆冬澄、周静 在现代软件研发体系中,.NET 平台由于其强大的功能、灵活性和丰富的开发工具,成为了构建 Windows 应用程序的热门选择。无论是桌面应用、Web 应用还是服务应用,.NET 提供了一系列强大的框架和工具,帮…

用VS C#构建Windows服务【纯操作版,附带项目地址】

1.点击“创建新项目”,选择“Windows 服务(.NET Framework)” 2、给项目命名 3、双击“Service1.cs”,右键,选择“添加安装程序”,就会生成一个“ProjectInstaller.cs”文件 4、双击“P…

KUKA机器人如何修改程序并下载到机器人控制器中?

KUKA机器人如何修改程序并下载到机器人控制器中? 如下图所示,首先将使用的网卡的IP地址设置为自动获得, 打开workvisual软件,点击搜索,正常情况下可以搜索到项目文件,选中后双击进入, 如下图所示,此时,workvisual会自动从机器人控制器中下载项目文件到电脑上,耐心等待…

L28.【LeetCode笔记】移动零(三种解法)

目录 1.题目 2.向前覆盖法 分析 代码 提交结果 3.优解:双指针 代码 提交结果 4.其他不符合题意的方法:使用队列 代码 提交结果 1.题目 https://leetcode.cn/problems/move-zeroes/description/ 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾…

js逆向实战(1)-- 某☁️音乐下载

下载某云音乐源文件.mp4格式 首先随便点进一首歌,如图所示获取该音乐id,然后点击播放键,打开F12进行查询XHR 由此可知,实际请求网址是 https://music.163.com/weapi/song/enhance/player/url/v1?csrf_token「你的token」url需带…

深入了解 SSL/TLS 协议及其工作原理

深入了解 SSL/TLS 协议及其工作原理 一. 什么是 SSL/TLS?二. SSL/TLS 握手过程三. SSL/TLS 数据加密与传输四. 总结 点个免费的赞和关注,有错误的地方请指出,看个人主页有惊喜。 作者:神的孩子都在歌唱 一. 什么是 SSL/TLS? 安全套接层&am…

Java四大常用JSON解析性能对比:Hutool、Fastjson2、Gson与Jackson测试

1. 引言 JSON 是现代软件开发中常用的数据交换格式,尤其在微服务和前后端分离的架构中更是必不可少。 本文将对 Java 中四大主流 JSON 解析库——Hutool、Fastjson2、Gson 和 Jackson 进行性能测试和对比分析,通过实测 20 万条数据解析,揭示…

【整理集合大全】MySQL(4) 数据库增删改查SQL语句

查看数据库 show databases; 使用数据库 use 数据库名;创建数据库 CREATE DATABASE 数据库名;删除数据库 DROP DATABASE 数据库名;创建表 create table 表名(列名1 类型(长度) [约束],列名2 类型(长度) [约束],…… );长度区别 int类型带长度:不影响存取值&…

升级 Spring Boot 3 配置讲解 —— Spring Boot 3 核心源码专讲

学会这款 🔥全新设计的 Java 脚手架 ,从此面试不再怕! Spring Boot 3 是 Spring 生态中的重要里程碑,它不仅全面支持 Java 17,还引入了许多新特性,如对 GraalVM 原生镜像的支持、改进的性能优化以及更灵活的…

vue3中el-table实现多表头并表格合并行或列

1、el-table中添加事件 :span-method"genderSpanCity" <el-table :span-method"genderSpanCity":data"data.tableData":fit"true" table-layout"fixed" header-align"center" stripestyle"width:100%;he…

OpenGL —— 流媒体播放器 - ffmpeg解码rtsp流,opengl渲染yuv视频(附源码,glfw+glad)

效果 说明 FFMpeg和OpenGL作为两大技术巨头,分别在视频解码和图形渲染领域发挥着举足轻重的作用。本文将综合两者实战视频播放器,大概技术流程为:ffmpeg拉取rtsp协议视频流,并经过解码、尺寸格式转换为yuv420p后,使用opengl逐帧循环渲染该yuv实时视频。 核心源码 vertexSh…

Web安全扫盲

1、建立网络思维模型的必要 1 . 我们只有知道了通信原理&#xff0c; 才能够清楚的知道数据的交换过程。 2 . 我们只有知道了网络架构&#xff0c; 才能够清楚的、准确的寻找漏洞。 2、局域网的简单通信 局域网的简单通信&#xff08;数据链路层&#xff09; 一般局域网都通…

HTML 显示器纯色亮点检测工具

HTML 显示器纯色亮点检测工具 相关资源文件已经打包成html等文件&#xff0c;可双击直接运行程序&#xff0c;且文章末尾已附上相关源码&#xff0c;以供大家学习交流&#xff0c;博主主页还有更多Html相关程序案例&#xff0c;秉着开源精神的想法&#xff0c;望大家喜欢&#…

ARM发布Armv9.5架构:迈向更强性能与灵活性的新时代

2024年11月30日&#xff0c;ARM正式发布了其最新的Armv9.5架构&#xff0c;这是Arm技术发展的又一重要里程碑。从表中信息来看&#xff0c;Armv9.5架构的发布标志着该公司的架构系列在性能、灵活性和可扩展性方面取得了进一步突破。本次发布不仅是技术上的提升&#xff0c;更是…