1、工作管理简介
工作管理指的是在单个登录终端中(也就是登录的shell界面中)同时管理多个工作的行为。
注意事项:
- 当前登录的终端,只能管理当前终端的工作,而不能管理其他终端的工作
- 放入后台的命令必须可以持续运行一段时间,这样我们才能捕捉和操作这个工作
- 放入后台执行的命令不能喝前台用户有交互或需要前台输入,否则放入后台只能暂停,而不能执行
2、工作管理方法
①、把进程放入后台的方法:
1、直接在要执行的命令后面加上"&"符号
如:tar -zcvf etc.tar.gz /etc &
# 把命令放入后台,并在后台执行
2、在命令运行过程中按下ctrl+z快捷键,放在后台暂停
如:top
②、查看后台的工作
jobs [-l]
选项:
-l: 显示工作的PID
注:"+"号表示最近一个放入后台的工作,也是工作恢复时,默认恢复的工作。"-"号代表倒数第二个放入后台的工作
③、将后台暂停的工作恢复到前台执行
fg %工作号
参数:
-%工作号: %号可以省略,但是注意工作号和PID的区别
④、将后台暂停的工作恢复到后台执行
bg %工作号
注:后台恢复执行的命令,是不能和前台有交互的,否则不能恢复到后台执行
3、后台命令脱离终端运行
通常,把命令放入后台,只能在当前登录终端执行。一旦正确地退出或关闭终端,后台程序就会停止。但有些进程放入后台执行后能够脱离终端运行,一般这种进程是守护进程。让后台命令脱离登录终端执行的方法有:
- 第一种方法是把需要后台执行的命令加入/etc/rc.local文件(推荐)
- 第二种方法是使用系统定时任务,让系统在指定的时间执行某个后台命令
- 第三种方法是使用nohup命令(标准方法)
①、方法一
直接将需要后台执行的命令加入到/etc/rc.local文件中,系统每次开机的时候都会去执行该文件中的内容,推荐使用这种方法,如下:
②、方法二
使用系统定时任务有时候会不生效,一般不推荐使用这种方法
③、方法三
nohup命令是一种标准的方法,使用的方法如下:
nohup [命令] &
实例如下:
首先准备一个需要长时间执行的脚本文件for.sh:
#!/bin/bash
for ((i=1;i<=1000;i=i+1))
do
echo 111 >> /root/for.log
sleep 10 #休眠10秒钟
done
然后,用nohup命令将/root/for.sh放入后台:
关闭终端centos6.10_root后,在终端2:(centos6.10_fz)中使用ps aux命令:
可以发现,此时箭头所指的进程,并没有因为它原来的终端关闭了就终止了。当然,在2号终端中使用jobs命令,发现没有结果
这个需要仔细思考下