用top -u 命令查看進(jìn)程以及PID。
成都創(chuàng)新互聯(lián)公司 - 西部信息機(jī)房,四川服務(wù)器租用,成都服務(wù)器租用,四川網(wǎng)通托管,綿陽(yáng)服務(wù)器托管,德陽(yáng)服務(wù)器托管,遂寧服務(wù)器托管,綿陽(yáng)服務(wù)器托管,四川云主機(jī),成都云主機(jī),西南云主機(jī),西部信息機(jī)房,西南服務(wù)器托管,四川/成都大帶寬,服務(wù)器機(jī)柜,四川老牌IDC服務(wù)商
命令如下:
$ top -u
PID — 進(jìn)程id
USER — 進(jìn)程所有者
PR — 進(jìn)程優(yōu)先級(jí)
NI — nice值。負(fù)值表示高優(yōu)先級(jí),正值表示低優(yōu)先級(jí)
VIRT — 進(jìn)程使用的虛擬內(nèi)存總量,單位kb。VIRT=SWAP+RES
RES — 進(jìn)程使用的、未被換出的物理內(nèi)存大小,單位kb。RES=CODE+DATA
SHR — 共享內(nèi)存大小,單位kb
S — 進(jìn)程狀態(tài)。D=不可中斷的睡眠狀態(tài) R=運(yùn)行 S=睡眠 T=跟蹤/停止 Z=僵尸進(jìn)程
%CPU — 上次更新到現(xiàn)在的CPU時(shí)間占用百分比
%MEM — 進(jìn)程使用的物理內(nèi)存百分比
TIME+ — 進(jìn)程使用的CPU時(shí)間總計(jì),單位1/100秒
COMMAND — 進(jìn)程名稱(命令名/命令行)
本方法以linux發(fā)行版RHEL7為例,Linux下使用PS命令結(jié)合相關(guān)參數(shù)可以查看linux當(dāng)前系統(tǒng)下的所有進(jìn)程、所有運(yùn)行中的進(jìn)程、所有非root運(yùn)行的進(jìn)程、所有指定用戶運(yùn)行的進(jìn)程。
1.桌面點(diǎn)擊右鍵彈出菜單選擇“Open in Terminal”,打開命令行終端
【以下操作輸入命令均在命令行終端輸入】
2.在命令行終端執(zhí)行ps的幫助命令“ps --helpa”查看ps命令參數(shù)列表
3.根據(jù)參數(shù)顯示,使用命令“ps -A”查看當(dāng)前系統(tǒng)所有的進(jìn)程
說明一下:從RHEL7開始服務(wù)的管理程序改為了systemd.
4.使用“ps-aux|less”,查看當(dāng)前系統(tǒng)正在運(yùn)行的所有進(jìn)程【all】
使用q鍵退出
5.使用“ps -U root -u root -N”,查看當(dāng)前系統(tǒng)中非root運(yùn)行的所有進(jìn)程
6.使用“ps –u sshd”,查看sshd用戶運(yùn)行的所有進(jìn)程
sshd用戶沒有運(yùn)行進(jìn)程,也就是說明并沒有啟動(dòng)ssh服務(wù)。
一:linux查看進(jìn)程命令詳解
ps命令查找與進(jìn)程相關(guān)的PID號(hào):
ps a 顯示現(xiàn)行終端機(jī)下的所有程序,包括其他用戶的程序。
ps -A 顯示所有程序。
ps c 列出程序時(shí),顯示每個(gè)程序真正的指令名稱,而不包含路徑,參數(shù)或常駐服務(wù)的標(biāo)示。
ps -e 此參數(shù)的效果和指定"A"參數(shù)相同。
ps e 列出程序時(shí),顯示每個(gè)程序所使用的環(huán)境變量。
ps f 用ASCII字符顯示樹狀結(jié)構(gòu),表達(dá)程序間的相互關(guān)系。
ps -H 顯示樹狀結(jié)構(gòu),表示程序間的相互關(guān)系。
ps -N 顯示所有的程序,除了執(zhí)行ps指令終端機(jī)下的程序之外。
ps s 采用程序信號(hào)的格式顯示程序狀況。
ps S 列出程序時(shí),包括已中斷的子程序資料。
ps -t終端機(jī)編號(hào) 指定終端機(jī)編號(hào),并列出屬于該終端機(jī)的程序的狀況。
ps u 以用戶為主的格式來顯示程序狀況。
ps x 顯示所有程序,不以終端機(jī)來區(qū)分。
最常用的方法是ps aux,然后再通過管道使用grep命令過濾查找特定的進(jìn)程,然后再對(duì)特定的進(jìn)程進(jìn)行操作。
ps aux | grep program_filter_word,ps -ef |grep tomcat
ps -ef|grep java|grep -v grep 顯示出所有的java進(jìn)程,去處掉當(dāng)前的grep進(jìn)程。
二.擴(kuò)展資料:linux 結(jié)束進(jìn)程命令詳解
使用kill命令結(jié)束進(jìn)程:kill xxx
常用:kill -9 324
Linux下還提供了一個(gè)killall命令,可以直接使用進(jìn)程的名字而不是進(jìn)程標(biāo)識(shí)號(hào),例如:# killall -9 NAME
1、Linux根據(jù)進(jìn)程號(hào)查詢相應(yīng)的進(jìn)程信息,可以使用ps命令的-q參數(shù)來進(jìn)行查詢。
2、舉例來說,已知進(jìn)程號(hào)為12840,查詢其相應(yīng)的進(jìn)程。
ps?-q?12840
說明:-q參數(shù)是ps的快速模式,使用該參數(shù)可以從pidlist中快速的讀取必要的進(jìn)程信息。后面接進(jìn)程號(hào),即pid號(hào)。
也可以使用如下命令只打印命令,也就是只顯示進(jìn)程名稱:
ps -q 12840 -o comm=
說明:-o是指明輸出的格式,comm=即輸出格式只輸出comand,即只顯示進(jìn)程的名稱。
1、ps 是一個(gè)shell里面的命令,用來輸出當(dāng)前進(jìn)程狀態(tài)的。想知道詳細(xì)用法可以在linux命令行中輸入: man ps
2、"ABNORMAL",注意這是一個(gè)字符串常量,因?yàn)樵贑語(yǔ)言中使用雙引號(hào)可以定義一個(gè)字符串常量。這個(gè)字符串可以是程序員自己隨便寫的,就像"hello word" 一樣。"ABNORMAL"表示不正常的意思。
3、ERROR、CONFLICT、NOERROR三個(gè)常量,可以使用#define語(yǔ)句進(jìn)行定義。至于是在哪個(gè)頭文件中定義很難說。我建議你可以在當(dāng)前的.c文件開始的地方自己定義一下,例如:
#include stdio.h
... /*其他的頭文件等等*/
#define ERROR -1
#define CONFLICT 1
#define NOERROR 0
... /*其他的函數(shù)*/
int detect_process(char * process_name)
{
FILE *ptr;
char buff[512];
char ps[128];
sprintf(ps,"ps -e | grep -c ' %s/p",process_name);
strcpy(buff,"ABNORMAL");
if((ptr=popen(ps, "r")) != NULL)
{
while (fgets(buff, 512, ptr) != NULL)
{
if(atoi(buff)=2)
{
pclose(ptr);
return CONFLICT;
}
}
}
if(strcmp(buff,"ABNORMAL")==0) /*ps command error*/
return ERROR;
pclose(ptr);
return NOERROR;
}
請(qǐng)注意:里面有個(gè)popen() pclose()函數(shù),是通過管道創(chuàng)建一個(gè)進(jìn)程,這兩個(gè)函數(shù)必須要有stdio.h文件。具體的參數(shù)可以參看百度百科:。
atoi()函數(shù)能將字符串轉(zhuǎn)換成整型數(shù)。參考百度百科:。
4、整個(gè)程序的意思是:
(1)使用"ps"命令,將結(jié)果保存到ps變量中,注意sprintf的第一個(gè)參數(shù)是一個(gè)char數(shù)組。
(2)將"ABNORMAL"字符串保存到buff變量中,buff也是一個(gè)char數(shù)組。
(3)使用popen()函數(shù)創(chuàng)建一個(gè)進(jìn)程,并將這個(gè)進(jìn)程定向到標(biāo)準(zhǔn)輸出(也就是顯示器上)。
(4)將進(jìn)程的輸入出存到buff變量中,然后將其轉(zhuǎn)化為數(shù)字
(5)如果這個(gè)數(shù)字=2說明發(fā)生了沖突,返回CONFLICT
(6)在循環(huán)之后,比較一下,如果buff一直是"ABNORMAL",說明ps 命令出錯(cuò),返回ERROR
(7)否則返回NOERROR
綜上:ERROR、CONFLICT、NOERROR幾個(gè)變量只是作為函數(shù)返回值,告訴函數(shù)調(diào)用者這次調(diào)用的結(jié)果而已,所以完全可以自己定義。除非你們公司已經(jīng)規(guī)定了ERROR必須是某個(gè)值,不然你是可以自己定義的,只是在以后調(diào)用detect_process()函數(shù)的時(shí)候記得什么返回值對(duì)應(yīng)什么結(jié)果就行了。
自己定義就是在.c文件開頭使用#define 好了。