Làm thế nào để có được dòng lệnh của quá trình UNIX?


8

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?


1
ps --pid $PID -o args=Dù sao đó cũng là thứ tôi sử dụng ...
yardena

2
Tương đương với Mac của lệnh đó là:ps -p <pid> -o args=
Nate

1
nếu "-o args =" cắt ngắn đầu ra, bạn có thể thửps -p <pid> -o command=
Jose Alban

Câu trả lời:


11

ps axhiể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.


@ mark4o Hoặc đơn giản là ps awux | cat, vì ps -w sẽ không giới hạn số lượng cột sẽ hiển thị khi đầu ra không xuất sắc, chẳng hạn như khi được chuyển sang lệnh khác.
jtimberman

1
Tại sao điều này xảy ra mỗi tuần? "Cảnh báo: cú pháp ps xấu, có lẽ là không có thật '-'? Xem Procps.sf.net/faq.html " và "Lưu ý rằng" ps -aux "khác với" ps aux ". Các tiêu chuẩn POSIX và UNIX yêu cầu" ps -aux "in tất cả các quy trình thuộc sở hữu của người dùng có tên" x ", cũng như in tất cả các quy trình sẽ được chọn bởi tùy chọn -a. Nếu người dùng có tên" x "không tồn tại, ps này có thể hiểu lệnh là "ps aux" thay vào đó và in một cảnh báo. Hành vi này nhằm hỗ trợ cho việc chuyển đổi các tập lệnh và thói quen cũ. Nó rất mong manh, có thể thay đổi và do đó không nên dựa vào. "
Hello71

Tôi không biết, Hello71. Tôi đã sửa câu trả lời hai tuổi của tôi cho bạn.
Bkkbrad

4

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).


2

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ố $PROCESSNUMBERtrực tiếp từ kernel ( /proc/$PROCESSNUMBER/cmdlinephầ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 -tokenthay 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!


3
Áp phích ban đầu yêu cầu Mac OS X (không có trong hộp procfs)
Andre Holzner

2
Hoặcxargs -0 < /proc/PID/cmdline
Bash
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.