Řešení 1:
Miluju lsof
, ale myslím, že na takovou jednoduchou otázku je to přehnané. /proc
souborový systém obsahuje vše, co chcete vědět. Možná by byl nejlepší příklad:
# ps ax|grep tail 7196 pts/4 S+ 0:00 tail -f /var/log/messages 8773 pts/0 R+ 0:00 grep tail # ls -l /proc/7196/cwd lrwxrwxrwx 1 insyte insyte 0 2009-07-29 19:05 /proc/7196/cwd -> /home/insyte # ls -l /proc/7196/fd total 0 lrwx------ 1 insyte insyte 64 2009-07-29 19:05 0 -> /dev/pts/4 lrwx------ 1 insyte insyte 64 2009-07-29 19:05 1 -> /dev/pts/4 lrwx------ 1 insyte insyte 64 2009-07-29 19:02 2 -> /dev/pts/4 lr-x------ 1 insyte insyte 64 2009-07-29 19:05 3 -> /var/log/messages
Takže jak vidíte, /proc/$PID
adresář obsahuje symbolický odkaz nazvaný "cwd", který spojuje CWD procesu. Totéž platí pro otevřené deskriptory souborů uvedené v /proc/$PID/fd
.
/proc/$PID
hierarchie obsahuje velké množství informací o všech běžících procesech. Stojí za to se do toho pustit!
Řešení 2:
Pokud máte příkaz lsof dostupné [což dělá většina *nix příchutí] byste použili:
lsof -p NNN
zobrazit seznam souborů otevřených procesem NNN. Už nějakou dobu nepoužívám BSD, ale z paměťové zapékací jednotky je blízkou paralelou k lsof.
Nejsem si jistý příkazem k nalezení cwd procesu, ale na Linuxu je cwd symbolicky propojen do adresáře /proc procesu, tzn. /proc/NNN/cwd.
Řešení 3:
pokud znáte PID procesů, stačí vydat
lsof | grep YOURPID
Rychle a snadno zapamatovatelné.
nebo
lsof -c yourprogramexecutable
Řešení 4:
Zkuste lsof, pokud je ve vašem systému nainstalován
D