1. 常用命令
启动一个服务:systemctl start [service]
停止服务:systemctl stop [service]
启用服务在系统启动时自动启动:systemctl enable [service]
禁止服务在系统启动时自动启动:systemctl disable [service]
查看服务的状态:systemctl status [service]
查看服务是否自启动:systemctl is-enabled [service]
重新启动一个服务:systemctl restart [service]
重新加载服务的配置而不重新启动它:systemctl reload [service]
屏蔽服务,关闭自启动且手动也无法启动:systemctl mask [service]
去屏蔽服务:systemctl unmask [service]
更改默认系统目标(运行级别):systemctl set-default [target]
列出所有已安装的单元文件及其状态:systemctl list-unit-files
列出特定单元的依赖关系:systemctl list-dependencies [unit]
列出所有活动套接字:systemctl list-sockets
列出所有活动的 systemd 作业:systemctl list-jobs
显示所有已加载和活动的 systemd 单元的状态:systemctl list-units
查看当前所有不在活动的服务:systemctl list-units --type=service --state=inactive
systemctl list-dependencies --all sshd.service 查看sshd服务的所有依赖
systemctl poweroff 关闭系统、切断电源
systemctl halt 仅CPU停止工作
systemctl suspend 暂停系统
systemctl hibernate 系统休眠
2. 介绍
systemd架构是作为所有进程的父进程,以PID为1一直运行在Linux系统中,作为所有进程的父进程,涵盖了Linux操作系统中绝大多数操作,比如用户登陆(loginctl),设备挂载,日志采集(journalctl),网络管理(networkctl)等,以unit file为基本单位。
3. unit自启动管理
systemd服务添加到/lib/systemd/system/目录下,但初始化过程中 systemd 只执行/etc/systemd/system 目录里面的配置文件。
当执行systemctl enable rsyslog.service,设定某个服务自动启动时,会在/etc/systemd/system 目录下创建软链接文件,软链接的指向便是/lib/systemd/system/下的service,达到开机启动的目的,而当disable时,便会删除这个软链接文件,便不会再开机启动。
这里也可以通过将根文件系统镜像挂载到本地,ln -s手动创建软链接到/etc/systemd/system,实现开机自启动
4. 实战-system添加一个service
- /lib/systemd/system目录下创建drop_cache.service
[Unit]
Description=/etc/drop_cache.sh Compatibility
After=network.target
[Service]
WorkingDirectory=/etc
Type=simple
ExecStart=/etc/drop_cache.sh
Restart=always
[Install]
WantedBy=multi-user.target
- /etc 目录创建drop_cache.sh
#!/bin/bash
while true; do
sudo echo 1 > /proc/sys/vm/drop_caches
sudo echo 2 > /proc/sys/vm/drop_caches
sudo echo 3 > /proc/sys/vm/drop_caches
sleep 7200
done
- 更改权限
sudo chmod 777 /etc/drop_cache.sh
sudo chmod 777 /lib/systemd/system/drop_cache.service
- 启动服务
sudo systemctl enable drop_cache
sudo systemctl damon-reload
sudo systemctl start drop_cache
sudo systemctl status drop_cache
- 查看服务状态
需要为running
dmesg | grep drop
这个代表加入成功,正在运行