bash - 自守护 bash 脚本

标签 bash daemon

我想制作一个自守护的脚本,即不需要调用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/

相关文章:

ruby-on-rails - 使用 ruby​​ on Rails 进行定时服务器事件

c - 当我创建守护进程时,fopen() 似乎不起作用

regex - 如果第二行包含与第一行相同的匹配项,我如何打印 2 行?

linux - 优先级调度 OS bash 文件

Python套接字+守护进程发送数据后停止

执行守护进程时的 Linux/Bash 文件描述符

c - 非阻塞 native 文件访问 - C 中的单线程守护进程?

linux - 如何使用一个 ssh 执行两个命令来保存 2 个不同的文件

文本后的 Bash globstar 匹配

linux - 搜索早于特定时间的文件并将其移动到特定文件夹中