linux如何查找到某一个进程在调用哪些文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux如何查找到某一个进程在调用哪些文件相关的知识,希望对你有一定的参考价值。

1、查看进程“打开”的文件 (方法1): 1)pidof programe-name(获得想了解的进程(programe-name)的PID) 或ps -aux|grep programe-name(获得想了解的进程(programe-name)的PID) 找出进程的PID 2)cd /proc/$PID/fd(会看见文件描述符) 3)ls -l 得到文件描述符指向的实际文件,即当前进程打开的文件2、查看进程“打开”的文件 (方法2): 1)获得想了解的进程的PID方法同上 2)lsof -c programe-name 或lsof -p $PID 参考技术A 可以使用:ps -fe|grep filename,
也可以使用:fuser filename查看
然后可以看这个进程跟哪里东西有关联,使用了哪些端口
只查看该进程:ps -ef | grep ID
查看该进程打开的文件:lsof -p ID
查看内存分配:lcat /proc/ID/maps
查看堆栈:pstack 11ID
查看发出的系统调用:strace -p ID
查看调用库函数:ltrace -p ID本回答被提问者采纳
参考技术B 1. 取得进程号
cba001:/proc/26751/fd # ps -ef|grep named
root 17066 26915 0 13:06 pts/8 00:00:00 grep named
root 26751 1 0 Jul06 ? 00:02:06 /opt/***/***/usr/bin/named
[注]: 执行ps -ef|grep named取得named的进程号为26751
2.查看打开的文件
cba001:/proc/26751/fd # ls -al /proc/26751/fd/
total 20
dr-x------ 2 root vboxusers 0 Jul 21 12:48 .
dr-xr-xr-x 5 root vboxusers 0 Jul 6 10:25 ..
lrwx------ 1 root vboxusers 64 Jul 21 12:48 0 -> /dev/null
lrwx------ 1 root vboxusers 64 Jul 21 12:48 1 -> /dev/null
lr-x------ 1 root vboxusers 64 Jul 21 12:48 10 -> /dev/random
lrwx------ 1 root vboxusers 64 Jul 21 12:48 2 -> /dev/null
lrwx------ 1 root vboxusers 64 Jul 21 12:48 20 -> socket:/[64750499]
lrwx------ 1 root vboxusers 64 Jul 21 12:48 21 -> socket:/[64750501]
lrwx------ 1 root vboxusers 64 Jul 21 12:48 22 -> socket:/[64750503]
lrwx------ 1 root vboxusers 64 Jul 21 12:48 23 -> socket:/[64750506]
lrwx------ 1 root vboxusers 64 Jul 21 12:48 24 -> socket:/[64750507]
lrwx------ 1 root vboxusers 64 Jul 21 12:48 3 -> socket:/[64750437]
lrwx------ 1 root vboxusers 64 Jul 21 12:48 4 -> /dev/null
lr-x------ 1 root vboxusers 64 Jul 21 12:48 5 -> pipe:/[64750439]
lrwx------ 1 root vboxusers 64 Jul 21 12:48 512 -> socket:/[64750498]
lrwx------ 1 root vboxusers 64 Jul 21 12:48 513 -> socket:/[64750500]
lrwx------ 1 root vboxusers 64 Jul 21 12:48 514 -> socket:/[64750502]
lrwx------ 1 root vboxusers 64 Jul 21 12:48 515 -> socket:/[64750504]
lrwx------ 1 root vboxusers 64 Jul 21 12:48 516 -> socket:/[64750505]
l-wx------ 1 root vboxusers 64 Jul 21 12:48 7 -> pipe:/[64750439]
lrwx------ 1 root vboxusers 64 Jul 21 12:48 8 -> socket:/[64750441]
lrwx------ 1 root vboxusers 64 Jul 21 12:48 9 -> /var/***/logs/***_trans.log
[注]:执行ls -al /proc/26751/fd/就可以看到所有的26751进程打开的文件描述符
参考技术C 1.启动计算机时,在系统进入 Windows 启动画面前,按下 F8 键;出现操作系统多模式启动菜单后,用键盘上的方向键选择“SafeMode”,以安全模式启动计算机。 2.启动完成后,单击开始,在搜索框中输入regedit.exe;按下回车键;打开注册表编辑器。 参考技术D ps-ef|grepprocess_name#找到进程IDls-la/proc/进程ID/fd#查看打开的文件

使用vi打开文件如何跳到某一行,第一行或者最后一行呢

参考技术A 使用vi编辑器的时候,默认打开的时候,鼠标是在第一行的第一个位置。
如果你想打开的时候,鼠标会出现在某一行,可以用以下命令。

:$ 跳到文件最后一行
:0或:1 跳到文件第一行
说明:+ n 就可以定位到任意行n, 比如:40就是定位到第40行

以上是关于linux如何查找到某一个进程在调用哪些文件的主要内容,如果未能解决你的问题,请参考以下文章

进入linux的进程管理器后不知道怎么退出来了

linux中如何查看某个文件被哪些进程占用

Linux中如何启动进程?进程调度命令都有哪些?

【zombie】如何查看并杀死僵尸进程?

linux下如何杀死某进程,然后在手动启动

请问如何隐藏指定的进程?