你的位置:首页 > 操作系统

[操作系统]linux进程后台运行及输出重定向


本机环境为ubuntu 14.04

以ping www.baidu.com为例:

1.程序的前台运行

ping www.baidu.com

可以看到,屏幕上输出了baidu返回的结果

 

2.实现程序后台的运行

nohup ping www.baidu.com &

运行此命令后,屏幕显示出进程号(如:[1] 13668),出现新的一行,并进入等待状态:

  $ nohup: 忽略输入并把输出追加到"nohup.out"

此时,程序前台运行时的输出,默认从屏幕重定向到了当前路径下的nohup.out中。

ctrl+c强制结束或直接关闭此终端后,多次查看nohup.out,其内容是一直变化的。说明刚刚的那条命令已经成功在后台运行。

 

3.实现输出重定向

如果后台同时运行多个程序,它们的输出全都在nohup.out中,阅读起来很不方便。可通过重定向到不同文件中来解决这个问题。

linux启动后,会默认打开3个文件描述符,0表示标准输入,1表示正确输出,2表示错误输出。

nohup ping www.baidu.com 1>result.out 2>result.out & //将正确输出和错误输出均写入result.out文件

 

4.关闭示后台运行的进程

如果我们想关闭刚刚的后台运行的进程,又忘记了刚刚显示的进程号,可以用如下方法:

ps -e  //显示所有后台运行的进程ps -e | grep ping //显示所有带有ping的进程

找到对应的进程号,输入以下命令即可关闭进程

kill [进程号]

 

参考资料:

   http://www.cnblogs.com/chengmo/archive/2010/10/20/1855805.html

   http://forum.ubuntu.org.cn/viewtopic.php?t=392696