千家信息网

systemctl的配置和使用

发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,这篇文章为大家分享systemctl的配置和使用。文章涵盖systemctl的配置和使用方法,希望大家通过这篇文章能有所收获。##简介systemd是靠管理unit的方式来控制开机服务,开机级别等功能
千家信息网最后更新 2025年01月23日systemctl的配置和使用

这篇文章为大家分享systemctl的配置和使用。文章涵盖systemctl的配置和使用方法,希望大家通过这篇文章能有所收获。

##简介
systemd是靠管理unit的方式来控制开机服务,开机级别等功能。
在/usr/lib/systemd/system目录下包含了各种unit文件,有service后缀的服务unit,有target后缀的开机级别unit等,这里介绍关于service后缀的文件。因为systemd在开机要想执行自启动,都是通过这些*.service 的unit控制的,服务又分为系统服务(system)和用户服务(user)。

配置文件说明:

所有的*.service 文件都存放在/lib/systemd/system目录下面,
我们可以查看 crontab.service 文件看看里面 写的都是什么

[root@zhangsf system]# cd ~[root@zhangsf ~]# cat /usr/lib/systemd/system/crond.service[Unit]Description=Command SchedulerAfter=auditd.service systemd-user-sessions.service time-sync.target[Service]EnvironmentFile=/etc/sysconfig/crondExecStart=/usr/sbin/crond -n $CRONDARGSExecReload=/bin/kill -HUP $MAINPIDKillMode=process[Install]WantedBy=multi-user.target

可以看出大概分为如下几个部分
*[Unit]块: 启动顺序和依赖关系

Description: 当前服务的简单介绍Documentation: 使用文档的位置 After: 如果auditd.service或者systemd-user-sessions.service服务需要启动,应该在这个服务之前启动Before: crontd 服务应该在那些服务之前启动

注意: After 和 Before 只涉及启动顺序,不涉及依赖关系.

[Service]启动行为

启动命令> ExecStart字段:定义启动进程时执行的命令> ExecReload字段:重启服务时执行的命令> ExecStop字段:停止服务时执行的命令> ExecStartPre字段:启动服务之前执行的命令> ExecStartPost字段:启动服务之后执行的命令> ExecStopPost字段:停止服务之后执行的命令注:所有的启动设置之前,都可以加上一个连词号(-),表示"抑制错误",即发生错误的时候,不影响其他命令的执行。比如EnvironmentFile=-/etc/sysconfig/sshd(注意等号后面的那个连词号),就表示即使/etc/sysconfig/sshd文件不存在,也不会抛出错误。注意:[Service]中的启动、重启、停止命令全部要求使用绝对路径!启动类型Type字段定义启动类型。它可以设置的值如下:> simple(默认值):ExecStart字段启动的进程为主进程> forking:ExecStart字段将以fork()方式启动,此时父进程将会退出,子进程将成为主进程(后台运行)> oneshot:类似于simple,但只执行一次,Systemd 会等它执行完,才启动其他服务> dbus:类似于simple,但会等待 D-Bus 信号后启动> notify:类似于simple,启动结束后会发出通知信号,然后 Systemd 再启动其他服务> idle:类似于simple,但是要等到其他任务都执行完,才会启动该服务。一种使用场合是为让该服务的输出,不与其他服务的输出相混合重启行为Service区块有一些字段,定义了重启行为:> KillMode字段:定义 Systemd 如何停止 sshd 服务:> control-group(默认值):当前控制组里面的所有子进程,都会被杀掉> process:只杀主进程> mixed:主进程将收到 SIGTERM 信号,子进程收到 SIGKILL 信号> none:没有进程会被杀掉,只是执行服务的 stop 命令。> Restart字段:定义了 sshd 退出后,Systemd 的重启方式上面的例子中,Restart设为on-failure,表示任何意外的失败,就将重启sshd。如果 sshd 正常停止(比如执行systemctl stop命令),它就不会重启。>> Restart字段可以设置的值如下。>> no(默认值):退出后不会重启>> on-success:只有正常退出时(退出状态码为0),才会重启>> on-failure:非正常退出时(退出状态码非0),包括被信号终止和超时,才会重启>> on-abnormal:只有被信号终止和超时,才会重启>> on-abort:只有在收到没有捕捉到的信号终止时,才会重启>> on-watchdog:超时退出,才会重启>> always:不管是什么退出原因,总是重启注:对于守护进程,推荐设为on-failure。对于那些允许发生错误退出的服务,可以设为on-abnormal。RestartSec字段:表示 Systemd 重启服务之前,需要等待的秒数。上面的例子设为等待42秒。

[install]如何安装这个配置文件
WantedBy字段:表示该服务所在的 Target。
Target的含义是服务组,表示一组服务。
WantedBy=multi-user.target指的是:sshd 所在的 Target 是multi-user.target。
这个设置非常重要,因为执行systemctl enable sshd.service命令时,sshd.service的一个符号链接,就会放在/etc/systemd/system目录下面的multi-user.target.wants子目录之中。
Systemd 有默认的启动 Target。

systemctl get-default#输出multi-user.target

上面的结果表示,默认的启动 Target 是multi-user.target。在这个组里的所有服务,都将开机启动。这就是为什么systemctl enable命令能设置开机启动的原因。
使用 Target 的时候,systemctl list-dependencies命令和systemctl isolate命令也很有用。

#查看 multi-user.target 包含的所有服务systemctl list-dependencies multi-user.target#切换到另一个 target#shutdown.target 就是关机状态systemctl isolate shutdown.target

一般来说,常用的 Target 有两个:
multi-user.target:表示多用户命令行状态;
graphical.target:表示图形用户状态,它依赖于multi-user.target。

##举例

[root@zhangsf system]# cat /usr/lib/systemd/system/node-exporter.service[Unit]Description=This is prometheus node exporterAfter=docker.service[Service]Type=simpleExecStart=/usr/local/bin/node_exporterExecReload=/bin/kill -HUP $MAINPIDKillMode=processRestart=on-failure[Install]WantedBy=multi-user.target

执行命令

systemctl daemon-reloadsystemctl enable node-exporter.servicesystemctl start node-exporter.service

查看日志

[root@zhangsf system]# tail -f /var/log/messagesFeb  6 11:53:40 zhangsf node_exporter: time="2020-02-06T11:53:40+08:00" level=info msg=" - sockstat" source="node_exporter.go:104"Feb  6 11:53:40 zhangsf node_exporter: time="2020-02-06T11:53:40+08:00" level=info msg=" - stat" source="node_exporter.go:104"Feb  6 11:53:40 zhangsf node_exporter: time="2020-02-06T11:53:40+08:00" level=info msg=" - textfile" source="node_exporter.go:104"Feb  6 11:53:40 zhangsf node_exporter: time="2020-02-06T11:53:40+08:00" level=info msg=" - time" source="node_exporter.go:104"Feb  6 11:53:40 zhangsf node_exporter: time="2020-02-06T11:53:40+08:00" level=info msg=" - timex" source="node_exporter.go:104"Feb  6 11:53:40 zhangsf node_exporter: time="2020-02-06T11:53:40+08:00" level=info msg=" - uname" source="node_exporter.go:104"Feb  6 11:53:40 zhangsf node_exporter: time="2020-02-06T11:53:40+08:00" level=info msg=" - vmstat" source="node_exporter.go:104"Feb  6 11:53:40 zhangsf node_exporter: time="2020-02-06T11:53:40+08:00" level=info msg=" - xfs" source="node_exporter.go:104"Feb  6 11:53:40 zhangsf node_exporter: time="2020-02-06T11:53:40+08:00" level=info msg=" - zfs" source="node_exporter.go:104"Feb  6 11:53:40 zhangsf node_exporter: time="2020-02-06T11:53:40+08:00" level=info msg="Listening on :9100" source="node_exporter.go:170"

看完这篇文章,你们学会配置和使用systemctl了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

服务 命令 字段 进程 信号 文件 配置 状态 错误 面的 只有 后缀 方式 用户 目录 篇文章 行为 控制 输出 例子 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 电脑软件开发哪个语言 深圳双喜互联网络科技有限公司 网络安全审计哪个好一些 串口服务器外壳定制 有的网络无法访问阿里云服务器 高清erp软件开发定制 无线网卡网络安全密钥在哪看 长沙知名软件开发公司 如果网络连不到服务器怎么办 奉化区高科技刀片服务器售后服务 广州智慧门禁软件开发价位 郑州linux软件开发 电子支付网络安全论文 盐城软件开发价格大全 老是跳出来服务器设置提醒 企业网络安全海报手绘 访问内网的服务器不走路由器 东为网络技术公司 进吃鸡为什么会服务器繁忙 忍者必须死3哪个服务器福利最多 如何使用命令行进入达梦数据库 软件开发就是将近态转为动态 sqlcmd 导入数据库 江汉软件开发多少钱 淄博浩众互联网科技 湖南线上医疗系统软件开发 日本vps服务器 软件开发流程动画 网络安全管理实施细则 mysql数据库单表性能
0