CentOS 7的服务systemctl脚本存放在:/usr/lib/systemd/,有系统(system)和用户(user)之分,因为我们配置的绝大多数脚本都不需要登陆系统才能运行,所以基本都是放在/usr/lib/systemd/system下。
每一个服务以.service结尾,我们打开/usr/lib/systemd/system会发现很多以.service结尾的程序文件,其实只要复制一个然后编辑,就很容易写一个服务。以现在我们经常会用来科学上网的shadowsocks来说,我们安装完 shadowsocks后,需要用
ssserver -c /etc/shadowsocks.json -d start
这样的命令来启动服务,如果需要开机启动,除了加入rc.local,我们将它转化为系统服务无疑是更方便操作。
我们新建一个shadowsocks.service然后编辑:
[Unit] Description=shadowsocks After=this is a shadowsocks service [Service] Type=forking PIDFile=/run/shadowsocks.pid ExecStart=/usr/bin/ssserver -c /etc/shadowsocks.json -d start ExecReload=/usr/bin/ssserver -c /etc/shadowsocks.json -d restart ExecStop=/usr/bin/ssserver -c /etc/shadowsocks.json -d stop PrivateTmp=true [Install] WantedBy=multi-user.target
[Unit]部分很简单,是对服务的说明,Description用于描述服务,After用于描述服务类别,这部分其实怎么写都行。
[Service]是要注意的地方,PIDFile为程序PID的路径,其实没定义的服务程序运行后会自动在/run目录生成一个同名的pid文件。ExecStart,ExecReload,ExecStop分别对应程序的启动、重启与停止,这个也很好理解,需要注意的是,此处应该写文件的绝对路径。比如本来可以直接运行
ssserver -c /etc/shadowsocks.json -d start
来启动服务,在此处要写ssserver命令的绝对路径/usr/bin/ssserver。
PrivateTmp=True表示给服务分配独立的临时空间
[Install]部分是服务安装的相关,可设置为多用户。
以754的权限保存后,即可通过
systemctl start/stop/restart/enable/disable shadowsocks
来启动或停止服务以及配置开机启动。
Proudly Powered By WordPress | IEWB.NET 2009-2024 版权所有