nohupを使用した後に新しい端末に表示されるメッセージ

nohupを使用した後に新しい端末に表示されるメッセージ

頑張る一部のコマンドを非同期で実行ログインスクリプト(.bash_profile)から。

新しい端末を開くと、次のメッセージが表示されます。 SSH経由でシステムにログインしたときにも表示されます。

Last login: Sat Jun 11 19:21:44 on ttys001
[1]-  Exit 127    nohup -c 'git fetch -p && git pull' < /dev/null >&/dev/null  (wd: ~/cryptopp)
(wd now: ~)
[2]+  Exit 127    nohup -c 'git fetch -p && git pull' < /dev/null >&/dev/null  (wd: ~/openssl)
(wd now: ~)

ログインスクリプトは次のことを行います。

if [ -d "$HOME/cryptopp" ]; then
    cd "$HOME/cryptopp"
    nohup -c 'git fetch -p && git pull' </dev/null &>/dev/null &
fi

if [ -d "$HOME/openssl" ]; then
    cd "$HOME/openssl"
    nohup -c 'git fetch -p && git pull' </dev/null &>/dev/null &
fi

追加のリダイレクトのロールバックは、次のために発生します。nohup:入力を無視し、「nohup.out」に出力を追加します。。追加の一重引用符は次のとおりです。一重引用符で囲まれた文字列から一重引用符をエスケープする方法は?

重要なのはOS Xで作業しているため、Bash 3を使用しています。しかし、スクリプトは通常Linux、BSD、Solarisで動作し、Debian 8でも見たことがあります。

いくつかの質問があります。まず、についての苦情は何ですかnohup?第二に、nohup私が文句を言っている問題をどのように解決しますか?第三に、そのようなメッセージを抑制する方法は何ですか?

ベストアンサー1

出力は からでnohupはなくシェルから出ます。

これらのプロセスをバックグラウンドに配置するために使用されるため、&コマンドの終了時にシェルが通知します。シェルでこれを実行したくない場合は、を使用できますdisown。また、使用するdisown必要はなくなりますnohup

if [ -d "$HOME/cryptopp" ]; then
    (
        cd "$HOME/cryptopp"
        git fetch -p && git pull
    ) </dev/null &>/dev/null &
    disown $!
fi

例では、リダイレクトを使用してサブシェルを作成し、バックグラウンドに配置して破棄します。

おすすめ記事