linux獲取進程id
1. linux查看進程命令
1、首先打開xshell軟體,連接上linux伺服器,使用指令ps查看系統進程,參數a表示全部,u表示以用戶格式顯示,x表示進程參數。
2. 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目錄中有很多跟進程相關的東西,都可以用這種方法觸類旁通地實現。
3. Linux SHELL 獲取進程ID
slp後無論加不加& ,pid中獲取到的實際進程ID和main進程ID始終是一樣的,因為slp函數是在當前腳本進程中運行。除非你調用外部腳本。
你可以在 slp & 這句後加一句 ps >/tmp/log
然後看看slp後加&和不加&的情況下/tmp/log中顯示的進程列表有何不同,就應該明白了。區別僅在於 $! 有值和沒有值。
4. 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 — 進程名稱(命令名/命令行)
5. Linux文件句柄佔用數量查看與設置
安裝lsof
yum install lsof
查看線程占句柄數
ulimit -a
查看系統打開句柄最大數量
more /proc/sys/fs/file-max
1
查看打開句柄總數
lsof|awk '{print $2}'|wc -l
1
根據打開文件句柄的數量降序排列,其中第二列為進程ID:
lsof|awk '{print $2}'|sort|uniq -c|sort -nr|more
1
根據獲取的進程ID查看進程的詳情
ps -ef |grep
1
修改linux單進程最大文件連接數
修改linux系統參數。vi /etc/security/limits.conf 添加
softnofile65536
hardnofile65536
修改以後保存,注銷當前用戶,重新登錄,執行ulimit -a ,ok ,參數生效了:
6. 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更具可讀性
7. 如何在Windows和Linux下獲取當前線程的ID號
windows最簡單了:呼出任務管理器就成了,ctrl+shift+ESC
linux就用ps命令
ps aux
一般跟上篩選語句grep
ps aux | grep "firewalld" ##找防火牆的PID
對了,以上這個是找進程的,不是找線程的
8. linux 如何查看某個程序的進程號
方法一:PS
在ps命令中,「-T」選項可以開啟線程查看。下面的命令列出了由進程號為的進程創建的所有線程。
$
ps
-T
-p
「SID」欄表示線程ID,而「CMD」欄則顯示了線程名稱。
方法二:
Top
top命令可以實時顯示各個線程情況。要在top輸出中開啟線程查看,請調用top命令的「-H」選項,該選項會列出所有Linux線程。在top運行時,你也可以通過按「H」鍵將線程查看模式切換為開或關。
$
top
-H
要讓top輸出某個特定進程並檢查該進程內運行的線程狀況:
$
top
-H
-p
9. 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/*每次執行結果都不一定相同*/
10. linux 下查看進程用什麼命令
linux 下查看進程可以使用的命令:
1、ps命令查找與進程相關的PID號:
2、ps a 顯示現行終端機下的所有程序,包括其他用戶的程序。
3、ps -A 顯示所有程序。
4、ps c 列出程序時,顯示每個程序真正的指令名稱,而不包含路徑,參數或常駐服務的標示。
5、ps -e 此參數的效果和指定"A"參數相同。
6、ps e 列出程序時,顯示每個程序所使用的環境變數。
7、ps f 用ASCII字元顯示樹狀結構,表達程序間的相互關系。
8、ps -H 顯示樹狀結構,表示程序間的相互關系。
9、ps -N 顯示所有的程序,除了執行ps指令終端機下的程序之外。
10、ps s 採用程序信號的格式顯示程序狀況。
11、ps S 列出程序時,包括已中斷的子程序資料。
12、ps -t<終端機編號> 指定終端機編號,並列出屬於該終端機的程序的狀況。
13、ps u 以用戶為主的格式來顯示程序狀況。
14、ps x 顯示所有程序,不以終端機來區分。