进程管理与计划任务(2)-工作的前后台管理
每周二、四、六定期更新,我们不见不散!
本文的主要内容包括:[ctrl]-z jobs fg bj kill
当前工作丢到后台[ctrl]-z
假设一个场景:我正在用vi编辑文件,此时想去系统里查找一个文件,此时我必须要关闭vi吗?当然不需要,我们只要把它放到后台即可:
[root@studyclub ~]# vim jason.log
# 在 vi 的一般模式下,按下 [ctrl]-z 这两个按键
[1]+ Stopped vim jason.log
[root@studyclub ~]# 在这里可以继续操作,做你想做的工作
注意:通过[ctrl] - z方式丢到后台的任务会处于stop状态。
查看目前正在后台的有哪些工作jobs
上一节我们把一个vim任务通过[ctrl]-z的方式放到了后台,那么我们怎么才能知道后台有哪些工作呢?那就用到了jobs命令。
[root@studyclub ~]# jobs [-lrs]
选项与参数:
-l :除了列出后台任务以外,还会同时列出任务的PID
-r :仅列出正在后台运行(run)的工作;
-s :仅列出正在后台当暂停 (stop) 的工作
我们来看看实际是什么样子的:
[root@studyclub ~]# jobs -l
[1] 18096 Stopped vim stdin.txt
[2]- 18103 Stopped vim bak.sh
[3]+ 18104 Stopped vim job.sh
上面的输出我们可以看到,有三个后台任务,都处于stop状态。另外看到还有+、-符号。“+”号代表最近一次放到后台的任务,“-”号代表倒数第二次放入后台的任务,再以前的任务就没有什么标识了。
将后台工作拿到前台fg
# 把最近一次放到后台的任务拿到前台来
[root@studyclub ~]# fg
vim job.sh # 提示拿到前台来的是哪个任务
#!/bin/bash
j=1
......
# 把jobs编号为1的任务拿到前台来
[root@studyclub ~]# fg 1
让后台任务变为运行中:bg
前面我们提到过,通过[ctrl] -z方式放到后台的任务会处于stop状态,如果我们想让后台的任务处于运行状态应该怎么处理。准备任务脚本:
[root@studyclub ~]# cat job.sh
#!/bin/bash
j=1
for ((i=1; i>=j; i++))
do
echo $i > /dev/null
done
开始运行:
[root@studyclub ~]# sh job.sh
^Z # 按下[ctrl]-z
[1]+ Stopped sh job.sh
# 让该进程在后台运行并查看状态
[root@studyclub ~]# jobs -l
[2]- 18103 Stopped vim bak.sh
[3]+ 18208 Stopped sh job.sh # 任务处于stop状态
[root@studyclub ~]# bg 3 # 通过bg,让其变成运行状态
[3]+ sh job.sh &
[root@studyclub ~]# jobs -l
[2]+ 18103 Stopped vim bak.sh
[3]- 18208 Running sh job.sh & # 看状态已经处于running状态了。发起这个任务的指令最后也多了一个"&"符号。
结束工作 - kill
前面我们把后台stop的工作继续执行,也可以让一个工作回到前台继续工作,如果想把这个工作直接结束或重新启动该怎么做?kill命令可以做到:
kill -signal PID
选项与参数:
signal:这个是给与任务什么样的信号,有这么几个:
1:数字1,名称为SIGHUP,重新读取一次配置文件,相当于reload
2:数字2,名称为SIGINT,和键盘的[ctrl]-c一样,中断一个程序的运行
9:数字9,名称为KILL,立刻强制删除一个任务
15:数字15,名称为SIGTERM,正常终止一个任务。
注意:kill命令行里的PID可以换成jobs命令返回的任务号,但是我们不建议这么做,统一用PID就好。
signal那么多,我们只要记住1和9就可以了。
实例演示:
# 我们把现有的后台进程结束
[root@studyclub ~]# jobs -l
[1]+ 18306 Stopped sh job.sh
[root@studyclub ~]# kill -9 18306 # 把当前后台的任务都终止、删除
接下来则是实际使用 kill -1 PID,因此,整串命令会是这样:ps aux | grep 'syslog' | grep -v 'grep'| awk '{print $2}'
如果要确认有没有重新启动 syslog ,可以参考登录档的内容,使用如下命令查阅:kill -1 $(ps aux|grep 'syslog'|grep -v 'grep'|awk '{print $2}')
如果你有看到类似『Mar 19 15:08:20 www syslogd 1.4.1: restart』之类的字样,就是表示 syslogd 在 3/19 有重新启动 (restart) 过了!tail -5 /var/log/messages
新手应知:
《Linux基础及进阶》:
036 - 文件打包与压缩(1)-常见的压缩命令
037 - 文件打包与压缩(2)-打包命令tar 038 - 文件打包与压缩(3)-xfs文件系统的备份与还原 039 - 文件打包与压缩(4)-dd命令详解 040 - 进程管理与计划任务(1)-进程管理与job control看完本文有收获?请分享给更多人
推荐关注「Cloud研习社」,带你从零开始掌握云计算技术!
微信号|bjdream-1
Cloud研习社 ·