ps -o args= -p "$pid"
Akan memberi tahu Anda daftar argumen yang diberikan kepada perintah terakhir yang proses dijalankan (atau jika tidak mengeksekusi, yang orang tuanya dieksekusi ...) asalkan proses tidak menimpa daftar argumennya setelah itu.
ps
akan menunjukkan bahwa daftar arg disatukan dengan spasi dan hingga batas yang mungkin dapat Anda tingkatkan dengan beberapa ps
implementasi dengan menambahkan beberapa -w
opsi). Di Linux, Anda dapat melihat arglist dipisahkan oleh NUL byte di /proc/$pid/cmdline
.
lsof +fg -ap "$pid" -d 0-2
Akan memberi tahu Anda apa yang dimaksud dengan deskriptor file stdin, stdout, dan stderr dan mode mereka dibuka sebagai (seperti hanya W,AP
untuk menulis dengan menambahkan seolah-olah >>
pengalihan digunakan dalam shell POSIX).
lsof
untuk mendeteksi bahwa proses diarahkan kemyapp.log
readlink /proc/$pid/fd/1
Anda dapat menggunakan
ps
perintah, dan menentukan pid untuk memeriksa dengan-p
switch, menggunakan-f
switch untuk memberikan daftar lengkap, atau-l
untuk daftar panjang yang lebih rinci.Sebagai contoh untuk output:
Namun ini menghasilkan baris header, yang mungkin tidak Anda inginkan dalam file log Anda. Anda dapat memotong ini dengan menggunakan
-h
opsi, jika pid Anda 1234:Perhatikan bahwa saya telah mengarahkan output menggunakan
>>
untuk menambahkan ke file log Anda.sumber
tail -n+1
(membutuhkan GNU, tetapi Q adalah Linux / Ubuntu). Atau hindari masalah denganps -h{f,l}p 1234
(juga GNU).tail -n1
pasti berfungsi di Ubuntu, mengapa+
perlu?tail -n+2
yang menunjukkan semua baris kecuali yang pertama.tail -n1
hanya menampilkan baris terakhir. Bandingkan:seq 1 10 | tail -n+2
dan seterusnya.-h
karena menghindari pipa yang tidak perlu dan proses ekstra.Menggunakan
ps -f
Anda dapat memeriksa daftar argumen dan juga dapat mengarahkannya ke file apa pun.Jadi, dalam hal ini gunakan saja
ps -ef | grep 1234 > myapp.log
Silakan periksa halaman manual ps ini .
sumber
ps -ef | grep 'foo' | grep -v grep
grep -v
saya menggunakan trik ini:grep '123[4]'