Proc and Processes
![]() |
ls /proc will show you a long list of directories. These are your processes, one directory per process ID. Have a look at your process list (using ps -A), and pick a process. The one I'll look at is
1787 ? 00:00:00 thunderbird |
Look at the contents of that directory. The file cmdline tells you what command was used to launch this process. This can be useful if the problem you have is launch-related. You'll be warned that this might be binary, but it's mostly text and easy to read. environ, similarly, gives you the command environment, which is also useful for troubleshooting (try starting the process on another machine and comparing the files); and the fd directory allows you to check what the process is accessing.
maps shows the memory maps to executables and library files. For each executable or library, the memory address is given, together with the permissions (r/w/x, s(hared), and p(rivate - copy on write)), the offset into the file, and the device and device inode. For my Thunderbird process, it starts like this:
08048000-080e9000 r-xp 00000000 03:01 2354694 /bin/bash 080e9000-080ef000 rw-p 000a0000 03:01 2354694 /bin/bash 080ef000-08183000 rw-p 080ef000 00:00 0 [heap] |
For further information, the proc manpage is incredibly comprehensive and well worth a look.