init进程
init进程是Linux系统(“/sbin/init”)中的第一个进程,它是所有其他进程的祖先进程。init进程的进程号(PID)始终为1。它负责启动和停止系统中的所有其他进程,以及处理系统的各种系统级任务。
init进程的主要功能包括:
- 运行级别管理:init进程负责根据系统的运行级别启动相应的服务和进程。运行级别是Linux系统中的一种工作状态,包括单用户模式、多用户模式和关机模式等。
- 进程管理:init进程负责启动和停止系统中的其他进程,包括系统服务和用户进程。它根据系统配置文件(如/etc/inittab或/etc/init.d)来启动特定的进程。
- 系统初始化:当系统启动时,init进程负责执行系统初始化任务,例如加载驱动程序、设置系统参数、挂载文件系统等。
- 孤儿进程管理:当一个父进程退出时,init进程会接管它的子进程,并将它们的父进程设置为init进程。这样可以确保没有进程成为孤儿进程,防止资源泄露。
- 信号处理:init进程会接收和处理一些系统级别的信号,例如关机信号、重启信号等。
systemd概述
systemd 是一个系统和服务管理器,是 Linux 系统中的一个重要组件。它被设计为替代传统的 init 系统(如 SysV init)。systemd 提供了更快、更可靠的系统启动,并以并行的方式启动服务。以下是 systemd 的一些关键特点和功能:
-
并行启动:systemd 支持并行启动系统服务,可以显著缩短系统的启动时间。它会分析服务之间的依赖关系,并根据这些关系决定启动顺序。
-
单位文件:systemd 使用单位文件(unit files)来描述和配置系统服务。每个服务都有一个对应的单位文件,其中包括服务的启动命令、依赖关系、环境变量等信息。
-
服务管理:systemd 提供了各种命令和工具来管理系统服务。可以使用 systemctl 命令来启动、停止、重启、查询服务状态等。
-
日志管理:systemd 使用 journald 来管理系统日志。它采用二进制格式记录日志,提供了更高效的日志存储和查询机制,并支持日志的自动旋转和压缩。
-
事件和监控:systemd 支持基于事件和规则的服务管理,可以根据系统状态的变化来触发相应的操作。它还可以对服务进行监控,并在服务出现问题时进行自动恢复。
-
用户会话管理:systemd 可以管理用户会话,并提供一些功能如用户登录和注销的追踪,以及对用户会话的资源限制和管理。
systemd单元类型
单元类型 | 扩展名 | 说明 |
Service | .service | 描述一个系统服务。 |
Socket | .socket | 描述一个进程间通信的套接字。 |
Device | .device | 描述一个内核识别的设备文件。 |
Mount | .mount | 描述一个文件系统的挂载点。 |
Automount | .automount | 描述一个文件系统的自动挂载点。 |
Swap | .swap | 描述一个内存交换设备或交换文件。 |
Path | .path | 描述一个文件系统中文件或目录。 |
Timer | .timer | 描述一个定时器(用于实现类似cron的调度任务)。 |
Snapshot | .snapshot | 用于保存一个systemd的状态。 |
Scope | .scope | 使用systemd的总线接口以编程的方式创建外部进程。 |
Slice | .slice | 描述居于Cgroup的一组通过层次组织的管理系统进程。 |
Target | .target | 描述一组systemd的单元。 |
SysVinit概述
sysvinit是一个用于启动和管理Linux操作系统中初始化进程的工具。它是System V风格的init系统,是早期Linux发行版中使用的默认init系统。
sysvinit的工作原理是通过读取并解析/etc/inittab文件,确定要启动的进程和运行级别。运行级别定义了系统启动时要运行的特定进程集合。通过选择不同的运行级别,可以控制系统启动时要运行的进程。
sysvinit还提供了一些管理系统服务的工具,包括init、halt、reboot、shutdown等命令。通过这些命令,用户可以启动、停止、重启系统和服务。
然而,尽管sysvinit在早期很受欢迎并被广泛使用,但它存在一些缺点。它的进程管理方式较为简单,无法很好地管理并行启动和停止进程。此外,sysvinit的启动过程较为耗时,因为它是一个顺序启动的过程,需要逐个启动每个进程。
因此,随着时间的推移,其他更先进的init系统如systemd等逐渐取代了sysvinit,在现代Linux发行版中成为了默认的init系统。
SysVinit运行级别
运行级别 | Systemd的target | 说明 |
0 | target | 关机状态,使用该级别时将会关闭主机. |
1 | rescue.target | 单用户模式,不需要密码验证即可登录系统,多用于系统维护。 |
2 | multi-user.target | 用户定义/域特定运行级别。默认等同于3。 |
3 | multi-user.target | 字符界面的完整多用户模式,大多数服务器主机运行在此级别。 |
4 | multi-user.target | 用户定义/域特定运行级别。默认等同于3。 |
5 | graphical.target | 图形界面的多用户模式,提供了图形桌面操作环境。 |
6 | reboot.target | 重新启动,使用该级别时将会重启主机。 |
切换运行级别
1、查看系统的target
runlevel
显示结果中的两个字符分别表示切换前的目标、当前的目 标。若之前尚未切换过运行级别,则第1列将显示“N”。
2、查看系统启动默认的target
systemctl get-default
字符界面
3、init切换系统target
使用传统的init程序进行,使用与运行级别相对于的数字(0~6)作为命令参数。图形界面(5),字符模式(3)
init 5
4、systemctl切换系统target
systemctl isolate multi-user.target
init 0,init 6分别对应关机,与重启。
init 0
init 6
0对应= systemd的 "poweroff.target" 6对应 = systemd的 "reboot.target"目标
systemd关机
systemctl poweroff
systemd重启
systemctl reboot
永久切换
以上切换均为临时切换,若有永久切换运行级别可通过ln(链接)命令指定当前系统的默认运行级别。
ln -sf /lib/systemd/system/multi-user.target /etc/systemd/ system/default.target
-s 选项表示创建软链接; -f 表示强行删除任何已存 在的目标文件。
常见的系统服务(centos系统)
服务名称 | 用途简介 | 备注 |
atd | 延期、定时执行任务 | 建议关闭 |
bluetooth | 发现、认证蓝牙相关设备 | 建议关闭 |
crond | 按预定周期执行计划任务 | 建议开启 |
irqbalance | 多核心CPU处理器的调度支持 | 建议开启 |
kdump | 记录内核崩溃时的内存信息 | 建议关闭 |
lym2-monitor | LVM管理及监控 | 建议开启 |
netfs | 访问共享文件夹等网络文件系统 | 建议开启 |
network | 配置及使用网卡、网络地址 | 建议开启 |
restorecond | SELinux安全机制的文件监控和恢复功能 | 建议关闭 |
rhnsd | 访问Red Hat Network,获取通知、提交订阅等 | 建议关闭 |
rpcgssd | 管理NFS(Network File System,网络文件系统)访问中的客户程序语境 | 建议关闭 |
saslauthd | 基于文本的身份认证 | 建议关闭 |
smartd | 监控本地硬盘的状态并发送故障报告 | 建议开启 |
smb | 文件共享服务 | 建议关闭 |
sshd | 提供远程登录和管理Linux主机的功能 | 建议开启 |
rsyslog | 记录内核、系统的日志消息 | 建议开启 |
vsftpd | 通过FTP(File Transfer Protocol,文件传输协议)提供文件上传、下载功能 | 建议关闭 |