zoukankan      html  css  js  c++  java
  • 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命令的结果

    •   +     //命令将默认操作的作业
    •        -      //命令将第二个默认操作的作业
  • 相关阅读:
    BZOJ2821 作诗(Poetize) 【分块】
    BZOJ2724 蒲公英 【分块】
    Codeforces 17E Palisection 【Manacher】
    BZOJ2565 最长双回文串 【Manacher】
    Codeforces 25E Test 【Hash】
    CODEVS3013 单词背诵 【Hash】【MAP】
    HDU2825 Wireless Password 【AC自动机】【状压DP】
    HDU2896 病毒侵袭 【AC自动机】
    HDU3065 病毒侵袭持续中【AC自动机】
    HDU2222 Keywords Search 【AC自动机】
  • 原文地址:https://www.cnblogs.com/itwangqiang/p/13456870.html
Copyright © 2011-2022 走看看