第一步:grep -v grep
grep(global search regular expression(RE) and print out the line,全面搜索正則表達(dá)式并把行打印出來)是一種強大的文本搜索工具,它能使用正則表達(dá)式搜索文本,并把匹配的行打印出來。
ps -ef|grep java就是通過管道的方式,將ps命令查詢出來的進(jìn)程信息內(nèi)容篩選出與jar進(jìn)程相關(guān)的數(shù)據(jù)
但是使用grep命令過濾時會查詢出grep自己的進(jìn)程信息,示例如下:
[root@localdomain1 ~]# ps -ef|grep xh-1.0-SNAPSHOT.jar root 3256 1 0 Aug11 ? 00:17:19 java -jar xh-1.0-SNAPSHOT.jar --spring.config.location=application.yml root 6435 6395 0 08:38 pts/1 00:00:00 grep --color=auto xh-1.0-SNAPSHOT.jar
可以看到在查詢到的進(jìn)程信息中,除了我們需要的xh-1.0-SNAPSHOT.jar進(jìn)程,還包括了grep --color=auto進(jìn)程信息
大多數(shù)情況下,在編寫腳本時,往往需要精確獲取到單一進(jìn)程的信息,此時就需要通過 -v 參數(shù)排除掉grep進(jìn)程的信息數(shù)據(jù)
-v 參數(shù),作用是反轉(zhuǎn)查找,即過濾出除了參數(shù)后面的其他數(shù)據(jù),示例如下
[root@localdomain1 ~]# ps -ef|grep xh-1.0-SNAPSHOT.jar |grep -v grep root 3256 1 0 Aug11 ? 00:17:19 java -jar xh-1.0-SNAPSHOT.jar --spring.config.location=application.yml
可以發(fā)現(xiàn),當(dāng)我們在后面添加了|grep -v grep后,查詢出來的結(jié)果就只剩下我們需要的xh-1.0-SNAPSHOT.jar進(jìn)程信息了,說明grep進(jìn)程已經(jīng)被排除在外了
第二步:awk '{print $2}'
awk是行處理器: 相比較屏幕處理的優(yōu)點,在處理龐大文件時不會出現(xiàn)內(nèi)存溢出或是處理緩慢的問題,通常用來格式化文本信息
awk處理過程: 依次對每一行進(jìn)行處理,然后輸出
print & $0 是awk打印指定內(nèi)容的主要命令
在第一步中,我們查詢出來了jar進(jìn)程的信息,此時需要獲取到這條進(jìn)程信息的PID
我們就可以使用awk命令將自己需要的某一列數(shù)據(jù)單獨提取出來,示例如下
[root@localdomain1 ~]# ps -ef|grep xh-1.0-SNAPSHOT.jar|grep -v grep|awk '{print $2}' 3256
其中,$2代表提取進(jìn)程信息中第二列的值,而我們使用ps命令查詢出的進(jìn)程信息中的第二列對應(yīng)的正好就是進(jìn)程的PID(注意:$0表示獲取整個當(dāng)前行)
可以看到,通過awk '{print $2}'命令,我們成功拿到了xh-1.0-SNAPSHOT.jar進(jìn)程的PID
類似腳本示例(腳本來源)
#檢查程序是否在運行is_exist(){
pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}'`
#如果不存在返回1,存在返回0 if [ -z "${pid}" ]; thenreturn 1
elsereturn 0
fi
}
https://www.cnblogs.com/suhai/p/16585787.html文章來源地址http://www.zghlxwxcb.cn/news/detail-630007.html
文章來源:http://www.zghlxwxcb.cn/news/detail-630007.html
到了這里,關(guān)于【Linux】ps -ef|grep -v grep|awk ‘{print $2}‘ 命令詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!