Có thể lấy dòng lệnh đã được sử dụng để gọi một quy trình trên Mac OS X không?
ps -p <pid> -o args=
ps -p <pid> -o command=
Có thể lấy dòng lệnh đã được sử dụng để gọi một quy trình trên Mac OS X không?
ps -p <pid> -o args=
ps -p <pid> -o command=
Câu trả lời:
ps ax
hiển thị cho bạn dòng lệnh của tất cả các quy trình đang chạy; bạn có thể grep cho pid bạn muốn.
Làm:
~$ ps ax | grep "ntp"
57 ?? Ss 0:04.66 /usr/sbin/ntpd -c /private/etc/ntp.conf -n
3104 s000 S+ 0:00.00 grep ntp
làm những gì bạn cần nó (thay đổi ntp thành chương trình bạn quan tâm)? Điều này thường cung cấp cho tôi các đối số dòng lệnh của các quy trình đang chạy (tôi sử dụng để kiểm tra Launchd đã sử dụng gì khi chạy trình nền hệ thống chẳng hạn).
cat /proc/$PROCESSNUMBER/cmdline | tr '\0' '\n'
Mặc dù đó là Linux cụ thể, nhưng nó nhận được dòng lệnh của quá trình được đánh số $PROCESSNUMBER
trực tiếp từ kernel ( /proc/$PROCESSNUMBER/cmdline
phần) và làm cho nó có thể đọc được bằng cách đặt từng đối số trên một dòng riêng biệt bằng cách dịch ( tr -token
thay thế) \ 0 thành dòng mới (\ n).
Dòng này chỉ hoạt động nếu bạn đặt một quy trình thực sự của một quy trình đang chạy (bạn có thể tìm thấy một quy trình bằng cách chạy lệnh ps -ef
) trong phần $ PROCESSNUMBER!
procfs
)
xargs -0 < /proc/PID/cmdline
ps --pid $PID -o args=
Dù sao đó cũng là thứ tôi sử dụng ...