2008年10月26日星期日

linux下前后台程序的转换

为了能够将通过vnc运行的程序在服务器上一直执行, 而不是当vnc关闭时,程序自动也结束。 网上搜了下相关的文档,但很多对于菜鸟级的新手,例如偶自己,看不明白。。

1). &符号, 在运行后面添加&,可以实现程序在后台运行,比如将./Parser运行于后台,则可以执行$ ./Parser & ,如果参数中用&符号,则要添加一个转义符\
不将当前终端关闭,而只是关闭VNC。 下次进入VNC时,可以现此程序仍在执行.

2). nohup命令, 不挂断地运行运行命令
无论程序是否输出重定向到终端,nohup都将输出附加到当前目录的nohup.out文件中。如果当前目录的nohup.out文件不可写,输出到$HOME/nohup.out文件中。
例如 nohup ./Parser &
它与 ./Parser &的区别是后者中,如果当前终端关闭,则Parser进程也将结束。而添加上nohup,则即使终端关闭,Parser进程仍执行。

3). 将正在运行的程序从前台转化为后台
a.)在终端运行 ./Parser,产生一个前台进程
b.) Ctrl + Z ,将进程Pparser暂停. 并会看到Parser的状态为Stopped
c.) 通过jobs命令查看Parser的编号,比如是1
d.) 执行命令dp 1,即将进程1转化为后台进程,程序从原stop点继续执行。其效果等同于./Parser &, 如果关闭当前终端,此进程仍结束. 怎样做到不结束呢??

没有评论: