Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
234 views
in Technique[技术] by (71.8m points)

linux - Ampersand isn't putting processes in the background


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Adding & does run the process in the background. But, the program would still continue to write output (to standard output & standard error streams) as usual.

You will have to silence that output, e.g. through a command-line switch, or by redirecting the output to a file.

In the case of ping, you can run:

ping 8.8.8.8 -q &

Alternatively, you can do for example:

ping 8.8.8.8 > log.txt 2>&1 &

This will redirect the standard output & standard error to the file log.txt -- useful if you want to inspect or otherwise make use of the output.

If you don't care about the output, then just redirect to /dev/null (special device file) instead, to discard the output:

ping 8.8.8.8 > /dev/null 2>&1 &

Perhaps you still want to see any errors, or have the errors go to a separate file, in which case do the following:

# 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 &

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...