alan@workstation:~$echo$PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
WHICH
使用 which 命令查看可執(zhí)行文件的完整路徑。
alan@workstation:~$which nginx
/opt/nginx/bin/nginx
我將使用流行的 web 服務(wù)器軟件 Nginx 作為我的例子。假設(shè)安裝了 Nginx。如果執(zhí)行 which nginx 的命令什么也不返回,那么是找不到 Nginx 了,因?yàn)樗凰阉髂付ǖ目蓤?zhí)行路徑。有三種方法可以補(bǔ)救一個(gè)進(jìn)程不能簡(jiǎn)單地通過(guò)名字啟動(dòng)的情況。首先是鍵入完整路徑 —— 雖然,我不情愿輸入全部路徑,您會(huì)嗎?
alan@workstation:~$/home/alan/web/prod/nginx/sbin/nginx-v
nginx version: nginx/1.14.0
第二個(gè)解決方案是將應(yīng)用程序安裝在可執(zhí)行文件路徑中的目錄中。然而,這有時(shí)可能是辦不到的,特別是如果您沒(méi)有 root 權(quán)限。
PATH="$HOME/web/prod/nginx/sbin:$PATH"
現(xiàn)在,重復(fù)您的 echo 和 which 命令或者嘗試檢查版本。容易多了!
alan@workstation:~$echo$PATH
/home/alan/web/prod/nginx/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
alan@workstation:~$which nginx
/home/alan/web/prod/nginx/sbin/nginx
alan@workstation:~$nginx-v
nginx version: nginx/1.14.0
保持進(jìn)程運(yùn)行
NOHUP
注銷或關(guān)閉終端時(shí),進(jìn)程可能不會(huì)繼續(xù)運(yùn)行。這種特殊情況可以通過(guò)在要使用 nohup 命令放在要運(yùn)行的命令前面讓進(jìn)程持續(xù)運(yùn)行。此外,附加一個(gè)& 符號(hào)將會(huì)把進(jìn)程發(fā)送到后臺(tái),并允許您繼續(xù)使用終端。例如,假設(shè)您想運(yùn)行 myprogram.sh 。
nohup myprogram.sh &
nohup 會(huì)返回運(yùn)行進(jìn)程的 PID。接下來(lái)我會(huì)更多地談?wù)?PID。
管理正在運(yùn)行的進(jìn)程
每個(gè)進(jìn)程都有一個(gè)唯一的進(jìn)程標(biāo)識(shí)號(hào) (PID) 。這個(gè)數(shù)字是我們用來(lái)管理每個(gè)進(jìn)程的。我們還可以使用進(jìn)程名稱,我將在下面演示。有幾個(gè)命令可以檢查正在運(yùn)行的進(jìn)程的狀態(tài)。讓我們快速看看這些命令。
PS
最常見(jiàn)的是 ps 命令。ps 的默認(rèn)輸出是當(dāng)前終端中運(yùn)行的進(jìn)程的簡(jiǎn)單列表。如下所示,第一列包含 PID。
alan@workstation:~$ps
PID TTYTIME CMD
23989pts/000:00:00bash
24148pts/000:00:00ps
我想看看我之前啟動(dòng)的 Nginx 進(jìn)程。為此,我告訴 ps 給我展示每一個(gè)正在運(yùn)行的進(jìn)程(-e)和完整的列表(-f)。
您可以在上面 ps 命令的輸出中看到 Nginx 進(jìn)程。這個(gè)命令顯示了將近 300 行,但是我在這個(gè)例子中縮短了它?梢韵胂螅噲D處理 300 行過(guò)程信息有點(diǎn)混亂。我們可以將這個(gè)輸出輸送到 grep,過(guò)濾一下僅顯示 nginx。
確實(shí)更好了。我們可以很快看到,Nginx 有 20520 和 20521 的 PID。
PGREP
pgrep 命令更加簡(jiǎn)化單獨(dú)調(diào)用 grep 遇到的問(wèn)題。
alan@workstation:~$pgrep nginx