Linux目录--proc详解
生活随笔
收集整理的這篇文章主要介紹了
Linux目录--proc详解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
查看根目錄內容
[root@xxxx /]# ls bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr varproc簡介
Linux 內核提供了一種進程信息虛擬文件系統(Process information virtual file system) ,簡稱 proc,通過 proc 這個虛擬的文件系統,可以在運行時訪問內核(core)內部數據結構、改變內核的某些參數設置。
數據都是在內存里,本身不占任何硬盤空間。如進程,是動態改變的,所以用戶或應用程序讀取proc文件時,proc文件系統是動態從系統內核讀出所需信息并提交的
另外,在/proc下還有三個很重要的目錄:net,scsi和sys。 sys目錄是可寫的,可以通過它來訪問或修改內核的參數,而net和scsi則依賴于內核配置。例如,如果系統不支持scsi,則scsi 目錄不存在。
進程目錄
/proc 下有一些以數字命名的目錄,它們是進程目錄。系統中當前運行的每一個進程都有對應的一個目錄在/proc下,以進程的 PID號為目錄名,它們是讀取進程信息的接口。而self目錄則是讀取進程本身的信息接口,是一個link。
#以進程 4327為例 [root@xxxx 4237]# ls ls: cannot read symbolic link exe: No such file or directory total 0 dr-xr-xr-x 2 root root 0 Jun 29 12:56 attr -rw-r--r-- 1 root root 0 Jun 29 12:56 autogroup -r-------- 1 root root 0 Jun 29 12:56 auxv -r--r--r-- 1 root root 0 Jun 29 12:56 cgroup --w------- 1 root root 0 Jun 29 12:56 clear_refs -r--r--r-- 1 root root 0 Jun 29 12:56 cmdline #cmdline,進程啟動命令 -rw-r--r-- 1 root root 0 Jun 29 12:56 comm -rw-r--r-- 1 root root 0 Jun 29 12:56 coredump_filter -r--r--r-- 1 root root 0 Jun 29 12:56 cpuset lrwxrwxrwx 1 root root 0 Jun 29 12:56 cwd -> / -r-------- 1 root root 0 Jun 24 16:35 environ lrwxrwxrwx 1 root root 0 Jun 24 16:35 exe #exe,指向啟動當前進程的可執行文件(完整路徑)的符號鏈接 dr-x------ 2 root root 0 Jun 24 19:40 fd #fd,進程相關的所有的文件描述符 dr-x------ 2 root root 0 Jun 29 12:56 fdinfo -rw-r--r-- 1 root root 0 Jun 29 12:56 gid_map -r-------- 1 root root 0 Jun 29 12:56 io -r--r--r-- 1 root root 0 Jun 29 12:56 limits -rw-r--r-- 1 root root 0 Jun 29 12:56 loginuid dr-x------ 2 root root 0 Jun 29 12:56 map_files -r--r--r-- 1 root root 0 Jun 29 12:56 maps -rw------- 1 root root 0 Jun 29 12:56 mem -r--r--r-- 1 root root 0 Jun 29 12:56 mountinfo -r--r--r-- 1 root root 0 Jun 29 12:56 mounts -r-------- 1 root root 0 Jun 29 12:56 mountstats dr-xr-xr-x 5 root root 0 Jun 29 12:56 net dr-x--x--x 2 root root 0 Jun 29 12:56 ns -r--r--r-- 1 root root 0 Jun 29 12:56 numa_maps -rw-r--r-- 1 root root 0 Jun 29 12:56 oom_adj -r--r--r-- 1 root root 0 Jun 29 12:56 oom_score -rw-r--r-- 1 root root 0 Jun 29 12:56 oom_score_adj -r--r--r-- 1 root root 0 Jun 29 12:56 pagemap -r-------- 1 root root 0 Jun 29 12:56 patch_state -r--r--r-- 1 root root 0 Jun 29 12:56 personality -rw-r--r-- 1 root root 0 Jun 29 12:56 projid_map lrwxrwxrwx 1 root root 0 Jun 29 12:56 root -> / -rw-r--r-- 1 root root 0 Jun 29 12:56 sched -r--r--r-- 1 root root 0 Jun 29 12:56 schedstat -r--r--r-- 1 root root 0 Jun 29 12:56 sessionid -rw-r--r-- 1 root root 0 Jun 29 12:56 setgroups -r--r--r-- 1 root root 0 Jun 29 12:56 smaps -r--r--r-- 1 root root 0 Jun 29 12:56 stack -r--r--r-- 1 root root 0 Jun 28 10:30 stat -r--r--r-- 1 root root 0 Jun 24 16:35 statm -r--r--r-- 1 root root 0 Jun 29 12:56 status #status,進程狀態信息 -r--r--r-- 1 root root 0 Jun 29 12:56 syscall dr-xr-xr-x 3 root root 0 Jun 29 12:56 task #task,包含由當前進程所運行的每一個線程的相關信息,每個線程的相關信息文件均保存在一個由線程號(tid)命名的目錄中 -r--r--r-- 1 root root 0 Jun 29 12:56 timers -rw-r--r-- 1 root root 0 Jun 29 12:56 uid_map -r--r--r-- 1 root root 0 Jun 29 12:56 wchan查看某個進程狀態
[root@xxxx 4237]# cat status Name: kworker/4:1H Umask: 0000 State: S (sleeping) Tgid: 4237 Ngid: 0 Pid: 4237 #進程id PPid: 2 #父進程id TracerPid: 0 Uid: 0 0 0 0 Gid: 0 0 0 0 FDSize: 64 Groups: Threads: 1 SigQ: 2/127880 SigPnd: 0000000000000000 ShdPnd: 0000000000000000 SigBlk: 0000000000000000 SigIgn: ffffffffffffffff SigCgt: 0000000000000000 CapInh: 0000000000000000 CapPrm: 0000001fffffffff CapEff: 0000001fffffffff CapBnd: 0000001fffffffff CapAmb: 0000000000000000 Seccomp: 0 Speculation_Store_Bypass: thread vulnerable Cpus_allowed: 00000000,00000000,00000000,00000010 Cpus_allowed_list: 4 Mems_allowed: 00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000001 Mems_allowed_list: 0 voluntary_ctxt_switches: 3521966 nonvoluntary_ctxt_switches: 5僵尸進程問題
某些情況下,我們需要殺java進程,下面使用強制殺死進程的方式
[root@xxxx usr]# kill -9 4327執行上面的命令發現沒有任何效果,使用 jps 查看, 進程還是存在
[root@xxxx usr]# jps -l此時便可以通過殺父進程的方式解決
[root@xxxx usr]# cat /proc/4327/status也就是上圖中的PPid
[root@xxxx usr]# kill -9 2總結
以上是生活随笔為你收集整理的Linux目录--proc详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Qt 设置textEdit插入文本的字体
- 下一篇: Qt QProcess执行Linux 命