- 论坛徽章:
- 0
|
jobs
在后台列出所有正在运行的作业,给出作业号.
注意: 进程和作业的概念太容易混淆了.特定的内建命令,比如kill,disown和wait即可以
接受一个作业号作为参数也可以接受一个作为参数.但是fg,bg和jobs命令只能接受
作业号作为参数.
bash$ sleep 100 &
[1] 1384
bash $ jobs
[1]+ Running sleep 100 &
注意: "1"是作业号(作业是被当前shell所维护的),而"1384"是进程号(进程是被系统
维护的).为了kill掉作业/进程,或者使用 kill %1命令或者使用kill 1384命令,
这两个命令都可以.
wait
停止脚本的运行,直到后台运行的所有作业都结束为止,或者直到指定作业号或进程号为选
项的作业结束为止.
你可以使用wait命令来防止在后台作业没完成(这会产生一个孤儿进程)之前退出脚本.
- 1 #!/bin/bash
- 2
- 3 ROOT_UID=0 # 只有$UID 为0的用户才拥有root权限.
- 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身份来运行.
- 24
- 25 wait
- 26 # 将不会继续向下运行,除非 'updatedb'命令执行完成.
- 27 # 你希望在查找文件名之前更新database.
- 28
- 29 locate $1
- 30
- 31 # 如果没有'wait'命令的话,而且在比较糟的情况下,
- 32 #+ 脚本可能在'updatedb'命令还在运行的时候退出,
- 33 #+ 这将会导致'updatedb'成为一个孤儿进程.
- 34
- 35 exit 0
复制代码
wait 也可以接受一个作业标识符作为参数,比如,wait %1或wait $PPID.见"作业标识
符表".
[ 本帖最后由 smallstar001 于 2008-12-4 16:13 编辑 ] |
|