TL; DR
В одному зі своїх коментарів ви заявляєте:
Ну моя точна ситуація: я маю шлях до файлу. Він заблокований, якщо працює Firefox. Я хочу перевірити, заблоковано чи не, чи працює Firefox.
Ваше первісне запитання про фіксації файлів здається довгим, коли існують простіші способи з'ясувати, чи працює Firefox для певного користувача та перевірити його стан.
Розгляд стану процесу
Більш розумний спосіб знайти PID даного процесу є використання pgrep з PROCPS пакета. Наприклад:
$ pgrep -u $LOGNAME firefox
5671
Потім можна перевірити стан PID за допомогою ps :
$ ps 5671
PID TTY STAT TIME COMMAND
5671 ? Sl 105:47 /usr/lib/firefox/firefox
або просто дістайте державні прапори без будь-якої іншої суворості:
$ ps -ho stat $(pgrep -u $LOGNAME firefox)
Sl
Один з моїх систем, один-лайнер вище, постійно займає всього 1,4 мілісекунди. Ваш пробіг може відрізнятися.
Коди стану процесів
У розділі КСЕС ДЕРЖАВНОГО ПРОЦЕСУ в розділі ps (1) докладно описано, що означають різні державні прапори. На сторінці Ubuntu 14.04 на чоловікові написано:
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