- 論壇徽章:
- 0
|
jobs
在后臺列出所有正在運(yùn)行的作業(yè),給出作業(yè)號.
注意: 進(jìn)程和作業(yè)的概念太容易混淆了.特定的內(nèi)建命令,比如kill,disown和wait即可以
接受一個(gè)作業(yè)號作為參數(shù)也可以接受一個(gè)作為參數(shù).但是fg,bg和jobs命令只能接受
作業(yè)號作為參數(shù).
bash$ sleep 100 &
[1] 1384
bash $ jobs
[1]+ Running sleep 100 &
注意: "1"是作業(yè)號(作業(yè)是被當(dāng)前shell所維護(hù)的),而"1384"是進(jìn)程號(進(jìn)程是被系統(tǒng)
維護(hù)的).為了kill掉作業(yè)/進(jìn)程,或者使用 kill %1命令或者使用kill 1384命令,
這兩個(gè)命令都可以.
wait
停止腳本的運(yùn)行,直到后臺運(yùn)行的所有作業(yè)都結(jié)束為止,或者直到指定作業(yè)號或進(jìn)程號為選
項(xiàng)的作業(yè)結(jié)束為止.
你可以使用wait命令來防止在后臺作業(yè)沒完成(這會(huì)產(chǎn)生一個(gè)孤兒進(jìn)程)之前退出腳本.
- 1 #!/bin/bash
- 2
- 3 ROOT_UID=0 # 只有$UID 為0的用戶才擁有root權(quán)限.
- 4 E_NOTROOT=65
- 5 E_NOPARAMS=66
- 6
- 7 if [ "$UID" -ne "$ROOT_UID" ]
- 8 then
- 9 echo "Must be root to run this script."
- 10 # "Run along kid, it's past your bedtime."
- 11 exit $E_NOTROOT
- 12 fi
- 13
- 14 if [ -z "$1" ]
- 15 then
- 16 echo "Usage: `basename $0` find-string"
- 17 exit $E_NOPARAMS
- 18 fi
- 19
- 20
- 21 echo "Updating 'locate' database..."
- 22 echo "This may take a while."
- 23 updatedb /usr & # 必須使用root身份來運(yùn)行.
- 24
- 25 wait
- 26 # 將不會(huì)繼續(xù)向下運(yùn)行,除非 'updatedb'命令執(zhí)行完成.
- 27 # 你希望在查找文件名之前更新database.
- 28
- 29 locate $1
- 30
- 31 # 如果沒有'wait'命令的話,而且在比較糟的情況下,
- 32 #+ 腳本可能在'updatedb'命令還在運(yùn)行的時(shí)候退出,
- 33 #+ 這將會(huì)導(dǎo)致'updatedb'成為一個(gè)孤兒進(jìn)程.
- 34
- 35 exit 0
復(fù)制代碼
wait 也可以接受一個(gè)作業(yè)標(biāo)識符作為參數(shù),比如,wait %1或wait $PPID.見"作業(yè)標(biāo)識
符表".
[ 本帖最后由 smallstar001 于 2008-12-4 16:13 編輯 ] |
|