进程管理之工作管理详解(job control)

进程管理之工作管理详解(job control)


1 什么是工作管理(job control)

  我们知道linux是多任务多终端工作的操作系统。我们可以在多个终端进行工作,也可以在一个终端进行多个任务工作。那在一个终端同时进行多个工作任务,就称为工作管理。比如这种情况,在一个终端,你想要复制文件,同时你还想压缩打包文件,甚至你还想编辑文件,这个时候就要用到工作管理。工作管理的情况,大概是这样的。直接上图。

进程管理之工作管理详解(job control)

  首先,你要明白前台,后台的概念。前台就是当前我们登陆shell操作的终端,我们与之交互,看得见,摸得着得终端。后台就是与用户不用交互的操作环境。我们可以将执行的命令放入后台便不用再手动管理,能够自动完成任务。

  前台运行(Forebackground):将工作进程放入与用户交互的终端运行。
  后台运行(Running):将工作进程放入不再与用户交互的后台运行。
  后台暂停(Stopped):工作进程暂停状态。
  完成(Done):工作完成。
  终止(terminated):工作进程被终止。 

2  如何进行工作管理

        2.1 直接将指令放到后台执行:&

[root@big backup]# tar -zpcf /apps/backup/etc.tar.gz &>/apps/backup/backup.log /etc &
[1] 6798                    #第一步:打包并压缩/etc目录
                            #第二步:将标准输出流写入文件
                            #第三步:&将工作放入后台     
[root@big backup]# jobs     #job 查看工作状态为Running,即后台运行                   
[1]+  Running                 tar -zpcf /apps/backup/etc.tar.gz /etc &>/apps/backup/backup.log &
[root@big backup]# jobs -l  #job -l 还可以查看工作进程的PID 
[1]+  6798 Running                 tar -zpcf /apps/backup/etc.tar.gz /etc &>/apps/backup/backup.log &
[root@big backup]# jobs -l  #再次查看,发现工作状态Done,即结束状态,工作完成
[1]+  6798 Done                    tar -zpcf /apps/backup/etc.tar.gz /etc &>/apps/backup/backup.log
解析:
        & 放入后台命令
        jobs -l 可查看四个内容:工作号 PID 工作状态 工作命令
        [1]+     工作号,+号表示第一个工作
        6798     进程IP(pid)
        Done     工作进程完成
        tar...   工作命令

2.2 将在前台进行的工作放入后台暂停(Stopped):(command+(ctrl+z))

[root@big backup]# tar -zpcf /tar -zpcf /apps/backup/etc.tar.gz  /etc         #打包压缩命令
tar: Removing leading `/' from member names
^Z                                                #ctrl+z 将前台工作进程放入暂停状态
[1]+  Stopped                 tar -zpcf /apps/backup/etc.tar.gz /etc
[root@big backup]# jobs -l                        #查看工作信息
[1]+  7214 Stopped                 tar -zpcf /apps/backup/etc.tar.gz /et    #Stopped 表示后台暂停

2.3 将后台工作放入前台运行:fg

[root@big backup]# jobs -l                        #查看工作信息
[1]+  7214 Stopped                 tar -zpcf /apps/backup/etc.tar.gz /et
[root@big backup]# fg %1            #将工作放入前台运行
tar -zpcf /apps/backup/etc.tar.gz /etc

2.4 将后台暂停工作(Stopped)放入后台运行(Running):bg

[root@big backup]# bg %1;jobs -l        #将工作号为1的工作放入后台运行,并且查看工作信息
[1]+ tar -zpcf /apps/backup/etc.tar.gz /etc &
[1]+  7434 Running                 tar -zpcf /apps/backup/etc.tar.gz /etc &
[root@big backup]# jobs -l              #再次查看工作状态:Done,即完成。
[1]+  7434 Done                    tar -zpcf /apps/backup/etc.tar.gz /etc

2.5 kill命令管理工作

  很多人常常会把kill当作杀进程的命令,其实这样理解是不对的,kill命令的作用远远不止如此。kill更像是一种发送信号的命令,通过发送信号,告诉进程下一步该干什么。我们可以通过(kill -l)来查看kill支持的信号。在这我仅介绍四种与工作管理相关的信号。

[root@big backup]# kill -l
 1) SIGHUP     2) SIGINT     3) SIGQUIT    4) SIGILL     5) SIGTRAP
 6) SIGABRT    7) SIGBUS     8) SIGFPE     9) SIGKILL   10) SIGUSR1
11) SIGSEGV    12) SIGUSR2    13) SIGPIPE    14) SIGALRM    15) SIGTERM
16) SIGSTKFLT  17) SIGCHLD    18) SIGCONT    19) SIGSTOP    20) SIGTSTP
21) SIGTTIN    22) SIGTTOU    23) SIGURG 24) SIGXCPU    25) SIGXFSZ
26) SIGVTALRM  27) SIGPROF    28) SIGWINCH   29) SIGIO  30) SIGPWR
31) SIGSYS 34) SIGRTMIN   35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10    45) SIGRTMIN+11    46) SIGRTMIN+12    47) SIGRTMIN+13
48) SIGRTMIN+14    49) SIGRTMIN+15    50) SIGRTMAX-14    51) SIGRTMAX-13    52) SIGRTMAX-12
53) SIGRTMAX-11    54) SIGRTMAX-10    55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX   
解析:四种常用的信号以及用法实例
     9) SIGKILL 强制杀死正在运行的进程
    15) SIGTERM 正常终止正在运行的进程
    18) SIGCON  继续运行,相当于bg
    19) SIGSTOP 后台暂停,进入后台暂停状态(Stopped)
    
实例:
    [root@big apps]#  tar -zcf /apps/tmp.tar.gz / &>/apps/tmp.log &    #将打包压缩工作进程放入后台
    [1] 8482
    [root@big apps]# jobs -l                                           #查看工作进程信息
    [1]+  8482 Running                 tar -zcf /apps/tmp.tar.gz / &
    [root@big apps]# kill -19 %1                                       #将第一个工作放入后台暂停
    [1]+  Stopped                 tar -zcf /apps/tmp.tar.gz /
    [root@big apps]# jobs -l                                           #查看工作进程信息
    [1]+  8482 Stopped (signal)        tar -zcf /apps/tmp.tar.gz / 
    [root@big apps]# kill -18 %1;jobs -l                               #将第一个工作放入后台运行
    [1]+  8482 Running                 tar -zcf /apps/tmp.tar.gz / &
    [root@big apps]# jobs -l
    [1]+  8482 Running                 tar -zcf /apps/tmp.tar.gz / &
    [root@big apps]# kill -15 %1                                       #正常终止工作
    [root@big apps]# jobs -l                                           #工作状态Teminated,终止。
    [1]+  8482 Terminated              tar -zcf /apps/tmp.tar.gz /
    [root@big apps]# jobs -l                                           #再次查看后台没有工作进程
解析:
    通过以上实例分析,可得知(kill -19 )可将后台运行的工作进程放入后台暂停
    通过以上实例分析,可得知(kill -18 )可将后台暂停的工作进程放入后台运行
    通过以上实例分析,可得知(kill -15 )可将后台运行的工作进程正常终止

2.6 脱机管理工作进程:nohup

  前面提到的工作管理都依赖于终端。一旦终端关闭,正在运行的或者是后台暂停的工作都会终止。那有没有办法,使我们执行的命令脱离终端的限制,也就是当我关闭了当前的终端,原先执行的命令会仍然继续运行。答案是:当然有,那就是给力的nohup命令。

格式:nohup command &

终端pts/0
[root@big apps]# nohup ping 10.0.0.1 &>/dev/null &            #使用nohup离线模式执行ping命令
[1] 8910
[root@big apps]# jobs -l                                      #查看后台工作状态
[1]+  8910 Running                 nohup ping 10.0.0.1 &>/dev/null &
[root@big apps]# exit                                         #退出当前终端
logout
Connection closed by foreign host.
Disconnected from remote host( 7.3 10.0.0.73) at 14:23:18.
终端pts/1
[root@big ~]# ps aux | grep ping                            #另一终端搜索ping工作进程
root       8910  0.0  0.1 127912  1228 ?        S    14:22   0:00 ping 10.0.0.1
root       8932  0.0  0.0 112648   960 pts/1    S+   14:23   0:00 grep --color=auto ping
[root@big ~]# kill 8910                                     #正常终止ping工作进程
[root@big ~]# ps aux | grep ping                            #查看进程是否被终止
root       8973  0.0  0.0 112648   960 pts/1    S+   14:25   0:00 grep --color=auto ping
解析:
    pts/0使用nohup command & 离线模式执行命令
    在另一终端pts/1 查看ping工作进程,发现ping工作进程正在运行,由此证明nohup执行命令可脱离终端
    正常终止ping进程,验证是否终止
    实验到此结束

3  总结

      好了,现在让我们通过下图回顾一下工作管理用到的命令。

进程管理之工作管理详解(job control)

作者:Michael Hu
时间:2017/05/14

原创文章,作者:PowerMichael,如若转载,请注明出处:http://www.178linux.com/75525

(0)
PowerMichaelPowerMichael
上一篇 2017-05-14 11:20
下一篇 2017-05-14 16:03

相关推荐

  • 第七周

    第七周 1 创建一个10G分区,并格式为ext4文件系统;    (1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl;    (2) 挂载至/data/mydata目录,要求挂载时禁止程序自动…

    Linux干货 2017-02-20
  • 马哥教育网络班第19期+第8周课程练习

    1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。 网桥:一种网路装置,负责网路桥接,将网络的多个网段在数据链路层连接起来。 集线器:将多条以太网线或光纤集合连接在同一段物理介质下的装置。工作在物理层。 二层交换机:工作在数据链路层,交换机内部的CPU会在每个端口成功连接时,通过将MAC地址和端口对应,形成一张MAC表。在今后的通…

    Linux干货 2016-08-22
  • N25-第一周 总结

    linux bassic The first week of blogging 概要 计算机与操作系统、linux发行版及他们之间联系与区别、Linux的哲学思想、linux系统上命令使用格式及基础命令介绍、linux命令帮助说明、FHS 一、计算机与操作系统 什么是计算机? 电子计算机(computer),亦称电脑,是一种利用电子学原理,根据一系列指令对数…

    Linux干货 2016-12-04
  • 计算机网络基础

    1、OSI, TCP/IP, 五层协议的体系结构, 以及各层协议 OSI分层(7层): 物理层, 数据链路层, 网络层, 传输层, 会话层, 表示层, 应用层 TCP/IP分层(4层): 网络接口层, 网际层, 传输层, 应用层 五层协议(5层): 物理层, 数据链路层, 网络层, 运输层, 应用层 每一层的协议: 物理层: RJ45, CLOCK, IEE…

    Linux干货 2016-09-19
  • 18页PPT带你深度解读运维自动化

    一、概述    在前面的文章中,提到【运维的本质—可视化】,在其中着重强调是自动化的可视化和数据化的可视化。在这个文章中,全面解码看看自动化的极致状态为什么是可视化?在前面的另外一篇文章【运维平台全体系介绍】中,也讲到运维平台体系的构成,提出“**及服务”的理念,其中有几部分和自动化密切相关,比如说资源及服务、配置及服务、架构…

    2015-04-03
  • CentOS7 实现网卡绑定

    Bonding ;理念 将多块网卡绑定同一IP地址对外提供服务,可以实现高可用 或者负载均衡。直接给两块网卡设置同一IP地址是不可以的 。通过bonding,虚拟一块网卡对外提供连接,物理网卡的 被修改为相同的MAC地址 banding工作模式 Mode 0 (balance-rr) 轮转(Round-robin)策略: 从头到尾顺序的在每一个slave 接…

    2017-12-19