编写systemctl自启动服务
摘要
每一个 Unit 都有一个配置文件,告诉 Systemd 怎么启动这个 Unit 。
Systemd 默认从目录/etc/systemd/system/
读取配置文件。但是,里面存放的大部分文件都是符号链接,指向目录/usr/lib/systemd/system/
,真正的配置文件存放在那个目录。
systemctl enable
命令用于在上面两个目录之间,建立符号链接关系。
1 | systemctl enable clamd@scan.service |
如果配置文件里面设置了开机启动,systemctl enable
命令相当于激活开机启动。
与之对应的,systemctl disable
命令用于在两个目录之间,撤销符号链接关系,相当于撤销开机启动。
1 | systemctl disable clamd@scan.service |
配置文件的后缀名,就是该 Unit 的种类,比如sshd.socket
。如果省略,Systemd 默认后缀名为.service
,所以sshd
会被理解成sshd.service
。
有系统(system)和用户(user)之分,需要开机不登陆就能运行的程序,存在系统服务里,即:/usr/lib/systemd/system
目录下.
每一个服务以.service
结尾,一般会分为3部分:[Unit]
、[Service]
和[Install]
- [Unit]部分主要是对这个服务的说明,内容包括Description和After,Description 用于描述服务,After用于描述服务类别
- [Service]部分是服务的关键,是服务的一些具体运行参数的设置。
Type=forking是后台运行的形式
User=users是设置服务运行的用户
Group=users是设置服务运行的用户组
PIDFile为存放PID的文件路径
ExecStart为服务的具体运行命令
ExecReload为重启命令
ExecStop为停止命令
PrivateTmp=True表示给服务分配独立的临时空间
注意:[Service]部分的启动、重启、停止命令全部要求使用绝对路径,使用相对路径则会报错! - [Install]部分是服务安装的相关设置,可设置为多用户的
limits.conf
这里的配置,只适用于通过PAM认证登录用户的资源限制,它对systemd的service的资源限制不生效。systemd默认非root用户的最大进程数为4096。
在[Service]部分添加以下参数
1 | LimitNOFILE=100000 |
例:elastic脚本
1 | vi /usr/lib/systemd/system/elastic.service |
1 | [Unit] |
保存后执行
1 | systemctl daemon-reload |