linux - Ampersand 没有将进程置于后台

标签 linux bash 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/

相关文章:

php - 在 ubuntu 13.10 上安装 laravel

android - 适用于 PC(非 Android)的 OpenSL 教程 ES

linux - 如何查看TCP半开连接?

c++ - ulimit 对核心文件大小没有影响?

linux - 在 ssh 中传输变量并得到回复

linux - 以 super 用户身份启动 pm2

linux - 使用 awk 对齐文本文件中的列?

linux - 附加到与特定模式匹配的进程的文件列表

java - 如何在 Android 中以编程方式 ping 网站

c# - 查找网络中的所有IP地址