• Linux_控制作业(管理)


    一、作业控制

    1、作业控制与回话

    1️⃣:作业控制是shell的一种功能,它允许单个shell实例运行和管理多个命令

    2️⃣:作业与在sehll提示符中输入的每个管道相关联、该管道中的所有进程均是作业的一部分,并且是同一个进程组的成员

    3️⃣:如果在shell提示符中仅输入了一条命令,则这条命令可视为命令的最小管道;该命令将是该作业的唯一成员

    4️⃣:一次只能有一个作业从特定终端窗口读取输入和键盘生成的信号。属于该作业的进程是该控制终端的前台进程

    2、作业分类

    1️⃣:前台作业:通过终端启动,且启动后一直占据了命令提示符

    2️⃣:后台作业:可以通过终端启动,但启动之后,释放命令提示符,后续的操作在后台完成

    •   此类作业虽然被送往后台运行,但其依然与终端相关。如果希望送往后台后,剥离与终端的关系需要执行(nohup COMMAND &)

    3、后台运行作业演示

     //在命令后跟上&符号可以生成一个后台作业
    [root@localhost ~]# sleep 1000 &
    [1] 2247
    [root@localhost ~]# jobs 
    [1]+  运行中               sleep 1000 &
       // jobs命令用于显示当前所有的后台作业
    

    4、fg —— 将后台作业调至前台运行

    [root@localhost ~]# sleep 1000 &
    [1] 2284
    [root@localhost ~]# jobs 
    [1]+  运行中               sleep 1000 &
    [root@localhost ~]# fg
    sleep 1000
     //光标会在这一行卡主,直到超过1000秒;
     //当只有一个后台作业时,直接使用fg命令,不跟任何参数即可将后台作业调至前台运行
    
    //当有多个后台作业时,必须加上%num(num是每个后台作业的编号,也就是[]中的数字)
    [root@localhost ~]# sleep 1000 &
    [1] 2313
    [root@localhost ~]# sleep 1100 &
    [2] 2314
    [root@localhost ~]# sleep 1200 &
    [3] 2316
    [root@localhost ~]# jobs 
    [1]   运行中               sleep 1000 &
    [2]-  运行中               sleep 1100 &
    [3]+  运行中               sleep 1200 &
    [root@localhost ~]# ps -ef | grep sleep
    root       2313   2084  0 10:40 pts/2    00:00:00 sleep 1000
    root       2314   2084  0 10:40 pts/2    00:00:00 sleep 1100
    root       2316   2084  0 10:40 pts/2    00:00:00 sleep 1200
    root       2318   2084  0 10:41 pts/2    00:00:00 grep --color=auto sleep
        // 现在我想让第二个sleep放到前台运行
    [root@localhost ~]# fg %2
    sleep 1100
    
     //如果多个后台作业,不加参数,直接用fg就直接调取最后一个作业到前台运行
    [root@localhost ~]# jobs 
    [1]   运行中               sleep 1000 &
    [2]-  运行中               sleep 1100 &
    [3]+  运行中               sleep 1200 &
    [root@localhost ~]# fg
    sleep 1200
    

    5、Ctrl+z —— 将前台作业放到后台运行

     //使用ctrl+z可将前台进程发送到后台,此时作业将处于停止状态
    [root@localhost ~]# sleep 1000 &
    [1] 2345
    [root@localhost ~]# jobs 
    [1]+  运行中               sleep 1000 &
    [root@localhost ~]# fg 
    sleep 1000
    ^Z     // 此处按ctrl+z
    [1]+  已停止               sleep 1000
    [root@localhost ~]# jobs 
    [1]+  已停止               sleep 1000
    

    6、bg  —— 使后台已停止的作业重新运行

    [root@localhost ~]# jobs 
    [1]+  已停止               sleep 1000
    [root@localhost ~]# bg 
    [1]+ sleep 1000 &
    [root@localhost ~]# jobs 
    [1]+  运行中               sleep 1000 &
    
     //当有多后台作业的时候,需要使用bg+%num(num是后台作业的编号,也就是[]中的数字)
    [root@localhost ~]# jobs 
    [1]   运行中               sleep 1000 &
    [2]-  已停止               sleep 1100
    [3]+  已停止               sleep 1200
    [root@localhost ~]# bg %2
    [2]- sleep 1100 &
    [root@localhost ~]# jobs
    [1]   运行中               sleep 1000 &
    [2]-  运行中               sleep 1100 &
    [3]+  已停止               sleep 1200
    
     //如果不加参数,只是使用bg,那么久从后往前逐一将后台停止的作业重新运行
    [root@localhost ~]# jobs
    [1]   已停止               sleep 1000
    [2]-  已停止               sleep 1100
    [3]+  已停止               sleep 1200
    [root@localhost ~]# bg
    [3]+ sleep 1200 &
    [root@localhost ~]# bg
    [2]+ sleep 1100 &
    [root@localhost ~]# bg
    [1]+ sleep 1000 &
    

    7、终止后台作业

     //kill加上作业号可以手动杀死指定作业
    [root@localhost ~]# jobs 
    [1]   运行中               sleep 1000 &
    [2]   运行中               sleep 1100 &
    [3]+  已停止               sleep 1200
    [4]-  已停止               sleep 1300
    [root@localhost ~]# kill %1
    [root@localhost ~]# kill %2
    [root@localhost ~]# jobs
    [3]+  已停止               sleep 1200
    [4]-  已停止               sleep 1300
    
     //将后台作业放到前台,按Ctrl+c终止作业任务
    [root@localhost ~]# jobs
    [3]-  运行中               sleep 1200 &
    [4]+  已停止               sleep 1300
    [root@localhost ~]# fg %3
    sleep 1200
    ^C       //在这按Ctrl+c
    [root@localhost ~]# jobs
    [4]+  已停止               sleep 1300
    [root@localhost ~]# fg %4
    sleep 1300
    ^C       //这里也是一样,按CTRL+c
    [root@localhost ~]# jobs
    [root@localhost ~]# 
    

    8、jobs命令的结果

    •   +     //命令将默认操作的作业
    •        -      //命令将第二个默认操作的作业
  • 相关阅读:
    hdu 2203 亲和串
    hdu 3999 The order of a Tree
    poj 2299 Ultra-QuickSort
    hdu 1908 Double Queue
    hdu 1556 Color the ball
    hdu 4288 Coder
    hdu 5265 pog loves szh II
    hdu 5058 So easy
    T103763 【模板】矩阵乘法
    T103492 【模板】点双连通分量
  • 原文地址:https://www.cnblogs.com/itwangqiang/p/13456870.html
Copyright © 2020-2023  润新知