linux判斷進程存在
㈠ linux查看是否有某個運行的進程命令(不包括
查看所有進程:
1.ps -ef
2.ps -aux
e = all processes 顯示所有進程
f = full全格式
a = show processes for all users 顯示所有用戶的進程u = display the process's user/owner 顯示用戶x = also show processes not attached to a terminal 顯示無控制終端的進程
查看單個進程是否運行:
ps -ef|grep 進程
ps -aux|grep 進程
ps -ef顯示參數詳解:
UID 用戶IDPID 進程IDPPID 父進程IDC CPU佔用率STIME 開始時間TTY 開始此進程的TTYTIME 此進程運行的總時間CMD 命令名
ps -aux顯示參數詳解:
PID 進程的ID;
PPID 父進程;
%CPU 進程佔用的CPU百分比;
%MEM 佔用內存的百分比;
NI 進程的NICE值,數值大,表示較少佔用CPU時間;
VSZ 進程虛擬大小;
RSS 駐留中頁的數量;
TTY 終端ID
STAT 進程狀態(有以下幾種)
D 無法中斷的休眠狀態(通常 IO 的進程);
R 正在運行可中在隊列中可過行的;
S 處於休眠狀態;
T 停止或被追蹤;
W 進入內存交換(從內核2.6開始無效);
X 死掉的進程(從來沒見過);
Z 僵屍進程;
< 優先順序高的進程
N 優先順序較低的進程
L 有些頁被鎖進內存;
s 進程的領導者(在它之下有子進程);
l 多進程的(使用 CLONE_THREAD, 類似 NPTL pthreads);
+ 位於後台的進程組;
WCHAN 正在等待的進程資源;
START 啟動進程的時間;
TIME 進程消耗CPU的時間;
COMMAND 命令的名稱和參數;
ps 為我們提供了進程的一次性的查看,它所提供的查看結果並不動態連續的;如果想對進程時間監控,應該用 top 工具.
㈡ linux c 檢查進程是否存在
1、ps 是一個shell裡面的命令,用來輸出當前進程狀態的。想知道詳細用法可以在linux命令行中輸入: man ps
2、"ABNORMAL",注意這是一個字元串常量,因為在C語言中使用雙引號可以定義一個字元串常量。這個字元串可以是程序員自己隨便寫的,就像"hello word" 一樣。"ABNORMAL"表示不正常的意思。
3、ERROR、CONFLICT、NOERROR三個常量,可以使用#define語句進行定義。至於是在哪個頭文件中定義很難說。我建議你可以在當前的.c文件開始的地方自己定義一下,例如:
#include <stdio.h>
... /*其他的頭文件等等*/
#define ERROR -1
#define CONFLICT 1
#define NOERROR 0
... /*其他的函數*/
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;
}
請注意:裡面有個popen() pclose()函數,是通過管道創建一個進程,這兩個函數必須要有<stdio.h>文件。具體的參數可以參看網路:http://ke..com/view/2445803.htm?fr=aladdin。
atoi()函數能將字元串轉換成整型數。參考網路:http://ke..com/view/653935.htm。
4、整個程序的意思是:
(1)使用"ps"命令,將結果保存到ps變數中,注意sprintf的第一個參數是一個char數組。
(2)將"ABNORMAL"字元串保存到buff變數中,buff也是一個char數組。
(3)使用popen()函數創建一個進程,並將這個進程定向到標准輸出(也就是顯示器上)。
(4)將進程的輸入出存到buff變數中,然後將其轉化為數字
(5)如果這個數字>=2說明發生了沖突,返回CONFLICT
(6)在循環之後,比較一下,如果buff一直是"ABNORMAL",說明ps 命令出錯,返回ERROR
(7)否則返回NOERROR
綜上:ERROR、CONFLICT、NOERROR幾個變數只是作為函數返回值,告訴函數調用者這次調用的結果而已,所以完全可以自己定義。除非你們公司已經規定了ERROR必須是某個值,不然你是可以自己定義的,只是在以後調用detect_process()函數的時候記得什麼返回值對應什麼結果就行了。
自己定義就是在.c文件開頭使用#define 好了。
㈢ linux查看進程命令
1、首先打開xshell軟體,連接上linux伺服器,使用指令ps查看系統進程,參數a表示全部,u表示以用戶格式顯示,x表示進程參數。
㈣ linux查看是否有某個運行的進程命令
Linux查看所有正在運行的進程,可以用ps aux命令,它的-a參數,表示不與終端有關的進程也顯示出來。如果想知道某個進程是否在運行,可以用ps aux命令加管道符和grep選取命令,grep選取命令可以根據關鍵字來過濾管道符傳遞過來的數據,從而只列出用戶想看到的內容,比如想知道httpd進程是否在運行就可以這樣:
ps aux | grep httpd
如果httpd進程沒有運行,這個命令就不顯示任何內容;如果httpd進程正在運行,這個命令就會顯示httpd進程的相關信息。
㈤ linux查看某個進程是否存在
使用 ps 命令,比如:
ps -au 看的是所有用戶進程
ps -aux 會看到所有的後台進程,包括一些系統的進程,就很多了
如果你只想找到某個指定進程
ps -ef | grep python 就會看到所有跟python有關的進程,其它進程,你換個名字就好了,
搜到有,那這個進程就存在,沒有也有搜索不到
㈥ linux下如何判斷進程有沒有運行
可以用ps命令查看進程,然後grep正則查找進程名,比如 判斷bash
ps -aux | grep bash
㈦ linux怎麼判斷一個進程是否存在
pidof + 進程名
如果進程存在,就會列印出該進程的pid。
㈧ linux 怎麼檢查進程是否存在
在terminal中輸入ps -ef | grep 進程名 或者 ps -aux | grep 進程名 ,也可以直接ps -ef,這樣就可以看到所有的進程了
㈨ linux 檢查進程是否存在
知道進程的准確名稱,可以執行命令: pidof 進程名
若有返回值,則存在。
2.不知道進程的准確名稱,只知道含某些字母(這里假設含abc),可以執行命令:
ps -A|grep abc
若有返回信息,則存在。
㈩ linux shell 判斷進程是否存在
如果你是通過一個進程的名字作為關鍵詞來查找進程是否存在的話,可使用
ps
-ef
|
grep
"<關鍵詞>"
|
wc
-l
輸出為0表示不存在,輸出大於0,表示存在,且數字就是這個關鍵詞進程的個數;
如果你是通過進程號PID來查找進程是否存在,可以使用
ps
--no-heading
|
wc
-l
同樣,
輸出為0表示不存在,輸出=1,表示存在,因為進程號不可能重復,所以輸出肯定非0即1