我想制作一个自守护的脚本,即不需要调用nohup $SCRIPT &>/dev/null &
在 shell 提示符下手动执行。
我的计划是创建一段如下所示的代码:
#!/bin/bash
SCRIPTNAME="$0"
...
# Preps are done above
if [[ "$1" != "--daemonize" ]]; then
nohup "$SCRIPTNAME" --daemonize "${PARAMS[@]}" &>/dev/null &
exit $?
fi
# Rest of the code are the actual procedures of the daemon
这是明智的吗?你有更好的选择吗?
最佳答案
这是我看到的东西。
if [[ $1 != "--daemonize" ]]; then
不应该是 == --daemonize?
nohup $SCRIPTNAME --daemonize "${PARAMS[@]}" &>/dev/null &
无需再次调用您的脚本,您只需调用一个置于后台的子 shell:
(
Codes that run in daemon mode.
) </dev/null >/dev/null 2>&1 &
disown
或者
function daemon_mode {
Codes that run in daemon mode.
}
daemon_mode </dev/null >/dev/null 2>&1 &
disown
关于bash - 自守护 bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18954527/