linux 探进程是否存活,Linux下探索进程的秘密-运维篇

查看进程pid

每个进程都有自己的进程id,每次启动或重启进程时进程id大多数情况下会变化。

推荐工具:ps

ps -ef | grep 进程名字查看进程的端口号

推荐工具:netstat

netstat -apn | grep 进程名称或进程id查看进程pid的启动目录

比如一个进程在/usr/bin目录下启动,则该进程的启动目录为/usr/bin。

何时需要知道进程启动的目录呢?当你想知道进程的配置信息或代码然后定位问题。

推荐工具:pwdx,readlink

查看单个或多个进程的启动目录

pwdx 进程pid01,进程pid02

查看单个进程的启动目录

ls /proc/{pid}/cwd

readlink  /proc/{pid}/cwd

readlink /proc/{pid}/exe

cwd符号链接的是进程运行目录;exe符号连接是执行程序的绝对路径;cmdline是程序运行时输入的命令行命令;environ记录了进程运行时的环境变量;fd目录下是进程打开或使用的文件的符号连接。查看进程打开的文件

进程打开的文件有 1.普通的文件;2.目录;3.网络文件系统的文件;4.字符设备文件;5.(函数)共享库;6.管道,命名管道 ;7.符号链接 ;8.底层的socket字流,网络socket,unix域名socket等,因为在Linux大部分的东西都被当做文件。

推荐工具:lsof

lsof -p pid01,pid02 查看进程打开文件列表

lsof /filepath/file 查看进程id查看进程占用的资源

进程占用的资源包括内存,CPU和磁盘,以及网络信息。

查看进程占用的内存推荐工具:pmap

pmap 进程pid

查看进程占用磁盘io推荐工具:pidstat、iostat、vmstat

pidstat -d  进程pid

iostat -dx r/s 和 w/s 分别是每秒的读操作和写操作,而rKB/s 和wKB/s 列以每秒千字节为单位显示了读和写的数据量。

查看进程占用内存/CPU/磁盘推荐工具:vmstat

vmstat关于线程、虚拟内存、磁盘和 CPU 活动的统计信息,还可以将生成的报告用于平衡系统负载活动。查看是否有僵尸进程和孤立进程

ps -ef | grep defunc 查看僵尸进程

僵尸进程和孤立进程怎么来的呢?又会造成什么影响呢?

如果子进程比父进程未先退出,但父进程并没有调用wait或waitpid获取子进程的状态信息,该子进程称之为僵死进程。

如果父进程比子进程先退出,那么子进程将被托孤给init进程,这时子进程称为孤立进程,其父进程是init进程(1号进程)。

机制:在每个进程退出的时候,内核释放该进程所有的资源,包括打开的文件和占用的内存等。 但是仍然为其保留一定的信息(包括进程号,退出状态,运行时间)。直到父进程通过wait/waitpid来取时才释放。 但如果进程不调用wait/waitpid的话, 那么保留的那段信息就不会释放,其进程号就会一直被占用,如果系统所能使用的进程号是有限的,如果大量的产生僵死进程,将因为没有可用的进程号而导致系统不能产生新的进程。此即为僵尸进程的危害,应当避免。

每当出现一个孤儿进程的时候,内核就把孤儿进程的父进程设置为init,而init进程会循环地wait()已经退出的子进程,会做好善后工作。孤儿进程并没有有什么危害。查看进程的堆栈信息

推荐工具:gcore、gdb、pstack、strace

gcore 进程pid

gdb attach 进程pid,再使用命令thread apply all bt

pstack 进程pid

strace 进程pid杀死进程

kill -9 进程pid

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值