### 进程文件
在Linux中“一切皆文件”,进程的一切运行信息(占用CPU、内存等)都可以在文件系统找到,例如看一下PID为1的进程信息。
~~~
root@87096bf68cb2:/go/src# ls /proc/1/
attr cmdline cwd fdinfo loginuid mounts numa_maps pagemap sessionid status wchan
auxv comm environ gid_map maps mountstats oom_adj personality smaps syscall
cgroup coredump_filter exe io mem net oom_score projid_map stat task
clear_refs cpuset fd limits mountinfo ns oom_score_adj root statm uid_map
~~~
我们可以看一下它的运行状态,通过`cat /proc/1/status`即可。
~~~
root@87096bf68cb2:/go/src# cat /proc/1/status
Name: bash
State: S (sleeping)
Tgid: 1
Ngid: 0
Pid: 1
PPid: 0
TracerPid: 0
Uid: 0 0 0 0
Gid: 0 0 0 0
FDSize: 256
Groups:
VmPeak: 20300 kB
VmSize: 20300 kB
VmLck: 0 kB
VmPin: 0 kB
VmHWM: 3228 kB
VmRSS: 3228 kB
VmData: 408 kB
VmStk: 136 kB
VmExe: 968 kB
VmLib: 2292 kB
VmPTE: 60 kB
VmSwap: 0 kB
Threads: 1
SigQ: 0/3947
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000010000
SigIgn: 0000000000380004
SigCgt: 000000004b817efb
CapInh: 00000000a80425fb
CapPrm: 00000000a80425fb
CapEff: 00000000a80425fb
CapBnd: 00000000a80425fb
Seccomp: 0
Cpus_allowed: 1
Cpus_allowed_list: 0
Mems_allowed: 00000000,00000001
Mems_allowed_list: 0
voluntary_ctxt_switches: 684
nonvoluntary_ctxt_switches: 597
~~~
参考Linux手册可以看到更多信息,我们这不再深究,实际上`ps`命令获得的数据也是在这个文件系统获得的。
我们已经了解了这么多进程属性,是时候开始学习“传说中”的死锁问题了。
- 前言
- 致谢
- 概述
- 使用代码
- 使用Docker
- 进程基础
- 进程是什么
- Hello World
- PID
- PPID
- 使用PID
- 进程名字
- 进程参数
- 输入与输出
- 并发与并行
- 进程越多越好
- 进程状态
- 退出码
- 进程资源
- 死锁
- 活锁
- POSIX
- Nohup
- 运行进程
- Go编程实例
- 衍生新进程
- 执行外部程序
- 复制进程
- 进程进阶
- 文件锁
- 孤儿进程
- 僵尸进程
- 守护进程
- 进程间通信
- 信号
- Linux系统调用
- 文件描述符
- Epoll
- 共享内存
- Copy On Write
- Cgroups
- Namespaces
- 项目实例Run
- 项目架构
- 代码实现
- 注意事项
- 创建目录权限
- 捕获SIGKILL
- Sendfile系统调用
- 后记
- 参考书籍
- 项目学习
- 再次感谢