进程可以放到后台运行,这里的后台,其实指的是当前登陆终端的后台。这种情况下,当我们以远程管理服务器的方式,在远程终端执行后台命令,如果在命令尚未执行完毕时就退出登陆,那么这个后台命令还会继续执行吗?
当然不会,此命令的执行会被中断。这就引出一个问题,如果我们确实需要在远程终端执行某些后台命令,该如何执行呢?有以下 3 种方法:
1.把需要在后台执行的命令加入 /etc/rc.local 文件,让系统在启动时执行这个后台程序。这种方法的问题是,服务器是不能随便重启的,如果有临时后台任务,就不能执行了。
2.使用系统定时任务,让系统在指定的时间执行某个后台命令。这样放入后台的命令与终端无关,是不依赖登录终端的。
3.使用 nohup 命令。
nohup 命令的作用就是让后台工作在离开操作终端时,也能够正确地在后台执行。此命令的基本格式如下:
[root@localhost ~]# nohup [命令] &
注意,这里的‘&’表示此命令会在终端后台工作;反之,如果没有‘&’,则表示此命令会在终端前台工作。
写一个循环脚本,然后使用 nohup 命令执行。例如:
[root@localhost ~]# cat test.sh
#!bin/bash
for ((i=0;i<=5;i=i+1))
do
echo 11 >> /root/for.log
sleep 10s
done
[root@localhost ~]# nohup bash /root/test.sh &
[1] 2741
[root@localhost ~]# ps
PID TTY TIME CMD
2125 pts/4 00:00:00 bash
2741 pts/4 00:00:00 bash
2742 pts/4 00:00:00 sleep
2749 pts/4 00:00:00 ps
[root@localhost ~]# cat for.log
11
11
11
11
11
11
[1]+ Done nohup bash /root/test.sh