Linux的工做管理 job control快速入门

轻松学Linux:
linux


   job control就是 让Linux在一个bash中能够执行多个工做,其实就是bash中的多个子进程的工做.vim

   这时候就有疑问了?  linux不是自带了 7个终端窗口么  在这里面执行多个工做不就能够了么,安全

是的,能够 ,
bash

      alt1-6 是六个命令行终端, 能够互相切换
ide

      alt+7 图形界面终端 ,(ctrl+alt+f1切回到 linux命令行终端)spa


问题来了: 在一些对安全比较严谨的公司,都会限制用户的登陆链接数(/etc/security/limits.conf)中设置, 用户只能链接一个链接数,此时job control就有效了,!命令行


   job control 分为  前台 foregroud  和 后台  background进程


 例子:
it

  

 # tar -zpcf /tmp/etc.tar.gz /etc &
[1] 8400  <== [job number] PID  
# tar: Removing leading `/' from member names 
# 在中括号内的号码为工做号码 (job number),该号码与 bash 的控制有关。
# 后续的 8400 则是这个工做在系统中的 PID。至於后续出现的数据是 tar 运行的数据流,
# 由於咱们没有加上数据流重导向,因此会影响画面!不过不会影响前景的操做喔!


 

[root@www ~]# tar -zcvf /tmp/etc.tar.gz /etc > /tmp/log.txt 2>&1 &
[1] 8429
[root@www ~]#

 

呵呵!如此一来,输出的资讯都给他传送到 /tmp/log.txt 当中,固然就不会影响到咱们前景的做业了。 这样说,您应该能够更清楚数据流重导向的重要性了吧!^_^ 
[root@www ~]# jobs [-lrs]选项与参数:
-l  :除了列出 job number 与命令串以外,同时列出 PID 的号码;
-r  :仅列出正在背景 run 的工做;
-s  :仅列出正在背景当中暂停 (stop) 的工做。范例一:观察目前的 bash 当中,全部的工做,与对应的 PID[root@www ~]# jobs -l[1]- 10314 Stopped                 vim ~/.bashrc
[2]+ 10833 Stopped                 find / -print
调用后台的工做 fg   fg+number便可


 

   jobs 查看当前有多少工做table

   fg %number  将后台工做提到前台

   vi log.txt

   ctrl+z后  会放到后台,可是状态是stop的

  bg  %number   让后台中止的工做在后台变为running状态


  管理后台的工做 kill  -singal

   singal:

    1  从新读取一次配置文件

    2  至关于ctrl+c

   9    强制终止   好比vi log.txt   强制终止后会产生一个.swp文件

   15  正常终止 


kill后面能够跟pid  也能够跟工做管理  默认是pid 因此咱们要管理job control的时候 最好

是  kill -?  %number



  &后台执行后 可是你退出终端 后台执行的脚本也会中止

 例子:

   vim  sleep.sh

#!/bin/bash

/bin/sleep 500s

/bin/echo "I have sleept 500s"


#chmod +x sleep.sh


nohup命令可让后台中的工做 在终端退出从新登陆后还在运行


nohup  ./sleep.sh  > /test/log.txt  2>&1  &

# exit


从新登陆后 jobs已经不能使用

ps -ef |grep sleep  查看相关进程还在



ps 用法:


-e 显示全部进程。

-f 全格式。

-h 不显示标题。

-l 长格式。

-w 宽输出。

a 显示终端上的全部进程,包括其余用户的进程。

r 只显示正在运行的进程。


 u  以用户为主的格式来显示程序情况。


x 显示全部程序,不以终端机来区分。


经常使用的

  ps  -l

  ps -ef

  ps -aux

相关文章
相关标签/搜索