在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命令查看服务状态。