Ubuntu 将程序注册为 service 并开机自启
- 在
/etc/systemd/system/
新建一个 [app].service 文件,填入下面内容
[Unit]
Description=[APP DESCRIPTION]
After=network.target
[Service]
Type=forking (以子进程方式启动, 可不写)
ExecStart=带绝对路径的启动程序 参数(可选) (就和你正常启动这个程序一样,只不过需要绝对路径)
Restart=always (启用自动重启)
RestartSec=3 (重启等待时间为3秒)
[Install]
WantedBy=multi-user.target (运行级别)
Alias=[APP-alias].service (服务别名)
配置项解析:
[Unit]
Description
:对你的服务进行描述,方便识别。After=network.target
: 这一行非常重要。它告诉 systemd,只有在network.target
(表示网络服务已就绪)启动之后,才启动你的服务。你也可以指定其他依赖,比如After=mysql.service
。
[Service]
ExecStart
: 最核心的配置项,指定要执行的命令或脚本的绝对路径。User
: 指定以哪个用户身份来运行这个服务。通常情况下,不要使用 root,除非你的应用确实需要。Restart=always
: 它告诉 systemd,如果你的服务因为任何原因崩溃了,请自动重启它。RestartSec
: 设置重启间隔时间
[Install]
WantedBy=multi-user.target
: 这个配置告诉 systemd,当系统进入多用户模式(正常运行模式)时,启用你的服务。这是让服务开机自启动的标准方式。Alias
: 可以给你的服务设置一个别名
- 启用服务
systemctl enable [app].service (文件名)
- 启动服务
systemctl start [app].service
这里也可以直接重启系统, 等系统重新启动之后,如果配置正确,你的服务应该已经自动启动了。
- 查看服务是否成功启动
systemctl status [app].service
- 重新加载 service 文件 (比如你要更改服务别名之类的需要用到)
systemctl daemon-reload