zoukankan      html  css  js  c++  java
  • 【Linux】工作管理

    • 在进行工作管理的行为中,其实每个工作都是目前bash的子进程,即彼此间是有相关性的。我们无法以job control的方式由tty1的环境去管理tty2的bash
    • 当只有一个终端时,可以出现提示符让你操作的环境就称为前台(foreground),至于其他工作就可以让你放入后台(background)去暂停或运行。要注意的是,放入后台的工作想要运行时,它必须不能够与用户互动。举例来说,vim绝对不可以在后台里面执行(running)。因为你没有输入数据它就不会跑。而且放入后台的工作是不可以使用[ctrl]+c来终止的。总之,要进行bash的job control 必须要注意到的限制是:
    • 这些工作所触发的进程必须来自于你shell的子进程(只管理自己的bash);
    • 前台:你可以控制与执行命令的这个环境称为前台(foreground)的工作;
    • 后台:可以自己运行的工作,你无法使用[ctrl]+c终止它,可使用bg/fg调用该工作;
      后台中『执行』的进程不能等待terminal/shell的输入(input)

    实际运行job控制的命令

    直接将命令丢到后台中『执行』的&
    $tar -rpcf /tmp/etc.tar.gz /etc &
    [1] 8400 <== [job number]/PID
    #在中括号内的号码为工作号码(job number),该号码与bash的控制有关
    #后续的8400则是这个工作在系统中的PID
    
    • 在输入一个命令后,在该命令的最后面加上一个『&』代表将该命令丢到后台中,此时bash会给予这个命令一个"工作号码"(job number),就是那个[1]。至于后面那个8400则是该命令所触发的PID了。
    • 如果输入几个命令后,突然出现如下数据
    [1]+ Done tar -rpcf /tmp/etc.tar.gz /etc
    

    就代表这个[1]工作已经完成了。

    将目前工作丢到后台中『暂停』:[ctrl]+z
    • 按下[ctrl]+z后,屏幕上会出现如下[1]+ Stopped command[1]表示这是第一个工作。而那个+代表最近一个被丢进后台的工作,且目前在后台默认会被取用的那个工作(与fg这个命令有关)。而那个Stopped则代表目前这个工作的状态。在默认状态下,使用[ctrl]+z丢到后台中的工作都是「暂停」的。
    查看目前的后台工作状态:jobs
    $jobs [-lrs]
    参数:
    -l:除了列出job number与命令串之外,同时列出PID的好吗
    -r:仅列出正在后台run的工作
    -s:仅列出正在后台当中暂停(stop)的工作
    
    查看目前的bash当中,所有的工作,与对应的PID
    
    
    • 用jobs这个命令可以查看后台中的工作,如果想要知道该job number的PID号码,可以加上-l这个参数。在输出的信息当中,有些任务号码后会有+-号码,+号代表最近被放到后台的工作号码,-代表最近最后第二个被放置到后台中的工作号码。而超过最后第三个以后的工作,就不会有+/-符号的存在了。
    将后台工作拿到前台来处理:fg

    fg %jobnumber
    参数:
    %jobnumber:jobnumber为工作号码(数字)。注意,那个%是可有可无的。

    先以jobs查看工作,再将工作取出
    $jobs
    [1]- 10314 Stopped vim ~/.bashrc
    [2]+ 10833 Stopped  find / -print
    $fg <==默认取出那个+的工作,即[2]
    $fg %1 <==直接规定取出的那个工作号码!
    
    让工作在后台的状态变成运行中:bg
    • bg %jobnumber将jobnumer的工作在后台启用
  • 相关阅读:
    Educational Codeforces Round 85 D. Minimum Euler Cycle(模拟/数学/图)
    Educational Codeforces Round 85 C. Circle of Monsters(贪心)
    NOIP 2017 提高组 DAY1 T1小凯的疑惑(二元一次不定方程)
    Educational Codeforces Round 85 B. Middle Class(排序/贪心/水题)
    Educational Codeforces Round 85 A. Level Statistics(水题)
    IOS中的三大事件
    用Quartz 2D画小黄人
    strong、weak、copy、assign 在命名属性时候怎么用
    用代码生成UINavigationController 与UITabBarController相结合的简单QQ框架(部分)
    Attempting to badge the application icon but haven't received permission from the user to badge the application错误解决办法
  • 原文地址:https://www.cnblogs.com/vincently/p/6719053.html
Copyright © 2011-2022 走看看