本节重点讲解 nohup 命令的用法。nohup 命令的作用就是让后台工作在离开操作终端时,也能够正确地在后台执行。此命令的基本格式如下
在前面章节中,我们一直在说进程可以放到后台运行,这里的后台,其实指的是当前登陆终端的后台。这种情况下,当我们以远程管理服务器的方式,在远程终端执行后台命令,如果在命令尚未执行完毕时就退出登陆,那么这个后台命令还会继续执行吗?
当然不会,此命令的执行会被中断。这就引出一个问题,如果我们确实需要在远程终端执行某些后台命令,该如何执行呢?有以下 3 种方法:
本节重点讲解 nohup 命令的用法。nohup 命令的作用就是让后台工作在离开操作终端时,也能够正确地在后台执行。此命令的基本格式如下:
[root@localhost ~]# nohup [命令] &
注意,这里的‘&’表示此命令会在终端后台工作;反之,如果没有‘&’,则表示此命令会在终端前台工作。
例如:
[root@localhost ~]# nohup find / -print > /root/file.log & [3] 2349 #使用find命令,打印/下的所有文件。放入后台执行 [root@localhost ~]# nohup:忽略输入并把输出追加到"nohup.out" [root@localhost ~]# nohup:忽略输入并把输出追加到"nohup.out" #有提示信息
接下来的操作要迅速,否则 find 命令就会执行结束。然后我们可以退出登录,重新登录之后,执行“ps aux”命令,会发现 find 命令还在运行。
如果 find 命令执行太快,我们就可以写一个循环脚本,然后使用 nohup 命令执行。例如:
[root@localhost ~]# vi for.sh #!/bin/bash for ((i=0;i<=1000;i=i+1)) #循环1000次 do echo 11 >> /root/for.log #在for.log文件中写入11 sleep 10s #每次循环睡眠10秒 done [root@localhost ~]# chmod 755 for.sh [root@localhost ~]# nohup /root/for.sh & [1] 2478 [root@localhost ~]# nohup:忽略输入并把输出追加到"nohup.out" #执行脚本
接下来退出登录,重新登录之后,这个脚本仍然可以通过“ps aux”命令看到。