使用 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,而是来自您的 shell (bash)。

您使用 使这些进程进入后台&,因此 shell 会在命令退出时告诉您。如果您不希望 shell 执行此操作,可以使用disown.另外,通过使用disown,您不再需要nohup.例如:

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

在示例中,我们使用重定向生成一个子 shell,将其置于后台,然后放弃它。

相关内容