### 進程文件
在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系統調用
- 后記
- 參考書籍
- 項目學習
- 再次感謝