查看端口号及对应的进程信息
注下面的示例均是在 root 帐号进行操作,示例代码可以根据实际情况调整。
- 通过
netstat -ntlp
查看目前机器上的端口占用情况 - 获取
port
pid
信息
1 | bash复制代码netstat -ntlp | awk -F'/' '{print $1}' | awk '{print $4,$NF}' | awk -F':' '{if (NR>2){print $NF}}' |
- 根据进程查看进程下详细信息
/proc/pid/
目录下文件说明
proc - process information pseudo-filesystem
(进程信息伪文件系统)。proc文件系统中的大多数文件都是只读的,但也有一些文件是可写的,允许更改内核变量。 下面列出的文件及目录的详细描述参考
- attr
+ current
+ exec
+ fscreate
+ keycreate
+ prev
+ sockcreate
- autogroup
- auxv
包含传递给进程的ELF
解释器信息,格式是每一项都是一个unsigned long
长度的ID
加上一个unsigned long
长度的值。最后一项以连续的两个0x00
开头。
1 | yaml复制代码hexdump auxv |
- cgroup
- clear_refs
- cmdline
是一个只读文件,包含进程的完整命令行信息.
1 | ini复制代码# cat cmdline |
- comm
包含进程的命令名。
1 | shell复制代码# cat comm |
- coredump_filter
- cpuset
- cwd
是进程当前工作目录的符号链接。
1 | perl复制代码# ll cwd |
- environ
显示进程的环境变量
1 | ini复制代码# strings environ |
- exe
为实际运行程序的符号链接。
- fd
是一个目录,包含进程打开文件的情况。
- fdinfo
- gid_map
- io
- limits
显示当前进程的资源限制。
1 | python复制代码# cat limits |
- loginuid
- map_files
- maps
显示进程的内存区域映射信息。
1 | lua复制代码# cat maps | head |
- mem
- mountinfo
- mounts
- mountstats
- net
- ns
- numa_maps
- oom_adj
- oom_score
- oom_score_adj
- pagemap
- personality
- projid_map
- root
- sched
- schedstat
- sessionid
- setgroups
- smaps
- stack
显示当前进程的内核调用栈信息,只有内核编译时打开了CONFIG_STACKTRACE
编译选项,才会生成这个文件。
1 | ini复制代码# cat stack |
- stat
- statm
显示进程所占用内存大小的统计信息,包含七个值,度量单位是page
(page
大小可通过getconf PAGESIZE
得到)。
1 | yaml复制代码# cat statm |
七个值的含义分别为
+ 进程占用的总的内存
+ 进程当前时刻占用的物理内存
+ 同其它进程共享的内存
+ 进程的代码段
+ 共享库(从2.6版本起,这个值为0)
+ 进程的堆栈
+ dirty pages(从2.6版本起,这个值为0)
+ status包含进程的状态信息。其很多内容与`/proc/[pid]/stat`和`/proc/[pid]/statm`,但是却是以一种更清晰地方式展现出来。
1 | yaml复制代码# cat status |
- syscall
显示当前进程正在执行的系统调用
1 | shell复制代码# cat syscall |
- task
- timers
- uid_map
- wchan
显示当进程sleep
时,kernel
当前运行的函数。
1 | shell复制代码# cat wchan |
代码实现
1 | golang复制代码import ( |
参考
本文转载自: 掘金