Using the /proc file system to gather information about the current process
Overview
The /proc
directory is a pseudo-file system. It doesn’t contain ‘real’ files but runtime system information (e.g. system memory, devices mounted, hardware configuration, etc). In order words, it contains information about the running server as reported by the kernel.
There is a vast amount of information in the /proc
directory. Today I needed to find information about the current process without running any commands. By using the /proc/self/*
files, this information is readily available.
Details
In this example, we are looking at the /proc
file systems for the current running process, self
:
jemurray@home-server:/proc/self$ ls -al
total 0
dr-xr-xr-x 9 jemurray jemurray 0 Dec 17 16:26 .
dr-xr-xr-x 238 root root 0 Oct 1 18:14 ..
dr-xr-xr-x 2 jemurray jemurray 0 Dec 17 16:27 attr
-rw-r--r-- 1 jemurray jemurray 0 Dec 17 16:27 autogroup
-r-------- 1 jemurray jemurray 0 Dec 17 16:27 auxv
-r--r--r-- 1 jemurray jemurray 0 Dec 17 16:27 cgroup
--w------- 1 jemurray jemurray 0 Dec 17 16:27 clear_refs
-r--r--r-- 1 jemurray jemurray 0 Dec 17 16:26 cmdline
-rw-r--r-- 1 jemurray jemurray 0 Dec 17 16:27 comm
-rw-r--r-- 1 jemurray jemurray 0 Dec 17 16:27 coredump_filter
-r--r--r-- 1 jemurray jemurray 0 Dec 17 16:27 cpuset
lrwxrwxrwx 1 jemurray jemurray 0 Dec 17 16:27 cwd -> /proc/32093
-r-------- 1 jemurray jemurray 0 Dec 17 16:27 environ
lrwxrwxrwx 1 jemurray jemurray 0 Dec 17 16:27 exe -> /bin/bash
dr-x------ 2 jemurray jemurray 0 Dec 17 16:26 fd
dr-x------ 2 jemurray jemurray 0 Dec 17 16:27 fdinfo
-rw-r--r-- 1 jemurray jemurray 0 Dec 17 16:27 gid_map
-r-------- 1 jemurray jemurray 0 Dec 17 16:27 io
-r--r--r-- 1 jemurray jemurray 0 Dec 17 16:27 limits
To find the uid
of the current user, view the /proc/self/loginuid
:
jemurray@home-server:/proc$ cat self/loginuid
1000
UserID is confirmed with the id
command:
jemurray@home-server:/proc$ id
uid=1000(jemurray) gid=1000(jemurray) groups=1000(jemurray),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),108(lxd)
This is just one small example, explore all the files for more information.