Linux后台运行命令

来源:互联网 发布:linux ps和netstat 编辑:程序博客网 时间:2024/06/10 07:59
&是指在后台运行
nohup是永久执行

用nohup运行命令可以使命令永久的执行下去,和用户终端没有关系,例如我们断开SSH连接都不会影响他的运行,注意nohup没有后台运行的意思;&才是后台运行

&是指在后台运行,但当用户退出(挂起)的时候,命令自动也跟着退出

那么,我们可以巧妙的吧他们结合起来用就是
nohup COMMAND &

这样就能使命令永久的在后台执行

上面这些话引自nohup和&的区别 http://bbs.nanjimao.com/thread-470-1-1.html (出处: 南极猫)

下面是我自己的实践:


例1

[root@localhost ~]# mkdir hui
[root@localhost ~]# cd hui
[root@localhost hui]# touch test.txt
[root@localhost hui]# tail -F -n 0 test.txt &
[1] 16065
在SecureCRT中再打开另一个终端输入
[root@localhost hui]# ps -ef(可找到下面这一行)
root     16065 16005  0 22:04 pts/3    00:00:00 tail -F -n 0 test.txt
[root@localhost ~]# echo "hehe" >> hui/test.txt 
[root@localhost ~]# echo "haha" >> hui/test.txt 
在原来的终端中弹出如下内容,很烦的。。。
[root@localhost hui]# hehe
haha
把原终端关闭后在另一个终端中输入ps -ef则那一行消失即命令已退出。你也可以在原终端不关闭情况下用命令kill -9 16065


补充:如果你不想在原终端不时的弹出内容,你可以这样做
[root@localhost hui]# tail -F -n 0 test.txt 1>/dev/null 2>&1 &
说明:1>/dev/null的意思将标准输出重定向到/dev/null中,2>&1的意思是将错误输出也和标准输出重定向到相同的地方


例2
[root@localhost hui]# nohup tail -F -n 0 test.txt
nohup: appending output to `nohup.out'
输入符一直在这一行闪烁(无法退出只能按Ctrl+c都能将其停止但该命令也被终止)
打开另一个终端
[root@localhost ~]# ps -ef
root     16102 16005  0 22:08 pts/3    00:00:00 tail -F -n 0 test.txt
[root@localhost ~]# echo "haha" >> hui/test.txt
(无论哪个终端都不会弹出haha而是写入到了hui/nohup.out文件中。一般在当前目录下,如果当前目录不可写,那么自动保存到执行这个命令的用户的home目录下,例如root的话就保存在/root/下)
关闭原终端在刚开的另一终端再输入ps -ef后那一行依旧存在,只能用命令kill -9 16102或者不关闭原终端在输入符闪烁的时候按Ctrl+c都能将其停止


例3
[root@localhost hui]# nohup tail -F -n 0 test.txt &
[1] 16164
[root@localhost hui]# nohup: appending output to `nohup.out'
输入符一直在这一行闪烁
(按Ctrl+c或者回车键退回到命令行但命令并没有退出)
打开另一个终端
[root@localhost ~]# ps -ef
root     16164 16075  0 22:21 pts/2    00:00:00 tail -F -n 0 test.txt
[root@localhost ~]# echo "haha" >> hui/test.txt (无论哪个终端都不会弹出haha)
关闭原终端在刚开的另一终端再输入ps -ef后那一行依旧存在,只能用命令kill -9 16164使其停止

原创粉丝点击