工作管理概述
工作管理指的是在單個(gè)登錄終端中(也就是登錄的shell界面中) 同時(shí)管理多個(gè)工作的行為。windows將工作放入后臺(tái)是最小化即可,linux則需要使用相關(guān)命令操作。
通過(guò)工作管理我們可以將一些需要持續(xù)運(yùn)行的命令或者說(shuō)服務(wù)以及一些可能阻塞當(dāng)前終端操作的命令放在后臺(tái)運(yùn)行或者暫停,然后也可以對(duì)后臺(tái)運(yùn)行的工作進(jìn)行查看,對(duì)暫停的工作進(jìn)行恢復(fù)。
注意事項(xiàng)
- 當(dāng)前的登錄終端,只能管理當(dāng)前終端的工作,而不能管理其他登錄終端的工作。當(dāng)然有些服務(wù)除外,比如mysql服務(wù)自己做了優(yōu)化可以脫離終端,即使關(guān)閉當(dāng)前終端,也不會(huì)停止服務(wù)
- 放入后臺(tái)的命令必須可以持續(xù)運(yùn)行一段時(shí)間,這樣我們才能撲捉和操作這個(gè)工作
- 放入后臺(tái)執(zhí)行的命令不能和前臺(tái)用戶有交互或需要前臺(tái)輸入,否則放入后臺(tái)只能暫停,而不能執(zhí)行
相關(guān)說(shuō)明
- 比如像
ls、cat命令這種瞬時(shí)運(yùn)行的命令是不允許放入后臺(tái)的命令 - 一般諸如打包,復(fù)制大文件,壓縮與解壓縮,搜索命令
find都可以放入后臺(tái)執(zhí)行 - 像
top命令是為了展示結(jié)果給前端用戶的,而vim命令是需要前臺(tái)輸入的,諸如這些命令運(yùn)行在后臺(tái)
是沒(méi)有任何意義的。即使通過(guò)命令將它們運(yùn)行在后臺(tái),也是stop狀態(tài)。
工作管理方法
把進(jìn)程放入后臺(tái)
通過(guò) & 符號(hào) 或者 ctrl + z,以tar命令為例:
tar -zcf redis1.tar.gz & #把命令放入后臺(tái),并在后臺(tái)執(zhí)行
tar -zcf redis2.tar.gz #按下ctr+z快捷鍵,放在后臺(tái)暫停
查看后臺(tái)的工作
jobs [-l] # -l代表顯示工作的PID
"+" 號(hào)代表最后一個(gè)放入后臺(tái)的工作,也是工作恢復(fù)時(shí),默認(rèn)恢復(fù)的工作
"-" 號(hào)代表倒數(shù)第二個(gè)放入后臺(tái)的工作,第三個(gè)工作就不會(huì)有符號(hào)顯示
[1] 這里的1代表工作號(hào)

將后臺(tái)暫停的工作恢復(fù)到前臺(tái)執(zhí)行
fg %工作號(hào)
注: %號(hào)可以省略,但是注意工作號(hào)和PID的區(qū)別,不帶參數(shù)默認(rèn)恢復(fù)"+"號(hào)的工作
將后臺(tái)暫停的工作恢復(fù)到前臺(tái)執(zhí)行
bg %工作號(hào)
后臺(tái)恢復(fù)執(zhí)行的命令,是不能和前臺(tái)有交互的,否則不能恢復(fù)到后臺(tái)執(zhí)行,不帶參數(shù)默認(rèn)恢復(fù)"+"號(hào)的工作

后臺(tái)命令脫離終端運(yùn)行
把命令放入后臺(tái),只能在當(dāng)前登錄終端執(zhí)行。一旦退出或關(guān)閉終端,后臺(tái)程序就會(huì)停止。原因是一旦關(guān)閉終端,系統(tǒng)會(huì)默認(rèn)發(fā)出一個(gè)SIGHUP信號(hào),把正在運(yùn)行的后臺(tái)程序給終止掉。其實(shí)可以通過(guò)將程序做成守護(hù)進(jìn)程來(lái)避免終端的影響,但是操作和管理過(guò)于復(fù)雜
脫離終端常用方法
- 把需要后臺(tái)執(zhí)行的命令加入
/etc/rc.local文件(推薦) - 使用系統(tǒng)定時(shí)任務(wù),讓系統(tǒng)在指定的時(shí)間執(zhí)行某個(gè)后臺(tái)命令
- 標(biāo)準(zhǔn)方法是使用nohup命令(推薦):
nohup [命令] &
舉個(gè)例子
vim for.sh
# 文件內(nèi)容如下
#!/bin/bash
for((i=0;i<=1000;i=i+1)){
do
echo 11 >> /root/for.log
sleep 10s
done
}
# 保存退出
nohup /root/for.sh &
# 關(guān)閉當(dāng)前終端,重新打開(kāi)一個(gè)終端,查看該進(jìn)程依然存在:ps -aux