systemd及其服务和配置文件介绍

简单介绍一下如何配置systemd服务控制应用和一些脚本的执行

关于systemd


用过Linux的一般都会比较熟悉systemd,这里就简单介绍一下

systemd是一种系统和服务管理器,systemd是Linux系统中PID1的进程,负责启动所有其他进程和服务。它在内核加载后接管系统,负责初始化用户空间、管理系统的服务、依赖、资源和日志等

目前几乎所有Linux发行版中都会使用systemd作为初始化系统和管理服务的组件

常用命令


systemd提供了一个强大的工具systemctl来管理服务和系统状态,下面介绍一些常用命令

systemctl start <service_name>  # 启动服务

systemctl stop <service_name>  # 停止服务

systemctl restart <service_name>  # 重启服务

systemctl status <service_name>  # 查看服务状态

systemctl daemon-reload  # 重新加载systemd的配置文件

systemctl enable <service_name>  # 设置服务开机自启

systemctl disable <service_name>  # 取消服务开机自启

journalctl -u <service_name>  # 查看服务日志

systemd-analyze blame  # 显示每个服务的启动耗时

配置systemd服务


有时候我们某个程序或脚本希望使用systemd管理,那么需要编写一个配置文件将其加入systemd管理

首先需要创建一个systemd服务文件,例如xxx.service

nano /etc/systemd/system/xxx.service

然后写入以下内容(适用于大多数情况)

[Unit]
Description = This is xxx service
After = network.target
Wants = network.target

[Service]
Type = simple
ExecStart = /usr/bin/mycommand --option
Restart = always

[Install]
WantedBy = multi-user.target

参数解释:

  • Description:自定义服务的描述信息,说明作用

  • After:network.target表示网络服务可用后才能启动

  • Wants:network.target表示服务"希望"依赖network.target,但不是强依赖,如果network.target不可用,服务仍然会尝试启动

  • Type:simple是默认服务类型,表示ExecStart定义的进程是主进程,且启动后会持续运行

  • ExecStart:启动服务时执行的具体命令

  • Restart:always表示如果命令意外退出会自动重启

  • WantedBy:multi-user.target表示支持多用户模式

上述内容一般需要修改DescriptionExecStart部分

如果配置没问题的话,执行systemctl start xxx就可以启动服务了,或者执行systemctl enable xxx可以配置服务开机自启

写在最后


因为有时候有些应用程序或脚本需要通过命令行启动并在后台长期运行,这样每次开机都要重新手动执行,需要停止的时候还得从把它进程中杀掉,而通过systemd服务就可以更方便地控制这些常用应用或脚本的执行

转载请注明出处喔!( •̀ ω •́ )✧
发表了46篇文章 · 总计88.65k字
·
Built with Hugo
主题 StackJimmy 设计