你的系統(tǒng)運(yùn)行狀態(tài)很不正常,懷疑可能跟你的某個(gè)程序有關(guān),可能在不停啟動(dòng)進(jìn)程。當(dāng)前系統(tǒng)進(jìn)程有3萬多,實(shí)在是太多了。
創(chuàng)新互聯(lián)主營君山網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,app開發(fā)定制,君山h5成都微信小程序搭建,君山網(wǎng)站營銷推廣歡迎君山等地區(qū)企業(yè)咨詢
我猜圖中兩個(gè)進(jìn)程cm_agent和om_monitor是你的主要應(yīng)用進(jìn)程。不知道它們是否會自動(dòng)拉起新的進(jìn)程,例如定時(shí)執(zhí)行shell腳本。有可能因?yàn)槟_本卡住了,導(dǎo)致進(jìn)程大量吊死。
你可以用ps -ef|grep “你要統(tǒng)計(jì)的進(jìn)程名”| wc -l 看下某個(gè)進(jìn)程的數(shù)量。然后找到是那個(gè)程序拉起的,殺掉那個(gè)進(jìn)程。如果被拉起的進(jìn)程不能自動(dòng)退出,則需要寫腳本批量殺掉那些進(jìn)程。
我遇到過因?yàn)榇疟P問題導(dǎo)致某個(gè)文件系統(tǒng)異常,df命令卡殼,進(jìn)而導(dǎo)致系統(tǒng)積累大量腳本進(jìn)程不能退出。
需要進(jìn)一步幫助可以私信聯(lián)系。
使用shell腳本來執(zhí)行java入口類,在腳本中加jar包到classpath中,然后用java命令運(yùn)行入口類,就能啟動(dòng)程序了
你把PATH改成/usr/local/mysql/bin:$home/mysql,這樣命令肯定不能用了。
建議:改成PATH=$PATH:$HOME/bin:/usr/local/mysql/bin:$home/mysql
這樣不就行了
由于這樣那樣的原因,Ubuntu 這個(gè)桌面總是面臨著卡住的風(fēng)險(xiǎn)。為了有限應(yīng)對它卡著不動(dòng),我做了一些防范工作。
卡死
如果你發(fā)現(xiàn) Ubuntu 卡住了,一個(gè)通過Alt+Ctrl+F/d( /d 的取值為1到6)來切換到命令界面,輸入自己的用戶名而后輸入密碼,登錄。
鍵入如下命令
sudo kill -9 `ps -ef | grep tty7 | awk 'NR==1 {print $2}'`
這樣,你的電腦就會恢復(fù)了,什么你說它注銷了。又要登錄一遍。當(dāng)然這條命令就是做一件事情的。
捷徑
這個(gè)世界上,有的人就是多敲一下鍵盤多覺得累,所以下載這個(gè)文件吧!
然后放到 /usr/bin/ 目錄下,之后給個(gè)運(yùn)行的權(quán)限。以后就可以直接命令行解決了。
示例:
sudo cp ./Shell_restartDesktop /usr/bin/fuckTTY
sudo chmod a+x /usr/bin/fuckTTY
這樣,以后崩了直接輸入fuckTTY就可以了。
講解
以下命令解讀,看看就好,別當(dāng)真:
kill -9 : 殺無赦(后面緊跟著進(jìn)程號,誰被喊道誰倒霉)
ps -ef : 派出所(列出所有真在運(yùn)行中的進(jìn)程的詳細(xì)信息)
grep tty7 : 躲貓貓(查找 tty7 的信息)
tty7 : 這貨就是你的圖形界面納!
awk : 遠(yuǎn)古文字處理神器,不解釋!
| : 用過都說好的管道,不是超級馬里奧!
“ :你想在命令行里運(yùn)行命令,用它就不會有錯(cuò)的!
方法/步驟
1
Linux作為Unix的衍生操作系統(tǒng),Linux內(nèi)建有查看當(dāng)前進(jìn)程的工具ps。這個(gè)工具能在命令行中使用PS 命令是什么
查看它的man手冊可以看到,ps命令能夠給出當(dāng)前系統(tǒng)中進(jìn)程的快照。它能捕獲系統(tǒng)在某一事件的進(jìn)程狀態(tài)。如果你想不斷更新查看的這個(gè)狀態(tài),可以使用top命令。
ps命令支持三種使用的語法格式
UNIX 風(fēng)格,選項(xiàng)可以組合在一起,并且選項(xiàng)前必須有“-”連字符 BSD 風(fēng)格,選項(xiàng)可以組合在一起,但是選項(xiàng)前不能有“-”連字符 GNU 風(fēng)格的長選項(xiàng),選項(xiàng)前有兩個(gè)“-”連字符
我們能夠混用這幾種風(fēng)格,但是可能會發(fā)生沖突。本文使用 UNIX 風(fēng)格的ps命令。這里有在日常生活中使用較多的ps命令的例子。1. 不加參數(shù)執(zhí)行ps命令
這是一個(gè)基本的 ps 使用。在控制臺中執(zhí)行這個(gè)命令并查看結(jié)果。
2
結(jié)果默認(rèn)會顯示4列信息。
PID: 運(yùn)行著的命令(CMD)的進(jìn)程編號 TTY: 命令所運(yùn)行的位置(終端) TIME: 運(yùn)行著的該命令所占用的CPU處理時(shí)間 CMD: 該進(jìn)程所運(yùn)行的命令
這些信息在顯示時(shí)未排序。2. 顯示所有當(dāng)前進(jìn)程
使用 -a 參數(shù)。-a 代表 all。同時(shí)加上x參數(shù)會顯示沒有控制終端的進(jìn)程。
$ ps -ax
這個(gè)命令的結(jié)果或許會很長。為了便于查看,可以結(jié)合less命令和管道來使用。
$ ps -ax | less
3
3. 根據(jù)用戶過濾進(jìn)程
在需要查看特定用戶進(jìn)程的情況下,我們可以使用 -u 參數(shù)。比如我們要查看用戶'pungki'的進(jìn)程,可以通過下面的命令:
$ ps -u pungki
4
4. 通過cpu和內(nèi)存使用來過濾進(jìn)程
也許你希望把結(jié)果按照 CPU 或者內(nèi)存用量來篩選,這樣你就找到哪個(gè)進(jìn)程占用了你的資源。要做到這一點(diǎn),我們可以使用 aux 參數(shù),來顯示全面的信息:
$ ps -aux | less
5
當(dāng)結(jié)果很長時(shí),我們可以使用管道和less命令來篩選。
默認(rèn)的結(jié)果集是未排好序的??梢酝ㄟ^ --sort命令來排序。
根據(jù) CPU 使用來升序排序
$ ps -aux --sort -pcpu | less
6
根據(jù) 內(nèi)存使用 來升序排序
$ ps -aux --sort -pmem | less
7
我們也可以將它們合并到一個(gè)命令,并通過管道顯示前10個(gè)結(jié)果:
$ ps -aux --sort -pcpu,+pmem | head -n 10
5. 通過進(jìn)程名和PID過濾
使用 -C 參數(shù),后面跟你要找的進(jìn)程的名字。比如想顯示一個(gè)名為getty的進(jìn)程的信息,就可以使用下面的命令:
$ ps -C getty
如果想要看到更多的細(xì)節(jié),我們可以使用-f參數(shù)來查看格式化的信息列表:
$ ps -f -C getty
6. 根據(jù)線程來過濾進(jìn)程
如果我們想知道特定進(jìn)程的線程,可以使用-L 參數(shù),后面加上特定的PID。
$ ps -L 1213
7. 樹形顯示進(jìn)程
有時(shí)候我們希望以樹形結(jié)構(gòu)顯示進(jìn)程,可以使用 -axjf 參數(shù)。
$ps -axjf
或者可以使用另一個(gè)命令。
$ pstree
8. 顯示安全信息
如果想要查看現(xiàn)在有誰登入了你的服務(wù)器??梢允褂胮s命令加上相關(guān)參數(shù):
$ ps -eo pid,user,args
參數(shù) -e 顯示所有進(jìn)程信息,-o 參數(shù)控制輸出。Pid,User 和 Args參數(shù)顯示PID,運(yùn)行應(yīng)用的用戶和該應(yīng)用。
能夠與-e 參數(shù) 一起使用的關(guān)鍵字是args, cmd, comm, command, fname, ucmd, ucomm, lstart, bsdstart 和 start。9. 格式化輸出root用戶(真實(shí)的或有效的UID)創(chuàng)建的進(jìn)程
系統(tǒng)管理員想要查看由root用戶運(yùn)行的進(jìn)程和這個(gè)進(jìn)程的其他相關(guān)信息時(shí),可以通過下面的命令:
$ ps -U root -u root u
-U 參數(shù)按真實(shí)用戶ID(RUID)篩選進(jìn)程,它會從用戶列表中選擇真實(shí)用戶名或 ID。真實(shí)用戶即實(shí)際創(chuàng)建該進(jìn)程的用戶。
-u 參數(shù)用來篩選有效用戶ID(EUID)。
最后的u參數(shù)用來決定以針對用戶的格式輸出,由User, PID, %CPU, %MEM, VSZ, RSS, TTY, STAT, START, TIME 和 COMMAND這幾列組成。
這里有上面的命令的輸出結(jié)果:
10. 使用PS實(shí)時(shí)監(jiān)控進(jìn)程狀態(tài)
ps 命令會顯示你系統(tǒng)當(dāng)前的進(jìn)程狀態(tài),但是這個(gè)結(jié)果是靜態(tài)的。
當(dāng)有一種情況,我們需要像上面第四點(diǎn)中提到的通過CPU和內(nèi)存的使用率來篩選進(jìn)程,并且我們希望結(jié)果能夠每秒刷新一次。為此,我們可以將ps命令和watch命令結(jié)合起來。
$ watch -n 1 ‘ps -aux --sort -pmem, -pcpu’
如果輸出太長,我們也可以限制它,比如前20條,我們可以使用head命令來做到。
$ watch -n 1 ‘ps -aux --sort -pmem, -pcpu | head 20’
這里的動(dòng)態(tài)查看并不像top或者h(yuǎn)top命令一樣。但是使用ps的好處是你能夠定義顯示的字段,你能夠選擇你想查看的字段。
舉個(gè)例子,如果你只需要看名為'pungki'用戶的信息,你可以使用下面的命令:
$ watch -n 1 ‘ps -aux -U pungki u --sort -pmem, -pcpu | head 20’
結(jié)論
你也許每天都會使用ps命令來監(jiān)控你的Linux系統(tǒng)。但是事實(shí)上,你可以通過ps命令的參數(shù)來生成各種你需要的報(bào)表。
ps命令的另一個(gè)優(yōu)勢是ps是各種 Linux系統(tǒng)都默認(rèn)安裝的,因此你只要用就行了。
不要忘了通過 man ps來查看更多的參數(shù)。(LCTT 譯注:由于 ps 命令古老而重要,所以它在不同的 UNIX、BSD、Linux 等系統(tǒng)中的參數(shù)不盡相同,因此如果你用的不是 Linux 系統(tǒng),請查閱你的文檔了解具體可用的參數(shù)。)