TL; DR
W jednym ze swoich komentarzy stwierdzasz:
Moja dokładna sytuacja brzmi: mam ścieżkę do pliku. Jest zablokowany, jeśli Firefox jest uruchomiony. Chcę sprawdzić, czy jest zablokowany, czy nie powiedzieć, czy Firefox jest uruchomiony.
Twoje pierwotne pytanie dotyczące plików blokujących wydaje się być daleką drogą, gdy istnieją łatwiejsze sposoby, aby dowiedzieć się, czy Firefox działa dla danego użytkownika i sprawdzić jego stan procesu.
Badanie stanu procesu
Bardziej sensownym sposobem znalezienia PID danego procesu jest użycie pgrep z pakietu procps . Na przykład:
$ pgrep -u $LOGNAME firefox
5671
Następnie możesz sprawdzić stan PID za pomocą ps :
$ ps 5671
PID TTY STAT TIME COMMAND
5671 ? Sl 105:47 /usr/lib/firefox/firefox
lub po prostu zdobądź flagi stanu bez żadnych innych cruft:
$ ps -ho stat $(pgrep -u $LOGNAME firefox)
Sl
Jeden z moich systemów, powyższa linijka konsekwentnie zajmuje tylko 1,4 milisekundy. Twój przebieg może się różnić.
Przetwarzaj kody stanu
Sekcja KODY STANU PROCESU ps (1) szczegółowo opisuje znaczenie różnych flag stanu. W Ubuntu 14.04 strona podręcznika mówi:
PROCESS STATE CODES
Here are the different values that the s, stat and state output
specifiers (header "STAT" or "S") will display to describe the state of
a process:
D uninterruptible sleep (usually IO)
R running or runnable (on run queue)
S interruptible sleep (waiting for an event to complete)
T stopped, either by a job control signal or because it is
being traced
W paging (not valid since the 2.6.xx kernel)
X dead (should never be seen)
Z defunct ("zombie") process, terminated but not reaped by
its parent
For BSD formats and when the stat keyword is used, additional
characters may be displayed:
< high-priority (not nice to other users)
N low-priority (nice to other users)
L has pages locked into memory (for real-time and custom IO)
s is a session leader
l is multi-threaded (using CLONE_THREAD, like NPTL pthreads
do)
+ is in the foreground process group