TL; DR
Trong một trong những bình luận của bạn , bạn nêu:
Vâng, tình huống chính xác của tôi là: Tôi có đường dẫn đến một tập tin. Nó bị khóa nếu firefox đang chạy. Tôi muốn xem nó có bị khóa hay không để biết firefox đang chạy.
Câu hỏi ban đầu của bạn về lockfiles có vẻ như là một chặng đường dài khi có nhiều cách dễ dàng hơn để tìm hiểu xem Firefox có đang chạy cho một người dùng nhất định hay không và kiểm tra trạng thái quy trình của nó.
Quy trình kiểm tra nhà nước
Một cách hợp lý hơn để tìm ra PID của một quy trình nhất định là sử dụng pgrep từ gói Procps . Ví dụ:
$ pgrep -u $LOGNAME firefox
5671
Sau đó, bạn có thể kiểm tra trạng thái của PID bằng ps :
$ ps 5671
PID TTY STAT TIME COMMAND
5671 ? Sl 105:47 /usr/lib/firefox/firefox
hoặc chỉ nhận các cờ trạng thái mà không có bất kỳ hành trình nào khác:
$ ps -ho stat $(pgrep -u $LOGNAME firefox)
Sl
Một hệ thống của tôi, một lớp lót ở trên luôn chỉ mất 1,4 mili giây để hoàn thành. Số dặm của bạn có thể thay đổi.
Xử lý mã nhà nước
Phần COOCES PROCESS STATE của ps (1) nêu chi tiết ý nghĩa của các cờ trạng thái khác nhau. Trên Ubuntu 14.04, trang người đàn ông nói:
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