Brief guidance to linux systemd configuration

Brief guidance to linux systemd configuration

习惯了诸如 " systemctl {start|status|stop|enable|disable} httpd " 等类似的命令?在Linux中如何将普通的应用程序设置成服务?
这里以 frp client 为例,实现在 Ubuntu 18.04 上的普通的应用程序添加进守护进程以方便配置自启动。

配置service文件

在应用程序的安装或配置位置,新建一个 frpc.service ,然后再来按照区块编辑这个文件:

Unit

负责服务的描述,启动顺序和依赖关系。
Before|After定义服务的启动顺序(在某个程序之前|之后);Require要求某个服务启动成功,否则不会启动该自定义服务,而Wants则不会终止该自定义服务的启动。

[Unit]
Description=Frp client daemon
After=network.target network-online.target syslog.target
Wants=network.target network-online.target
Service
[Service]
Type=simple
ExecStart=/etc/frp/frpc -c /etc/frp/frpc.ini
Restart=always
[Service]
Type=forking
PIDFile=/var/run/shadowsocks/server.pid
PermissionsStartOnly=true
ExecStartPre=/bin/mkdir -p /var/run/shadowsocks
ExecStartPre=/bin/chown root:root /var/run/shadowsocks
ExecStart=/usr/local/bin/ssserver --pid-file /var/run/shadowsocks/server.pid --log-file /var/log/shadowsocks.log -c /etc/shadowsocks/config/server.json -d start
Restart=always
RestartSec=24h
User=root
Group=root
UMask=0027
[Install]
WantedBy=multi-user.target
若在系统启动后有用户登录后自动启动

修改文件权限(如果需要):

chmod 755 /etc/frp/frpc.service

Systemd 默认从目录/etc/systemd/system/读取配置文件。但是,里面存放的大部分文件都是符号链接,指向目录/usr/lib/systemd/system/,真正的配置文件存放在那个目录。

使用系统软连接将刚才建立的service文件指向 " /usr/lib/systemd/system "

ln -s /etc/frp/frpc.service /usr/lib/systemd/system

最后,更新Ubuntu Service守护进程:

systemctl daemon-reload

使用 systemctl 命令操作进程:

设置开机自启:

systemctl enable shadowsocks

启动 Shadowsocks 进程

systemctl start shadowsocks

结束 Shadowsocks 进程

systemctl stop shadowsocks

重启 Shadowsocks 进程

systemctl restart shadowsocks

查看 Shadowsocks 进程运行状态

systemctl status shadowsocks

参考:

  1. Systemd 入门教程:实战篇
  2. x11vnc对于Ubuntu15.04以后和Ubuntu14.04以前的配置和开机自启
  3. CentOS7以root权限开机自启动程序设置详解教程 - 百度文库