Linux Debian:在腻子中自动杀死时重新启动进程

Linux Debian:在腻子中自动杀死时重新启动进程,linux,terminal,debian,putty,Linux,Terminal,Debian,Putty,我想知道是否有任何简单的脚本可以自动重新启动一个经过筛选的后台进程 进程被终止,但无法创建成功的进程:( 提前感谢!我认为最安全(但不是最简单)的方法是创建cron作业来检查进程是否正在运行,如果没有,请重新启动。这种方法之所以“更安全”,是因为如果使用ivan建议的循环,脚本“崩溃”,程序将不会再次重新启动;另一方面,通过cron,检查程序将每分钟调用一次 例如,您的cron可以是: * * * * * env DISPLAY=:0 /folder/testscript >/dev/nu

我想知道是否有任何简单的脚本可以自动重新启动一个经过筛选的后台进程

进程被终止,但无法创建成功的进程:(

提前感谢!我认为最安全(但不是最简单)的方法是创建
cron
作业来检查进程是否正在运行,如果没有,请重新启动。这种方法之所以“更安全”,是因为如果使用
ivan
建议的循环,脚本“崩溃”,程序将不会再次重新启动;另一方面,通过
cron
,检查程序将每分钟调用一次

例如,您的
cron
可以是:

* * * * * env DISPLAY=:0 /folder/testscript >/dev/null 2>&1
#!/bin/bash
testvar="$(ps aux | grep -s "mainscript" | grep -sv "grep -s mainscript")"
if [ -z "$testvar" ]; then nohup /folder/mainscript &; fi
#sleep and run second test
sleep 30
testvar="$(ps aux | grep -s "mainscript" | grep -sv "grep -s mainscript")"
if [ -z "$testvar" ]; then nohup /folder/mainscript &; fi
exit 0
案例中可能不需要
env DISPLAY=:0
,或者可能需要它,具体取决于您的脚本(注意:您可能需要根据您的案例调整它,运行
echo$DISPLAY
以查找案例中的变量)

例如,您的
testscript
可以是:

* * * * * env DISPLAY=:0 /folder/testscript >/dev/null 2>&1
#!/bin/bash
testvar="$(ps aux | grep -s "mainscript" | grep -sv "grep -s mainscript")"
if [ -z "$testvar" ]; then nohup /folder/mainscript &; fi
#sleep and run second test
sleep 30
testvar="$(ps aux | grep -s "mainscript" | grep -sv "grep -s mainscript")"
if [ -z "$testvar" ]; then nohup /folder/mainscript &; fi
exit 0

在上面的示例中,
testscript
将检查
mainscript
是否正在运行(必要时重新启动)每分钟两次。

20年前,对于quake服务器,我们会启动一个屏幕会话,然后在其中执行类似while true;do;/runquakeserver.sh;sleep 5;done的操作-基本上启动一个永不结束的循环,在进程停止(无论出于何种原因)后,让它小睡5秒钟,然后重新启动它