[USER@SERVER ~] sleep 3 &
[1] 5232
[USER@SERVER ~]
[1]+ Done sleep 3
[USER@SERVER ~]
Run Code Online (Sandbox Code Playgroud)
我如何 /dev/null 这两条消息?:
[1] 5232
[1]+ Done sleep 3
Run Code Online (Sandbox Code Playgroud)
ps:所以我需要进程的输出,而不是上面提到的两行!
ДМИ*_*КОВ 30
这不是程序输出,而是一些有用的 shell 信息。
无论如何,这些可以通过使用子shell和输出重定向来隐藏
( sleep 3 & ) > /dev/null 2>&1
Run Code Online (Sandbox Code Playgroud)
在 bash 或 zsh 中,您可以调用disown %1来告诉 shell 忘记这项工作。然后 shell 不会打印有关该作业的任何消息,也不会在您运行jobs或向其发送 SIGHUP 时显示它。在 zsh 中,用&!而不是开始工作&相当于disown立即调用它。
小智 5
尝试:
user@host:~$ read < <( sleep 10 & echo $! )
user@host:~$ echo $REPLY
28677
Run Code Online (Sandbox Code Playgroud)
并且您隐藏了输出和PID。请注意,您仍然可以从 $REPLY检索PID