Bagaimana cara mendapatkan baris perintah dari proses UNIX?

8

Apakah mungkin untuk mengambil baris perintah yang digunakan untuk menjalankan proses pada Mac OS X?

pengguna7656
sumber
1
ps --pid $PID -o args=Itulah yang saya gunakan, bagaimanapun ...
yardena
2
Setara dengan Mac dari perintah itu adalah:ps -p <pid> -o args=
Nate
1
jika "-o args =" memotong output, Anda dapat mencobaps -p <pid> -o command=
Jose Alban

Jawaban:

11

ps axmenampilkan baris perintah dari semua proses yang sedang berjalan; Anda dapat menangkap untuk pid yang Anda inginkan.

Bkkbrad
sumber
@ mark4o Atau cukup ps awux | cat, seperti ps -w tidak akan membatasi jumlah kolom untuk ditampilkan ketika output tidak stdout, seperti ketika disalurkan ke perintah lain.
jtimberman
1
Mengapa ini terjadi setiap minggu? "Peringatan: sintaks ps buruk, mungkin palsu '-'? Lihat procps.sf.net/faq.html " dan "Perhatikan bahwa" ps -aux "berbeda dari" ps aux ". Standar POSIX dan UNIX mensyaratkan bahwa" ps -aux "cetak semua proses yang dimiliki oleh pengguna bernama" x ", serta cetak semua proses yang akan dipilih oleh opsi -a. Jika pengguna bernama" x "tidak ada, ps ini dapat mengartikan perintah sebagai "ps aux" sebagai gantinya dan mencetak peringatan. Perilaku ini dimaksudkan untuk membantu dalam mentransisikan skrip dan kebiasaan lama. Ini rapuh, dapat berubah, dan karenanya tidak dapat diandalkan. "
Hello71
Saya tidak tahu, Hello71. Saya mengoreksi jawaban saya yang berumur dua tahun untuk Anda.
Bkkbrad
4

Apakah:

~$ 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

lakukan apa yang Anda inginkan (ubah ntp ke program yang Anda minati)? Ini biasanya memberi saya argumen baris perintah dari proses yang sedang berjalan (saya gunakan untuk memeriksa apa yang digunakan Launchd ketika menjalankan daemon sistem misalnya).

Tentakel
sumber
2

cat /proc/$PROCESSNUMBER/cmdline | tr '\0' '\n'

Meskipun spesifik untuk Linux, ia mendapatkan baris perintah dari proses yang diberi nomor $PROCESSNUMBERlangsung dari kernel ( /proc/$PROCESSNUMBER/cmdlinebagian) dan membuatnya dapat dibaca dengan meletakkan setiap argumen pada baris terpisah dengan menerjemahkan (dengan tr -tokenmengganti) \ 0 ke baris baru (\ n).

Baris ini hanya berfungsi jika Anda meletakkan jumlah proses sebenarnya dari proses yang sedang berjalan (Anda dapat menemukannya dengan menjalankan perintah ps -ef) di bagian $ PROCESSNUMBER!

JaanHaan
sumber
3
Poster asli meminta Mac OS X (yang tidak ada kotaknya procfs)
Andre Holzner
2
Atauxargs -0 < /proc/PID/cmdline
Bash