Let's say you want to look at what /proc can tell you about your login shell. The first thing you probably want to do is display your shell's process ID.
$ echo $$
8009
$ cd 8009
$ ls -l
total 0
dr-xr-xr-x 2 shs staff 0 Aug 17 12:52 attr
-r-------- 1 shs staff 0 Aug 17 12:52 auxv
-r--r--r-- 1 shs staff 0 Aug 17 12:52 cmdline
-rw-r--r-- 1 shs staff 0 Aug 17 12:52 coredump_filter
-r--r--r-- 1 shs staff 0 Aug 17 12:52 cpuset
lrwxrwxrwx 1 shs staff 0 Aug 17 12:52 cwd -> /proc/8009
-r-------- 1 shs staff 0 Aug 17 12:52 environ
lrwxrwxrwx 1 shs staff 0 Aug 17 12:52 exe -> /bin/bash
dr-x------ 2 shs staff 0 Aug 17 12:52 fd
dr-x------ 2 shs staff 0 Aug 17 12:52 fdinfo
-r-------- 1 shs staff 0 Aug 17 12:52 io
-r--r--r-- 1 shs staff 0 Aug 17 12:52 limits
-rw-r--r-- 1 shs staff 0 Aug 17 12:52 loginuid
-r--r--r-- 1 shs staff 0 Aug 17 12:52 maps
-rw------- 1 shs staff 0 Aug 17 12:52 mem
-r--r--r-- 1 shs staff 0 Aug 17 12:52 mounts
-r-------- 1 shs staff 0 Aug 17 12:52 mountstats
-rw-r--r-- 1 shs staff 0 Aug 17 12:52 oom_adj
-r--r--r-- 1 shs staff 0 Aug 17 12:52 oom_score
lrwxrwxrwx 1 shs staff 0 Aug 17 12:52 root -> /
-r--r--r-- 1 shs staff 0 Aug 17 12:52 schedstat
-r--r--r-- 1 shs staff 0 Aug 17 12:52 smaps
-r--r--r-- 1 shs staff 0 Aug 17 12:52 stat
-r--r--r-- 1 shs staff 0 Aug 17 12:52 statm
-r--r--r-- 1 shs staff 0 Aug 17 12:52 status
dr-xr-xr-x 3 shs staff 0 Aug 17 12:52 task
-r--r--r-- 1 shs staff 0 Aug 17 12:52 wchan
Some of these files are easy to use. Others require a lot more effort. The stat file provides information about a process' status, but represents the information in this format:
$ cat stat
8009 (bash) S 8008 8009 8009 34816 9706 4194304 5516 51685 0 1 6 8 37 47 15 0 1
0 1831964390 4898816 370 4294967295 134508544 135222164 3215953072 3215951
908 10765314 0 65536 3686404 1266761467 3225587569 0 0 17 2 0 0 0
The status file is much easier to use. It provides the same kind of information as stat but in a friendlier format.
$ cat status
Name: bash
State: S (sleeping)
SleepAVG: 98%
Tgid: 8009
Pid: 8009
PPid: 8008
TracerPid: 0
Uid: 263 263 263 263
Gid: 100 100 100 100
FDSize: 256
Groups: 100
VmPeak: 4784 kB
VmSize: 4784 kB
VmLck: 0 kB
VmHWM: 1476 kB
VmRSS: 1476 kB
VmData: 316 kB
VmStk: 88 kB
VmExe: 700 kB
VmLib: 1544 kB
VmPTE: 28 kB
StaBrk: 08851000 kB
Brk: 08893000 kB
StaStk: bfaf8cb0 kB
ExecLim: 080f6000
Threads: 1
SigQ: 0/32375
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000010000
SigIgn: 0000000000384004
SigCgt: 000000004b813efb
CapInh: 0000000000000000
CapPrm: 0000000000000000
CapEff: 0000000000000000
Cpus_allowed: 0000000f
Mems_allowed: 1
Some of this information is very straightforward -- the name of the process (bash), the process ID and parent process ID. You should be easily able to pick out the UID and GID.
It should come as no surprise that our process is sleeping. At any time, most processes are sleeping and, though we're obviously using the shell when we run this command, we're running another process within the shell. We can also see that our shell is sleeping 98% of the time.
$ cat limits
Limit Soft Limit Hard Limit Units
Max cpu time unlimited unlimited seconds
Max file size unlimited unlimited bytes
Max data size unlimited unlimited bytes
Max stack size 10485760 unlimited bytes
Max core file size unlimited unlimited bytes
Max resident set unlimited unlimited bytes
Max processes 50 50 processes
Max open files 1024 1024 files
Max locked memory 32768 32768 bytes
Max address space unlimited unlimited bytes
Max file locks unlimited unlimited locks
Max pending signals 32375 32375 signals
Max msgqueue size 819200 819200 bytes
Max nice priority 0 0
Max realtime priority 0 0
The environ file shows some details about our operational environment -- such as our search path.
$ cat environ
USER=shsLOGNAME=shsHOME=/home/staff /shsPATH=/usr/local/bin:/bin:/usr/binMAIL=
/var/mail/shsSHELL=/bin/bashSSH_CLIENT=10.20.30.111 8506 22SSH_CONNECTION=10.20.
30.111 8506 192.168.0.12 22SSH_TTY=/dev/pts/0TERM=xterm
Another interesting file to look at is the io file. As you can see, it's reporting on characters read and written. Note the changes between the first and second running.
$ cat io
rchar: 1953940
wchar: 57247
syscr: 1791
syscw: 917
read_bytes: 8192
write_bytes: 8192
cancelled_write_bytes: 4096
$ cat io
rchar: 1955293
wchar: 57370
syscr: 1804
syscw: 921
read_bytes: 8192
write_bytes: 8192
cancelled_write_bytes: 4096
Comments
Post a Comment