DOIFORDevOpsUbuntu设置脚本开机自启动
DOIFORDevOpsUbuntu设置脚本开机自启动

Ubuntu设置脚本开机自启动

DevOps技术

今天使用vnt给远在南充的家庭服务器搞了个跨与组网,然后想要给本机设置个开机自启动:

zero@Zero-ThundeRobot:/etc/systemd/systemsudo vi vnt-home.service
zero@Zero-ThundeRobot:/etc/systemd/system sudo systemctl daemon-reload
zero@Zero-ThundeRobot:/etc/systemd/system$ sudo systemctl enable vnt-home.service
Created symlink /etc/systemd/system/multi-user.target.wants/vnt-home.service → /etc/systemd/system/vnt-home.service.

vnt-home.service内容如下:

[Unit]
Description=Vnt connect to home
# 确保在网络服务启动后再启动该服务
After=network.target network-online.target
Wants=network-online.target

[Service]
# 这里填写运行服务的用户,根据实际情况修改
User=root
Group=root
# 执行的命令
ExecStart=/home/wuzhao/vnt/vnt-cli -k b8cd63bc-1f53-b270-16da -i 192.168.0.1/24,10.26.0.2 -w c8592197-37ca-b939-dbaf --model chacha20_poly1305
WorkingDirectory=/home/wuzhao/vnt
# 服务失败时自动重启
Restart=always
# 重启间隔时间
RestartSec=5s

[Install]
# 表示该服务会在多用户模式下启动
WantedBy=multi-user.target

image

有几点需要说明一下:

  • 启动的服务依赖网络服务,因此需要使用After定义强依赖。
  • 由于不一定需要网络已经可以访问互联网,所以,使用wants定义弱依赖
  • systemd中定义服务,不要使用nohup来设置进程后台运行,systemd会自行管理进程的生命周期。
  • 不需要使用./xxxx来执行命令,只需要配置好WorkingDirectory后,执行执行文件和命令即可

以上都是关于systemd的使用,具体的可以查看相关文档,也可以询问AI,这方面问题AI很擅长。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注