Linux 工作管理

对于在同一个bash下进行的多个工作,这些工作所触发的进程都必须来自当前shell的子进程。在后台进行的进程不能等待前台shell的输入,即后台进程不能与用户互动。bash只能管理自己的工作而不能管理其他bash的工作。

一、命令丢到后台执行:&

在命令的结尾处添加一个 & ,即可将该命令扔到后台去执行,在后台执行的命令不能通过 [ctrl]+c 进行中断。

二、当前工作丢到后台暂停:[ctrl]+z

例如你正在进行 vi 操作,但同时也在不退出 vi 的情况下到 bash 环境中进行其它操作,此时可通过 [ctrl]+z 来将当前的 vi 工作扔到后台,扔到后台的当前工作处于暂停状态,直到你叫醒为止。

三、叫醒后台工作到前台执行:fg

[ctrl]+z 可以将前台的工作暂停到后台,那么如何将后台暂停的工作拿到前台来执行呢?通过 fg %<jobnumber> 命令即可,jobnumber为后台工作的工作号,每个后台工作都会有个工作号和进程号。

四、叫醒后台工作再后台执行:bg

fg 可以将后台工作拿到前台执行,那么如何让后台暂停的工作在后台执行呢?bg %<jobnumber>

五、管理后台工作:kill

常见后台工作的管理指杀死工作或者结束工作,kill -l 可先列出所有可用的管理选项,部分代码如下:

sggdev1:/export/local_home/sggusr/temp>kill -l
 1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL
 5) SIGTRAP      6) SIGABRT      7) SIGEMT       8) SIGFPE
 9) SIGKILL     10) SIGBUS      11) SIGSEGV     12) SIGSYS
13) SIGPIPE     14) SIGALRM     15) SIGTERM     16) SIGUSR1
17) SIGUSR2     18) SIGCHLD     19) SIGPWR      20) SIGWINCH

然后根据实际需要进行管理,kill -<signal> %<jobnumber>,signal既可以是数字也可以是字符,下面两个命令是等同的:

kill -9 %1
kill -SIGKILL %1

六、查看当前后台工作:jobs

jobs -[lrs]

-l:列出所有后台工作,除了job number 与命令之外,还包括PID信息
-r:仅列出正在后台执行的工作
-s:仅列出正在后台暂停的工作

sggdev1:/export/local_home/sggusr/temp>jobs -l
[1]-   444 Stopped (user)          vi catfile.txt
[2]+   445 Stopped (user)          vi catfile2.txt

中括号([])内为工作编号,即jobnumber。中括号后面的加号(+)代表最近被丢到后台的工作,减号(-)代表倒数第二个被丢到后台的工作,超过倒数第三个以后的工作没有+/-号。加减号后面为工作对应的PID。

posted @ 2012-07-25 16:17  zhenxu.liu  阅读(169)  评论(0编辑  收藏  举报