任务管理(job control)是用在bash环境下的,我们登录系统获取bash shell之后,任务管理可以帮助我们在单一终端下同时执行多个任务的操作管理;
    比如你登录bash之后可以一边复制文件一边查找文件,一边编译,一边在vim写文档。

    在执行任务管理的操作时,其实每个任务都是目前bash的子进程,彼此之间是相关性的,我们无法用任务管理的方式由tty1的环境去管理tty2的bash;

    在CentOS下可以登录六个终端(最多),所以理论上你当然也可以用不同的终端去执行不同的任务,无需使用什么任务管理,但是居安思危啊兄弟盟,万一有一天root就给了你一个tty就需要用到job control了;

    如果只用一个终端,我们把出现提示字符让你操作的环境称之为前台(foreground),至于其他的任务就要放入后台(background)去暂停或者运行,要放在后台的程序不能有与用户交互的部分,要不然给他扔background没人和他交互他很寂寞的;而且放到后台的任务是不可以用crtl+c来终止的;

    执行bash的任务管理时需要注意:
    这些任务所触发的进程必须来自你shell的子进程(只管理自己的bash)
    前台:可以控制与执行命令的这个环境成为前台的任务(foreground)
    后台:可以自动执行的任务,无法使用ctrl+c终止,可以使用bg,fg调用该任务
    后台中【执行】的进程不可以等待terminal或shell的输入

    job control的管理
    bash只能够管理自己的任务而不能管理其他的bash任务,所以你即使是root也不能将别人bash下面的job拿过来执行;
    命令:
    1.将命令扔到后台执行:&
    例:将/etc/备份为/tmp/etc.tar.gz,这个过程放到后台执行
    tar -zpcf /tmp/etc.tar.gz /etc &
    像这样在一条命令后面加一个&就可以把这条命令丢到后台执行,但是执行这个命令的提示字符仍旧会显示在屏幕上,此时最好使用重定向,把输出重定向到一个文件里,方便日后查询;

    2.将目前的任务丢到后台中暂停:ctrl -z
    例:在使用vim的过程中想要退出来,在vim的一般模式下按ctrl+z
    此时屏幕上会显示
    [1]+ stopped vim
    [1]表示这是第一个任务,+表示他是最近一个被丢到后台的任务,stopped表示目前这个任务的状态,最后则是任务的名称(倒数第二被丢到后台的任务有-修饰,倒数第三以及更以前的就没有了);

    将后台任务拿到前台处理:fg %任务号码(数字)
    请注意,百分号是可有可无的

    让任务在后台下的状态变成运行中:bg
    善用jobs观察任务的状态;

    管理后台当中的任务:kill
    kill -signal %jobnumber
    kill -l
    -l:列出当前可以使用的signal
    signal:-1,重新读取一次参数的配置文件;-2,代表由键盘输入[ctrl] -c同样的操作;-9:立刻强制删除一个任务;-15,以正常的方式终止一项任务,与-9不一样;
    需要注意的是kill 数字这种方式执行数字代表的是PID!!!!!!!!!
    任务号需要用%;

    关于暂停还有一条有用的命令:jobs [-lrs]
    -l表示出了列出job number与命令串之外,同时列出PID号码;
    -r仅列出正在后台run的任务
    -s仅列出正在后台中暂停的任务

    3.脱机管理
    我们这里提到的后台是bash后台而不是系统后台,因此退出bash之后放到bash后台的任务就没得了;

    /*
    最后,我觉得有必要了解一下tty这个概念
    使用linux的话,shell,tty,console,terminal这几个概念几乎逃不开….

    shell,英文含义就是壳,贝壳,总之就是在外层的一些东西,shell这个概念是相当于内核来讲的,内核会调度使用硬件,但是如果直接吧硬件暴露给所有用户的话随意操作会引发危险,所以由shell,把核心包裹起来,大家通过shell去拜托核心操作硬件完成任务;

    而tty,terminal,console这三个概念就比较模糊了

    terminal,直接翻译就是终端(其实航站楼其实好像也叫terminal),终端就是用来处理计算机输入输出的设备,但是根据具体使用的情况,终端大致分为四种:
    1.就是你电脑主机上连着的键盘和显示屏;
    2.使用串口的远程终端,把一个主机A用串口接到主机B上,在主机B上用虚拟终端操作主机A;
    3.用TCP/IP承载的远程终端;
    4.在图形界面下打开的命令行窗口;
    前两个叫做物理终端,因为是有物理连接存在的;而第三个叫做”伪终端”,请注意网卡并不与终端直接相关,所以第三类终端不能被称为物理终端;
    第四类是大家使用发行版linux(带桌面的那种)所接触到的终端,他也属于”伪终端”

    console,控制台,显示系统消息的终端就叫控制台;总之,控制台是终端的一个真子集;控制台是一个虚拟的终端;如果你使用没有安装桌面的linux 的话,一打开就是console

    目前linux已经弱化了终端和控制台的概念,把tty当成terminal就好;
    */