ps 命令
Linux ps (英文全拼:process status)命令用于顯示當前進程的狀態(tài)晕拆,類似于 windows 的任務(wù)管理器胸哥。
1. ps 常用的命令
ps -aux #顯示所有進程信息
ps -ef #顯示所有進程信息
ps -ef | grep summer-admin #顯示summer-admin的進程信息
命令的區(qū)別
兩個命令均是輸出所有進程信息,且輸出結(jié)果差別不大赴魁,但展示風格不同卸奉。aux是BSD風格,-ef是System V風格颖御。
影響使用的區(qū)別是aux會截斷command列榄棵,而-ef不會。當結(jié)合grep時這種區(qū)別會影響到結(jié)果潘拱。
2. ps -ef 命令擴展使用
ps -ef | grep halo | grep -v grep |awk '{print $2}'`
- 管道符“|”用來隔開兩個命令疹鳄,管道符左邊命令的輸出會作為管道符右邊命令的輸入。所以命令是從左往右執(zhí)行
- ps -ef | grep halo 即顯示關(guān)鍵字為halo的進程信息芦岂,此時會將grep halo 的進程也統(tǒng)計進來
- grep -v 意為不包括瘪弓;grep -v grep 意思是查找除了grep下的所有信息
- 最后將只包含cpu關(guān)鍵字的進程篩選結(jié)果作為輸入給awk ‘{print $2}’,這個部分的作用是提取輸入的第二列禽最,而第二列正是進程的PID
ps 命令的簡單應(yīng)用
作為一名java開發(fā)人員腺怯,需要經(jīng)常的啟動jar包。
- 可以寫一個start.sh 腳本
#!/bin/bash
pid=`ps -ef | grep halo | grep -v grep |awk '{print $2}'`
if [ $pid ]; then
echo :App is running pid=$pid
kill -9 $pid
fi
java -jar /home/root/halo.jar &
基本思想:將運行目標的線程pid賦值給pid變量川无,判斷pid是否在運行呛占,如果在運行就打印運行的pid并“殺死”運行的pid,最后運行java程序懦趋。
- 啟動腳本:
sh ./start.sh