systemctl命令和配置整理

一、systemctl介绍

systemctl主要负责控制systemd系统和服务管理器。在ubuntu 、centos等一系列发行版中可用。可以方便的管理需要启动的服务等。可以实现开机自启动、出错重启和定时重启等等功能。

二、systemctl管理命令

下面有一个是错误的,正确为 systemctl daemon-reload #系统命令重新加载
在这里插入图片描述
下面是详细的

#语法
systemctl COMMAND name.service
#启动
systemctl start name.service
#停止
systemctl stop name.service
#重启
systemctl restart name.service
#查看状态
systemctl status name.service
#禁止自动和手动启动
systemctl mask name.service
#取消禁止
systemctl unmask name.service
#查看某服务当前激活与否的状态:
systemctl is-active name.service
#查看所有已经激活的服务:
systemctl list-units --type|-t service
#查看所有服务:
systemctl list-units --type service --all
#设定某服务开机自启,相当于chkconfig name on
systemctl enable name.service
#设定某服务开机禁止启动:相当于chkconfig name off
systemctl disable name.service
#查看所有服务的开机自启状态,相当于chkconfig --list
systemctl list-unit-files --type service
#用来列出该服务在哪些运行级别下启用和禁用:chkconfig –list name
ls /etc/systemd/system/*.wants/name.service
#查看服务是否开机自启:
systemctl is-enabled name.service
#列出失败的服务
systemctl --failed --type=service
#开机并立即启动或停止
systemctl enable --now postfix
systemctl disable  --now postfix
#查看服务的依赖关系:
systemctl list-dependencies name.service
#杀掉进程:
systemctl kill unitname
#重新加载配置文件
systemctl daemon-reload
#关机
systemctl halt、systemctl poweroff
#重启:
systemctl reboot
#挂起:
systemctl suspend
#休眠:
systemctl hibernate
#休眠并挂起:
systemctl hybrid-sleep

三、system unit文件格式

本文件一共有三个地方可以存放
/etc/systemd/system/
/usr/lib/systemd/system
/lib/systemd/system

1、unit 格式说明:

1、以 “#” 开头的行后面的内容会被认为是注释
2、相关布尔值,1、yes、on、true 都是开启,0、no、off、false 都是关闭
3、时间单位默认是秒,所以要用毫秒(ms)分钟(m)等须显式说明

2、service unit file文件通常由三部分组成:

1、[Unit]:定义与Unit类型无关的通用选项;用于提供unit的描述信息、unit行为及依赖关系等
2、[Service]:与特定类型相关的专用选项;此处为Service类型
3、[Install]:定义由“systemctl enable”以及"systemctl disable“命令在实现服务启用或禁用时用到的一些选项

1)Unit段的常用选项:
可选项描述
Description对当前服务的简单描述
After可以指定在哪些服务之后进行启动
Before可以指定在哪些服务之前进行启动
Requires可以指定服务依赖于哪些服务(这种依赖是"强依赖",一旦所依赖的服务异常,当前的服务也随之停止)
Wants可以指定服务依赖于哪些服务(这种依赖是"弱依赖",即使所依赖的服务的启动情况不影响当前的服务是否启动)
Conflicts定义units间的冲突关系
2)Service段的常用选项:
可选项描述
EnvironmentFile环境配置文件,用来指定当前服务启动的环境变量
ExecStart指定服务启动时执行的命令或脚本
ExecStartPre指定服务启动前执行的命令或脚本
ExecStartPost指定服务启动后执行的命令或脚本
ExecStop指明停止服务要运行的命令或脚本
ExecStopPost指定服务停止之后执行的命令或脚本
RestartSec指定服务在重启时等待的时间,单位为秒
ExecReload指明重启服务要运行的命令或脚本
Restart当设定Restart=1 时,则当次daemon服务意外终止后,会再次自动启动此服务,具体看下列类型
PrivateTmp设定为yes时,会在生成/tmp/systemd-private-UUID-NAME.service-XXXXX/tmp/目录
KillMode指定停止的方式,具体见下面
Restart指定重启时的类型,具体见下面
Type指定启动类型,具体见下面

Type的可选值

Type可选项描述
simple指定ExecStart字段的进程为主进程
forking指定以fork() 子进程执行ExecStart字段的进程
oneshot执行一次
notify启动后发送会发送通知信号通知systemd
idle等其他任务结束后才运行

Restart的可选值

Restart可选项描述
no退出后不会重启
on-success当进程正常退出时(退出码为0) 执行重启
on-failure当进程不正常退出时(退出码不为0) 执行重启
on-abnormal当被信号终止和超时执行重启
on-abort当收到没有捕捉到的信号终止时执行重启
on-watchdog当看门狗超时时执行重启
always一直重启

KillMode可选值

KillMode可选项描述
control-group杀掉当前进程中所有的进程
process杀掉当前进程的主进程
mixed主进程将收到 SIGTERM 信号,子进程收到 SIGKILL 信号
none不杀掉任何进程
3)Install段的常用选项:
Install可选项描述
Alias别名,可使用systemctl command Alias.service
RequiredBy被哪些units所依赖,强依赖
WantedBy被哪些units所依赖,弱依赖
Also安装本服务的时候还要安装别的相关服务

Install一般填为WantedBy=multi-user.target

注意:对于新创建的unit文件,或者修改了的unit文件,要通知systemd重载此配置文件,而后可以选择重启,使用命令 systemctl daemon-reload

四、一个例子设置frpc开机自启动或异常重启动

[Unit]
Description=Frp Client Service
After=network.target

[Service]
Type=simple
User=nobody
Restart=always
RestartSec=5s
ExecStart=/frp_0.41.0_linux_amd64/frpc -c /frp_0.41.0_linux_amd64/frpc.ini
ExecReload=/frp_0.41.0_linux_amd64/frpc reload -c /frp_0.41.0_linux_amd64/frpc.ini
LimitNOFILE=1048576

[Install]
WantedBy=multi-user.target


将此文件命名为frps.service复制到/lib/systemd/system里面,然后重新加载systemctl配置文件

cp ./frpc.service /lib/systemd/system
systemctl enable frpc  
systemctl daemon-reload

查看状态,已经正常运行,当用kill -9强制杀死时5s后将会自动重启。
在这里插入图片描述
出现下表情况是说明有一个正在运行,可以杀死后5s后查看结果
在这里插入图片描述

参考
参考链接1
参考链接2

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贪睡的蜗牛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值