11

スクリプトを自己デーモン化nohup $SCRIPT &>/dev/null &したい、つまり、シェル プロンプトで手動で呼び出す必要がないようにしたい。

私の計画は、次のようなコードのセクションを作成することです。

#!/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

これは賢明ですか?より良い代替手段はありますか?

4

1 に答える 1

11

ここに私が見るものがあります。

if [[ $1 != "--daemonize" ]]; then  

そんなはずないでしょ== --daemonize?

nohup $SCRIPTNAME --daemonize "${PARAMS[@]}" &>/dev/null &

スクリプトを再度呼び出す代わりに、バックグラウンドに配置されたサブシェルを呼び出すことができます。

(
    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
于 2013-09-23T08:39:21.103 に答える