Saya memiliki .jar
file yang terkenal karena kerusakan. Ketika kerusakan terjadi, hanya restart yang membantu. Saya punya cara untuk mendeteksi kerusakan itu (membaca file log dari kata .jar
) Jadi saya ingin menulis skrip, yang membunuh proses setiap kali kerusakan terjadi. Masalahnya adalah:
confus@confusion:~$ ps -A
...
4438 ? 00:00:00 java
4439 ? 00:00:00 java
4443 ? 00:00:00 java
...
Nama proses semua yang dijalankan .jar
adalah "java" secara alami. Bagaimana saya mengetahuinya, yang mana dari "java" -proses ini yang ingin saya bunuh, yaitu yang berjalan foobar.jar
?
Jawaban:
Anda dapat menjalankan
lsof
perintah, yang mencantumkan proses mana yang memiliki file terbuka, dengan file jar Anda diberikan sebagai argumen. Contoh melihat file dengan lebih sedikit:Untuk menggunakan kembali pid dengan mudah, Anda dapat menjalankannya dalam mode singkat:
sumber
Menggunakan
ps ax
akan membantu.Ini akan menampilkan pohon proses dalam gaya BSD yang hanya menunjukkan informasi lebih lanjut.
Untuk menemukan proses khusus Anda, Anda hanya perlu mencari nama JAR.
ps ax | grep JARNAME
akan melakukannya.sumber
Anda dapat melakukan ini asli atau jika "lsof" tidak diinstal melalui / proc // fd Contoh:
sumber
Anda bisa menggunakan
jps
dengan-l
opsi yang akan mengembalikan file .jar digunakan dengan path lengkap.sumber