在CentOS中,要实现使用nohup
启动的进程在意外终止后自动重启,可以使用systemd
服务来实现。以下是具体步骤:
创建一个新的systemd
服务文件:
使用文本编辑器创建一个新的服务文件,例如/etc/systemd/system/my_service.service
。将my_service
替换为你的实际服务名称。
sudo vi /etc/systemd/system/my_service.service
编辑服务文件:
在新创建的服务文件中,添加以下内容:
[Unit]
Description=My custom service
After=network.target
[Service]
Type=simple
User=<your_user>
WorkingDirectory=/path/to/your/working/directory
ExecStart=/usr/bin/nohup /path/to/your/script.sh > /path/to/your/logfile.log 2>&1 &
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
请根据实际情况替换<your_user>
、/path/to/your/working/directory
、/path/to/your/script.sh
和/path/to/your/logfile.log
。
Description
:服务的描述。After
:指定服务启动的顺序。User
:以哪个用户身份运行服务。WorkingDirectory
:服务的工作目录。ExecStart
:启动服务的命令。这里我们使用nohup
来运行脚本,并将输出重定向到日志文件。Restart
:设置服务在意外终止时自动重启。RestartSec
:设置服务重启前的等待时间。WantedBy
:设置服务在哪个目标级别启动。重新加载systemd
配置:
保存并关闭服务文件后,运行以下命令重新加载systemd
配置:
sudo systemctl daemon-reload
启动服务:
使用以下命令启动新创建的服务:
sudo systemctl start my_service
设置服务开机自启:
如果希望服务在系统启动时自动运行,可以使用以下命令设置开机自启:
sudo systemctl enable my_service
现在,你的服务将在意外终止后自动重启。你可以使用systemctl status my_service
命令查看服务状态。