systemctl的使用及centos开机自启的几种方式
linux系统服务(systemctl)的使用
Cloud研习社
为Linux云计算零基础同学服务,致力于打造一套完整的linux云计算教程。包括新手学习路线、linux、存储、集群架构以及Docker,K8S,DevOps等
公众号
systemctl 启动级别对应
systemctl 命令使用方法
基础使用
restart:重启服务,可启动服务
reload:服务重新加载配置文件
status:查看服务状态
start:启动服务
stop:停止服务
enable:开启自启
disable:关闭自启
进阶使用
systemctl命令专门用来管理服务(守护进程)
systemctl [list-units] #列出所有服务的运行状态
systemctl list-unit-files #列出所有服务的开机自启状态
systemctl daemon-reload #重新加载systemd服务
systemctl list-dependencies #查看服务的依赖关系
systemctl --failed #查看启动失败的服务
systemctl --type=service #查看常用服务的运行状态(不包含系统服务)
systemctl get-default #查看默认启动模式[target]
systemctl set-default graphical.target #开机默认启动图形界面
systemctl set-default multi-user.target #开机默认启动文本界面(控制台)
systemctl list-dependencies multi-user.target #查看指定target包含的所有服务(unit)
服务状态说明:
loaded #服务初始化完成,已正常加载配置文件
not-found #服务配置文件没有找到
falied #服务启动失败,配置文件错误
actvie(running) #服务正在运行一个或多个进程
actvie(exited) #仅执行一次就正常结束的服务,目前并没有任何进程在系统中执行
active(waitting) #正在执行当中,不过还需要等待其他的事件才能继续处理
inactive #服务关闭
enabled #服务启用自启
disabled #服务禁用自启
static #服务开机启动项不可被管理
masked #服务禁止建立启动链接
注:static指服务对应的service文件中没有定义[Install]区域,因此无法配置为开机启动服务,只能作为其他配置文件的依赖。
常用参数(参数后面接上服务名,服务名的.service后缀可省略):
mask:冻结(禁用)服务启动脚本
unmask:启用服务启动脚本
启动脚本解释
开机自启就是在/etc/systemd/system/multi-user.target.wants/目录里建立对应服务的启动脚本的软链接。
自启就是删除/etc/systemd/system/multi-user.target.wants/目录中对应服务的软链接。
启动脚本保存在/usr/lib/systemd/system/目录下
启动脚本保存在/etc/systemd/system/目录下
添加自定义service启动脚本(作为服务、守护进程、Unit文件):
vim /etc/systemd/system/服务名.service
[Unit]
Description=服务描述
Documentation=文档地址
Wants=其他服务#network.target
After=其他服务#syslog.target network.target
[Service]
Type=simple #服务类型
User=用户名 #服务执行的用户,默认为root,其他用户管理systemd需经过root同意
Environment=环境变量 #定义环境变量
ExecStartPre=启动服务之前执行的命令
ExecStopPost=停止服务之后执行的命令
ExecStart=启动服务执行的命令
ExecReload=重启服务执行的命令
ExecStop=停止服务执行的命令
#执行的命令必须是绝对路径(脚本或进程),不能执行shell的内部命令
[Install]
WantedBy=multi-user.target #定义为开机启动项
最后还需要用户手动让systemd进程重新读取service启动脚本:
systemctl daemon-reload
服务类型说明(Type):
simple:默认值,执行ExecStart指定的命令,启动主进程
forking:以 fork 方式从父进程创建子进程,创建后父进程会立即退出
oneshot:一次性进程,Systemd 会等当前服务退出,再继续往下执行
dbus:当前服务通过D-Bus启动
notify:当前服务启动完毕,会通知Systemd进程,然后再继续往下执行
idle:若有其他任务执行完毕,当前服务才会运行
systemd-analyze命令用于查看服务启动过程和耗时:
systemd-analyze #查看系统开机时间
systemd-analyze blame #查看每个服务的启动耗时
systemd-analyze critical-chain #显示瀑布状的启动过程流,逆序
systemd-cgls #以树形结构列出正在运行的进程
服务的启动日志默认保存在/var/log/message文件
journalctl命令可以更加方便地查看和管理服务启动日志,配置文件为/etc/systemd/journald.conf
journalctl #查看所有服务启动日志
选项:
-n 行数 #查看日志末尾的指定行数,默认为10行
-u 服务名 #查看指定服务的日志
-f #实时刷新最新日志
-k #查看内核启动日志
–disk-usage #查看日志已占用的空间
–vacuum-size=1G #设置日志最大占用空间
–vacuum-time=1years #设置日志最大保存时间