Ale*_*kiy 2 bash shell daemon nohup
我想要一种在shell脚本中编写守护进程的方法,该脚本在循环中运行另一个应用程序,如果它死了则重新启动它.
./myscript.sh从SSH会话运行时,它将启动守护程序的新实例,除非该守护程序已在运行../myscript -stop)可以杀死任何现有的守护进程.(关于编辑的注意事项 - 原始问题指出nohup并且可能不使用类似工具.这个人工要求是一个"XY问题",并且接受的答案实际上使用了OP声称无法使用的所有工具.)
根据注释中的说明,您实际需要的是一个守护进程,让孩子保持运行,并在它退出时重新启动它.您想要一种在ssh会话中键入"./myscript.sh"并启动守护程序的方法.
#!/usr/bin/env bash
PIDFILE=~/.mydaemon.pid
if [ x"$1" = x-daemon ]; then
if test -f "$PIDFILE"; then exit; fi
echo $$ > "$PIDFILE"
trap "rm '$PIDFILE'" EXIT SIGTERM
while true; do
#launch your app here
/usr/bin/server-or-whatever &
wait # needed for trap to work
done
elif [ x"$1" = x-stop ]; then
kill `cat "$PIDFILE"`
else
nohup "$0" -daemon
fi
Run Code Online (Sandbox Code Playgroud)
运行脚本:它将使用nohup为您启动守护进程.守护进程是一个循环,它监视子进程退出,并在它出现时重新启动它.
为了控制守护进程,-stop脚本可以采用一个会杀死守护进程的参数.查看系统初始化脚本中的示例,以获得更完整的示例,并进行更好的错误检查.
| 归档时间: |
|
| 查看次数: |
11795 次 |
| 最近记录: |