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

系列文章目录

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

K8s集群平滑升级(Smooth Upgrade of K8S Cluster)

简介: Kubernetes ‌ (简称K8s)是一个开源的容器编排和管理平台,由Google开发并维护。它最初是为了解决谷歌内部大规模容器管理的问题而设计的,后来在2014年开源,成为云原生技术的核心组成部分。‌‌1 K8…

党员学习交流平台

本文结尾处获取源码。 本文结尾处获取源码。 本文结尾处获取源码。 一、相关技术 后端:Java、JavaWeb / Springboot。前端:Vue、HTML / CSS / Javascript 等。数据库:MySQL 二、相关软件(列出的软件其一均可运行) I…

uniapp--HBuilder开发

提示:本文为学习内容,若有错误,请联系作者,谦虚受教。 文章目录 前言一、下载HBuilder二、添加modbus相关库1.下载nodejs2.下载modbus库3.项目添加modbus库 三、HBuilder相关功能语句1.文件夹说明2.消息信息框3.开关按钮4.选中按钮…

GraphRAG实践:neo4j试用

文章目录 前言欢迎界面示例数据库使用大模型生成查询语句总结 前言 上回说道,我们使用docker部署了一个neo4j。 我们现在对它进行一些试用。 欢迎界面 在浏览器中输入http://localhost:7474/ 输入对应的东西,点击connect 现在咱的数据库里什么都没有…

两种分类代码:独热编码与标签编码

目录 一、说明 二、理解分类数据 2.1 分类数据的类型:名义数据与序数数据 2.2 为什么需要编码 三、什么是独热编码? 3.1 工作原理:独热编码背后的机制 3.2 应用:独热编码的优势 四、什么是标签编码? 4.1 工作原理&…

【AWS SDK PHP】This operation requests `sigv4a` auth schemes 问题处理

使用AWS SDK碰到的错误,其实很简单,要装个扩展库 保持如下 Fatal error: Uncaught Aws\Auth\Exception\UnresolvedAuthSchemeException: This operation requests sigv4a auth schemes, but the client currently supports sigv4, none, bearer, sigv4-…

限时特惠,香港服务器,低至53元/年

家人们谁懂啊!香港服务器这价格简直逆天了,居然比内地的还便宜!就拿阿里云来说,人家最低配置的服务器,价格都很难做到这么亲民。 最低配的就不说了,2 核 4G 的配置,应对日常业务稳稳当当&#x…

USB子系统学习(一)USB电气信号

文章目录 1、声明2、USB协议概述3、USB电气信号3.1、USB基础概念3.1.1、低速/全速信号电平3.1.2、高速信号电平 3.2、学习目标3.3、设备断开与连接3.3.1、连接3.3.2、断开 3.4、复位3.5、设备速率识别3.5.1、低速/全速3.5.2、高速 3.6、数据信号3.6.1、低速/全速的SOP和EOP3.6.…

【机器学习篇】从新手探寻到算法初窥:数据智慧的开启之门

文章目录 【机器学习篇】从新手探寻到算法初窥:数据智慧的开启之门前言一、什么是机器学习?二、机器学习的基本类型1. 监督学习(Supervised Learning)2. 无监督学习(Unsupervised Learning)3. 半监督学习&a…

SQL-Server链接服务器访问Oracle数据

SQL Server 链接服务器访问 Oracle 离线安装 .NET Framework 3.5 方法一:使用 NetFx3.cab 文件 下载 NetFx3.cab 文件,并将其放置在 Windows 10 系统盘的 C:Windows 文件夹中。 以管理员身份运行命令提示符,输入以下命令并回车: …

【C++】矩阵转置问题详解与优化

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 💯前言💯题目解析💯第一种实现方式:我的初始做法实现思路优缺点分析 💯第二种实现方式:我的优化做法实现思路优缺点分析 &#x1f4a…

比QT更高效的一款开源嵌入式图形工具EGT-Ensemble Graphics Toolkit

文章目录 EGT-Ensemble Graphics Toolkit介绍EGT具备非常高的图形渲染效率EGT采用了非常优秀的开源2D图形处理引擎-Cairo开源2D图形处理引擎Cairo的优势Cairo 2D图像引擎的性能Cairo 2D图像引擎的实际应用案例彩蛋 - 开源EDA软件KiCAD也在使用Cairo EGT高效的秘诀还有哪些Cairo…

信息系统管理工程师教程第2版(2024年最新版)

信息系统管理工程师教程第2版 目录 第 1 章 信息化发展 第 2 章 信息技术发展 第 3 章 信息系统架构 第 4 章 信息系统治理 第 5 章 信息技术服务管理 第 6 章 软件开发过程管理 第 7 章 系统集成实施管理 第 8 章 信息系统运维管理 第 9 章 云服务及其运营…

Science Robotics让软机器人“活”得更久的3D打印!

软机器人硬件在医疗、探索无结构环境等领域有广泛应用,但其生命周期有限,导致资源浪费和可持续性差。软机器人结合软硬组件,复杂组装和拆卸流程使其难以维修和升级。因此,如何延长软机器人的生命周期并提高其可持续性成为亟待解决…

通过Dockerfile来实现项目可以指定读取不同环境的yml包

通过Dockerfile来实现项目可以指定读取不同环境的yml包 1. 挂载目录2. DockerFile3. 运行脚本deploy.sh4. 运行查看日志进入容器 5. 接口测试修改application-dev.yml 6. 优化Dockerfile7. 部分参数解释8. 优化不同环境下的日志也不同调整 Dockerfile修改部署脚本 deploy.sh重新…

AutoSar架构学习笔记

1.AUTOSAR(Automotive Open System Architecture,汽车开放系统架构)是一个针对汽车行业的软件架构标准,旨在提升汽车电子系统的模块化、可扩展性、可重用性和互操作性。AUTOSAR的目标是为汽车电子控制单元(ECU&#xf…

超越YOLO11!DEIM:先进的实时DETR目标检测

DEIM: DETR with Improved Matching for Fast Convergence arXiv: https://arxiv.org/abs/2412.04234 Project webpage:https://www.shihuahuang.cn/DEIM/ GitHub:https://github.com/ShihuaHuang95/DEIM 1 背景:DETR目标检测框架 目标检…

深入理解 Java 接口的回调机制

前言 回调是一种非常重要的编程技术,它广泛应用于事件驱动的编程、异步任务和框架设计中。在 Java 中,回调机制通常通过 接口 来实现。本篇博客将详细解析 Java 接口的回调原理、实现方式,以及实际开发中的应用场景。 泪崩了,期末…

二、用例图

二、用例图 (一)、用例图的基本概念 1、用例图的定义: 用例图是表示一个系统中用例与参与者关系之间的图。它描述了系统中相关的用户和系统对不同用户提供的功能和服务。 用例图相当于从用户的视角来描述和建模整个系统,分析系统的功能与…

【软考网工笔记】计算机基础理论与安全——网络安全

病毒 Melissa 宏病毒 1. 是一种快速传播的能够感染那些使用MS Word 97 和MS Office 2000 的计算机宏病毒。 2. 前面有**Macro** 表示这是宏病毒; 3. 宏病毒可以感染后缀为.xls的文件;Worm 蠕虫病毒 1. 通常是通过网络或者系统漏洞进行传播。 2. 利用信…