编写systemctl自启动服务
目录
每一个 Unit 都有一个配置文件,告诉 Systemd 怎么启动这个 Unit 。
Systemd 默认从目录/etc/systemd/system/
读取配置文件。但是,里面存放的大部分文件都是符号链接,指向目录/usr/lib/systemd/system/
,真正的配置文件存放在那个目录。
systemctl enable
命令用于在上面两个目录之间,建立符号链接关系。
systemctl enable clamd@scan.service
# 等同于
ln -s '/usr/lib/systemd/system/clamd@scan.service' '/etc/systemd/system/multi-user.target.wants/clamd@scan.service'
如果配置文件里面设置了开机启动,systemctl enable
命令相当于激活开机启动。
与之对应的,systemctl disable
命令用于在两个目录之间,撤销符号链接关系,相当于撤销开机启动。
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]部分添加以下参数
LimitNOFILE=100000
LimitNPROC=100000
例:elastic脚本
vi /usr/lib/systemd/system/elastic.service
[Unit]
Description=elasticsearch server
[Service]
Type=simple
User=elastic
Group=elastic
LimitNOFILE=100000
LimitNPROC=100000
ExecStart=/usr/local/elasticsearch-6.5.3/bin/elasticsearch
[Install]
WantedBy=multi-user.target
保存后执行
systemctl daemon-reload