版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/twilight_karl/article/details/77857203
简介
工作管理指的是在当个登陆终端中同时管理多个工作的行为。
注意事项
- 当前的登陆终端,只能管理当前终端的工作,而不能管理其他登陆终端的工作
- 放入后台的命令必须可以持续运行一段事件,这样我们才能捕捉和操作这个工作
- 放入后台执行的命令不能和前台用户有交互或需要前台输入,否则放入后台只能暂停,而不能执行。放入后台类似于Windows中的最小化
工作管理的方法
-
命令 &
: 把命令放入后台,并在后台执行 -
ctrl + z
: 按下ctrl + z
快捷键,放在后台暂停
后台执行ping命令,发送20个数据包,并将结果保存到文件:
ping -c 20 www.baidu.com > baidu.ping &
如果使用 ctrl + z
,进程会放到后台,并暂停
[root@localhost ~]# ping -c 20 www.baidu.com > baidu.ping
^Z
[1]+ Stopped ping -c 20 www.baidu.com > baidu.ping
jobs 命令
显示所有后台的进程
参数:
- -l : 显示工作的PID
PS: +
表示最近一个放入后台的工作,页就是工作恢复时,默认恢复的工作。-
代表倒数第二个放入后台的工作
[root@localhost ~]# jobs
[1]+ Stopped ping -c 20 www.baidu.com > baidu.ping
[2]- Running ping -c 20 www.baidu.com > baidu.ping &
恢复到前台执行
- fg %工作号
将后台正在运行的进程后者暂停的进程恢复到前台运行状态。%
可以省略
工作号可以用 +
或 -
表示,也可以不写,默认是+
。
[root@localhost ~]# fg %1
ping -c 20 www.baidu.com > baidu.ping
恢复到后台执行
- bg %工作号
将后台暂停的进程恢复到在后台运行,对已经在运行的进程不生效
后台恢复执行的命令是不能和前台有及交互的,否则不能恢复到前台执行
[root@localhost ~]# bg 1
[1]+ ping -c 20 www.baidu.com > baidu.ping &
如果该进程已经在后台运行,则不会生效:
[root@localhost ~]# bg 1
-bash: bg: job 1 already in background
脱离终端
命令放入后台执行,只能在当前登录的终端只当,一旦用户退出当前终端后台程序就会终止。使后台进程脱离终端执行的方法有:
- 第一种方法是把需要后台执行的命令加入/etc/rc.local文件。参考 Linux服务管理—系统运行级别、rpm启动与自启动、源码包的启动与自启动
- 第二种方法是使用系统定时任务,让系统在指定的时间执行某个后台命令
- 第三种方法是使用nohup命令,标准方法
nohup 命令
- nohup 命令 &
是命令脱离终端,在终端关闭后依然能够存在
[root@localhost ~]# nohup ping -c 10 www.baidu.com > baidu.ping &
[1] 28065
[root@localhost ~]# nohup: 忽略输入重定向错误到标准输出端