在Linux中我们在下达的命令后面加上&,就可以使该命令在后台进行工作,这样做最大的好处就是不怕被ctrl+c这个中断指令所中断。那大家可能又要问了,在后台执行的程序怎么使它恢复到前台来运行呢?很简单,只用执行fg这个命令,就可以了。可能有些同学又要问了,我现在已经在前台运行的命令,我能把它放到后台去运行么?当然可以了,只要执行ctrl+z就可以做到了。是不是很赞啊!说到这里可能有些同学又要问了,如果我有多个进程在后台运行,那如何恢复到前台来执行呢?这时候就要用到jobs这个命令了,通过jobs这个命令,能够列出所有在后台执行的进程,那个中括号([ ])里面的数字就是 jobs 的代号 ,通过fg %number 就可以恢复指定的后台进程.
使用nohup让程序在远程主机后台运行
因为我购买的一个国外主机居然开放了Telnet权限,因此我也使用Telnet登录上去玩玩Linux,但发现一关闭窗口就自动和主机断开了,和Windows的终端不一样,所以就上网找啊找,找到了一个从后台一直运行某个程序的方法。
Unix/Linux下一般比如想让某个程序在后台运行,很多都是使用 & 在程序结尾来让程序自动运行。比如我们要运行mysql在后台:
/usr/local/mysql/bin/mysqld_safe –user=mysql &
但是加入我们很多程序并不象mysqld一样做成守护进程,可能我们的程序只是普通程序而已,一般这种程序使用 & 结尾,但是如果终端关闭,那么程序也会被关闭。但是为了能够后台运行,那么我们就可以使用nohup这个命令,比如我们有个test.php需要在后台运行,并且希望在后台能够定期运行,那么就使用nohup:
nohup /root/test.php &
提示:
[~]$ appending output to nohup.out
嗯,证明运行成功,同时把程序运行的输出信息放到当前目录的 nohup.out 文件中去。
附:nohup命令参考
nohup 命令
用途:不挂断地运行命令。
语法:nohup Command [ Arg ... ] [ & ]
描述:nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 [...]
1. 后台运行的两个命令 & 和 ctr+z
一开始就+“&”具体方法是: [命令]空格[&]
比如:
[root@pcmxexweb etc]# find / -name xml &
这样,这个查找程序就会在后台运行。它运行的同时不影响你干别的事情。
但是有的时候忘记了在命令之后加上‘&’符号,又不愿意停下此命令重新改写。这是可以按[ctrl+z],把当前程序切入后台。
[root@pcmxexweb etc]# find / -name xml
/etc/xml
/usr/lib64/python2.4/xml
/usr/share/vim/vim70/autoload/xml
/usr/share/hplip/data/xml
/usr/share/java-utils/xml
/usr/share/xml
/usr/share/doc/libvorbis-devel-1.1.2/xml
/usr/local/apache-tomcat-6.0.14/webapps/examples/jsp/xml
/webapp/web/jsp/xml
[root@pcmxexweb etc]# find / -name xml
/etc/xml
/usr/lib64/python2.4/xml
/usr/share/vim/vim70/autoload/xml
/usr/share/hplip/data/xml
/usr/share/java-utils/xml
/usr/share/xml
[1]+ Stopped find / -name xml
但是要注意此时在后台的这个程序是处于 Stopped 状态(注意看上面最后一行)。
用jobs查看下后台运行程序。
[root@pcmxexweb etc]# jobs
[1]- Stopped find / -name xml
[2]+ Stopped vi /etc/hosts
可以用命令bg 2。效果和一开始就用find / -name xml&是一样了,让此命令在后台运行了。
2.把后台程序调回前台
根据jobs的显示,配合使用fg 2 就把对应的程序调回前台了
新闻热点
疑难解答