Ⅰ 如何通過進程名字獲取linux進程ID
ps -ef | grep '進程名' 獲取進程ID
cat /proc/your_PID/status 獲取進程狀態
Ⅱ linux怎麼查詢進程和進程的id
用top -u 命令查看進程以及PID。
命令如下:
$ top -u
PID — 進程id
USER — 進程所有者
PR — 進程優先順序
NI — nice值。負值表示高優先順序,正值表示低優先順序
VIRT — 進程使用的虛擬內存總量,單位kb。VIRT=SWAP+RES
RES — 進程使用的、未被換出的物理內存大小,單位kb。RES=CODE+DATA
SHR — 共享內存大小,單位kb
S — 進程狀態。D=不可中斷的睡眠狀態 R=運行 S=睡眠 T=跟蹤/停止 Z=僵屍進程
%CPU — 上次更新到現在的CPU時間佔用百分比
%MEM — 進程使用的物理內存百分比
TIME+ — 進程使用的CPU時間總計,單位1/100秒
COMMAND — 進程名稱(命令名/命令行)
Ⅲ linux獲取進程id和進程名稱
linux獲取進程id和進程名稱作為一個共享庫,應該需要統計使用本庫的各種應用程序的使用頻率,使用方法等信息。才能針對主要應用做出更好的改進。
www.dnjsb.com
那麼就需要記錄調用者的進程id或者進程名稱,並且保存下來。保存的動作可以採用共享內存,也可以採用文件,這個在下篇博文描述,本文描述如何獲取進程id和進程名稱。範例:#include
<stdio.h>#include
<unistd.h>#define
CFGMNG_TASK_NAME_LEN
256int
main(){
int
ret;
char
ac_tmp[CFGMNG_TASK_NAME_LEN];
ret
=
cfgmng_get_taskname(ac_tmp,
CFGMNG_TASK_NAME_LEN);
if
(0
!=
ret)
{
printf(Call
cfgmng_get_taskname
fail./n);
return
-1;
}
printf(The
running
task
name
is
%s./n,
ac_tmp);
return
0;}int
cfgmng_get_taskname(char
*ac,
int
len){
int
count
=
0;
int
nIndex
=
0;
char
chPath[CFGMNG_TASK_NAME_LEN]
=
{0};
char
cParam[100]
=
{0};
char
*cTem
=
chPath;
int
tmp_len;
pid_t
pId
=
getpid();
sprintf(cParam,/proc/%d/exe,pId);/*
printf(cParam
=
%s./n,
cParam);*/
count
=
readlink(cParam,
chPath,
CFGMNG_TASK_NAME_LEN);/*
printf(count
=
%d./n,
count);*/
if
(count
<
0
||
count
>=
CFGMNG_TASK_NAME_LEN)
{
printf(Current
System
Not
Surport
Proc./n);
return
-1;
}
else
{
nIndex
=
count
-
1;
for(
;
nIndex
>=
0;
nIndex--)
{
if(
chPath[nIndex]
==
'/'
)//篩選出進程名
{
nIndex++;
cTem
+=
nIndex;
break;
}
}
}
tmp_len
=
strlen(cTem);
if
(0
==
tmp_len)
{
printf(Get
task
fail./n);
return
-1;
}
if
(len
<=
tmp_len
+1)
{
printf(len(%d)
is
less
than
taskname(%s)'s
len./n,
len,
cTem);
return
-1;
}
strcpy(ac,
cTem);
return
0;}從上面的實驗範例可以看出,主要使用的函數是getpid獲取本進程的id,再到/proc/pid/exe
中去找到對應的進程名稱。在/proc目錄中有很多跟進程相關的東西,都可以用這種方法觸類旁通地實現。
Ⅳ linux ps查看進程顯示的是用戶ID,不是用戶名是怎麼回事
使用ps命令時,發現部分用戶顯示的是用戶名,有些用戶顯示的是UID,例如nmon程序的運行時webmaster,但是ps顯示的不是直接顯示uid 500。
通過man發現:8位用戶名的賬戶能夠顯示完整的用戶名,9位用戶名的賬戶就顯示了UID使用下面的命令來解決;
ps -o ruser=userForLongName -e -o pid,ppid,c,stime,tty,time,cmd
注意:「userForLongName」是隨便填寫的,Linux會自動檢查此字元串的長度,為15,則15位以下的用戶名都可以正常顯示。
Ⅳ Linux通過進程ID查看文件路徑
1、用ps -ef |grep xxxxx 得到該進程的pid
2、輸入ls -l ,結果中 exe鏈接對應的就是可執行文件的路徑
$ ls -l /proc/18283
以下是/proc目錄中進程18283的信息
/proc/18283 pid為N的進程信息
/proc/18283/cmdline 進程啟動命令
/proc/18283/cwd 鏈接到進程當前工作目錄
/proc/18283/environ 進程環境變數列表
/proc/18283/exe 鏈接到進程的執行命令文件
/proc/18283/fd 包含進程相關的所有的文件描述符
/proc/18283/maps 與進程相關的內存映射信息
/proc/18283/mem 指代進程持有的內存,不可讀
/proc/18283/root 鏈接到進程的根目錄
/proc/18283/stat 進程的狀態
/proc/18283/statm 進程使用的內存的狀態
/proc/18283/status 進程狀態信息,比stat/statm更具可讀性
Ⅵ linux 獲取進程id 函數
linux C中,獲取當前進程id 函數為getpid() ;
頭文件:#include<unistd.h>
函數原型:pid_tgetpid(void);
函數說明:getpid()用來取得目前進程的進程id,許多程序利用取到的此值來建立臨時文件,以避免臨時文件相同帶來的問題。
返回值:目前進程的進程id
範例
#include<stdio.h>
#include<unistd.h>
main()
{
printf("pid=%d ",getpid());
}
執行:
pid=1494/*每次執行結果都不一定相同*/
Ⅶ linux查看進程id命令(linux查看進程id)
1、linux查看進程ID。
2、Linux查看進程。
3、linux什麼命令查看進程。
4、linux系統進程查看。
1."linux查看進程id,為您提供linux查看進程id圖文信息,第一登錄linux伺服器。
2.輸入pgrep+進程名稱可獲取到pid列表。
3.使用ps-ef|grep+進程名也可查看id。
4.使用top命令查看進程pid。
5.通過ls/proc命令查看進程pid。
Ⅷ Linux進程的幾個用戶ID轉換方法
Linux為每個進程設置了3個ID:實際用戶id,有效和用戶id和保存的設置id
關於這3個id,需要注意以下幾個方面:
1.只有root才能改變進程的實際用戶id。例如,用戶從終端login程序登陸,此時login程序的3個id都是root。然後正確輸入用戶名密碼之後,login程序於是setuid到注冊的id。於是3個id都被改成了注冊的用戶id。然後exec shell程序。非root用戶注冊進入shell之後,他的實際用戶id是絕對不會被更改的。除非logout之後,重新注冊shell。一些su改變用戶的操作實際上都是改變shell進程的有效用戶id,並不是shell進程的實際用戶id。
2.exec程序時,可執行文件有一個設置id位,該位的設置與否與進程的有效用戶id和保存的設置id有很大關系。可以用ll命令查看,如果有s標記的話說明設置了,否則沒有。首先沒有設置的情況,3個id均不會改變和調用者的進程的id一樣。現在是設置了的情況,實際用戶id仍然不會改變,有效用戶id則設置為可執行文件的屬主用戶,保存的設置id設置成有效用戶id一樣。這樣的程序有很多,比如passwd,su等。例如,passwd程序,一個普通用戶foo通過shell執行passwd,首先shell進程fork產生一個子進程,然後子進程exec passwd程序。由於passwd設置了設置id位,並且passwd是屬於root用戶。於是子進程設置有效用戶id位為root,保存的設置用戶id也設置成了root。passwd執行完畢時,再改變有效用戶id和保存的設置用戶id為以前的實際用戶id的值。
3.保存的設置-用戶- ID 是由exec從有效用戶I D復制的。在exec按文件用戶I D設置了有效用戶I D後,即進行這種復制,並將此副本保存起來
Ⅸ 怎麼查看linux進程名稱
1、連接上相應的linux主機,進入到等待輸入shell指令的linux命令行狀態下。