如何将 运行 bash 脚本永远作为系统后台进程?

How to run bash script as background process on system forever?

我有一个脚本 (sync.sh),其中 运行 内部有一个 while 循环用于同步。

#!/bin/bash
while :
do
     #my PHP scripts runs parallel 

     wait
     sleep 60
done

我想 运行 这个脚本在我的虚拟机中永远独立。

我知道我可以 运行 通过使用 nohup, disown 命令.

这个 sh 文件作为 后台进程

但是我想知道的是?我如何 运行 这个 .sh 文件在系统重启时或者它的进程被终止。如何在 Ubuntu VM 中不使用终端命令自动启动 .sh 文件。(就像我们启动 Apache,系统启动时 MySQL 服务一样)

提前致谢。

如果您使用的是 systemD,则应为您的脚本创建一个服务 sync.sh,该文件将是:

/lib/systemd/system/sync.service 

您可以编辑此文件(使用 'root' 或 'sudo' 权限)使其包含:

[Unit]
Description=My Shell Script for Sync

[Service]
ExecStart=/usr/bin/sync.sh

[Install]
WantedBy=multi-user.target

然后,重新加载 systemD 守护程序(这样它就知道已添加服务):

sudo systemctl daemon-reload 

然后您可以启用您的服务(因此它会在每次系统启动时启动:

sudo systemctl enable sync.service 

然后你可以手动启动它,它会立即启动,而不是等待下一次系统重启:

sudo systemctl start sync.service 

(当然,你可以更改你的服务名称,不一定叫“sync.service”