<分区>
大家都说在命令的末尾加上 & 会把它放在后台,我用 ping 命令试过了,但它仍然出现在前台,唯一的变化是它不会在 ctrl c 后停止。我究竟做错了什么?我运行了 ping 8.8.8.8&。如果有人可以解释这一点,我将不胜感激,我只希望命令在后台运行,这样我就可以在执行 ping 操作时使用我的服务器。
<分区>
大家都说在命令的末尾加上 & 会把它放在后台,我用 ping 命令试过了,但它仍然出现在前台,唯一的变化是它不会在 ctrl c 后停止。我究竟做错了什么?我运行了 ping 8.8.8.8&。如果有人可以解释这一点,我将不胜感激,我只希望命令在后台运行,这样我就可以在执行 ping 操作时使用我的服务器。
最佳答案
添加 &
确实在后台运行该进程。但是,程序仍会像往常一样继续写入输出(到标准输出和标准错误流)。
您将不得不将该输出静音,例如通过命令行开关,或通过将输出重定向到文件。
在ping
的情况下,你可以运行:
ping 8.8.8.8 -q &
或者,您可以执行以下操作:
ping 8.8.8.8 > log.txt 2>&1 &
这会将标准输出和标准错误重定向到文件 log.txt
- 如果您想检查或以其他方式使用输出,这很有用。
如果您不关心输出,则只需重定向到 /dev/null
( special device file ),以丢弃输出:
ping 8.8.8.8 > /dev/null 2>&1 &
也许您仍然希望看到任何错误,或者将错误转到单独的文件,在这种情况下,请执行以下操作:
# Errors in errors.txt and output in log.txt
ping 8.8.8.8 > log.txt 2> errors.txt &
# Output in log.txt and errors to standard error as usual
ping 8.8.8.8 > log.txt &
关于linux - Ampersand 没有将进程置于后台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65843984/