轻松学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