Linux 的交互式 Shell 與 Shell 腳本存在必定的差別,主要是因爲後者存在一個獨立的運行進程,所以在獲取進程 pid 上兩者也有所區別。html
#在已知進程名(name)的前提下,交互式 Shell 獲取進程 pid 有不少種方法,典型的經過 grep 獲取 pid 的方法爲(這裏添加 -v grep是爲了不匹配到 grep 進程): ps -ef | grep "name" | grep -v grep | awk '{print $2}' #或者不使用 grep(這裏名稱首字母加[]的目的是爲了不匹配到 awk 自身的進程): ps -ef | awk '/[n]ame/{print $2}' #若是隻使用 x 參數的話則 pid 應該位於第一位: ps x | awk '/[n]ame/{print $1}' #最簡單的方法是使用 pgrep: pgrep -f name #若是須要查找到 pid 以後 kill 掉該進程,還能夠使用 pkill: pkill -f name #若是是可執行程序的話,能夠直接使用 pidof pidof name
學習shell 地址shell
https://www.yiibai.com/shell/unix-special-variables.htmlbash
http://wiki.jikexueyuan.com/project/shell-learning/gorgeous-printf-output.htmlyii