linux进程id
‘壹’ 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查看进程命令
linux查看进程命令如下:
操作设备:戴尔笔记本电脑
操作系统:win10
操作程序:xshell软件
1、首先打开xshell软件,连接上linux服务器,使用指令ps查看系统进程,参数a表示全部,u表示以用户格式显示,x表示进程参数。
‘叁’ 2018-06-21 linux查看父进程id
环境 docker alpine
ps -efo "comm,pid,ppid,pgid,args"
args必须放在其他参数之后
linux中有时父进程结束后,子进程,以及子进程的子进程是无法结束的。
node -e "require('terminate')(2579)"
terminate是nodejs的一个模块
pm2 start /usr/local/lib/node_moles/visop/bin/visop-start -i 1 -n visopadmin -- -f
--后面跟的是脚本的参数
netstat -anp|grep 8050
netstat -anp|grep 8050|awk '{print $NF}'|grep -o [0-9]*
NF为awk中每一行的列数
‘肆’ 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,并且不同的进程不能有相同的ID,否则就无法分辨对应ID是哪个进程了,所以,当心出现一个进程时,会指定一个新的进程,至于这个进程ID是什么,那就跟你的Linux系统版本有关了,最简单的做法,自然是进程ID自增了,这样比较方便管理进程ID。
楼主如果对Linux系统感兴趣,想学习更多Linux系统知识,可以网络《Linux就该这么学》,不错的一本Linux入门教程。
‘陆’ Linux里面pid是什么
pid就是程序运行后,在系统中自动产生的进程id号的简称
‘柒’ 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下查看进程内存的方法
现有一个进程id为“11529”,想要查询该进程占用的内存大小。
方法一:cat /proc/11529/status
方法二:pmap -x 11529
方法三:top -n 1 | grep 11529 | awk '{print $5}'
方法四:ps -e -o 'pid,comm,args,pcpu,rsz,vsz,stime,user,uid' | grep 11529 | awk '{print $5}'
现有一个进程name为“sensechess-app”,想要查询该进程占用的内存大小。
自开发的的脚本工具 - sysMonitor.zip,可监控系统或者某个进程的CPU、MEM、DISK的使用情况.
示例: