Di server lokal saya, banyak proses java sedang berjalan, dan pada saat yang sama saya menggunakan Eclipse. Sekarang ketika saya perlu me-restart proses saya (saya memulai proses melalui skrip shell), sebelum setiap awal saya harus mematikan proses lama melalui:
Metode 1: -
kill -9 $Pid
(untuk setiap proses satu per satu, yang memakan waktu)
Metode 2: -
killall -9 java
(untuk semua proses - mudah, tetapi Eclipse akan terbunuh terlalu tidak perlu)
Dalam kasus Metode 2 Eclipse juga akan dibunuh, yang tidak pernah saya inginkan. Apakah ada jalan keluar dari ini? Saya yakin pasti ada: P
Sunting: Saya menggunakan ubuntu 15.04.
command-line
process
Atiq
sumber
sumber
Jawaban:
Cobalah perintah ini:
ini akan mencari semua proses yang mengandung java dan mengeksekusi gerhana kemudian membunuh mereka
sumber
-9
tanpa pandang bulu. Anda harus memberikan proses kesempatan untuk keluar dengan anggun.pgrep
lebih baik daripadaps | grep
karena Anda berisiko membunuh pernyataan grep itu sendiri.pgrep
Anda tidak dapat membedakan proses mana yang menjalankan gerhana, karena bahkanpgrep -l
hanya akan melaporkanjava
. @ Maythux, hanya untuk referensi,egrep
sudah usang dan tidak boleh digunakan, karenagrep -E
melakukan hal yang persis sama, meskipun Anda bahkan tidak perlugrep -E
karena Anda mencocokkan string tetap; jadi hanyagrep -v "eclipse"
(atau jika Anda ingin menjadi mewah[...] | grep -F "java" | grep -vF "eclipse | [...]"
)pkill '/java\(.*eclipse\)\@!'
\@!
? Jika itu Perl-isme itu tidak akan berfungsi, karenapkill
hanya mendukung EREs, saya sudah mencoba untuk mengurangi seluruh tugas ini menjadi satu perintah yang sudah digunakanpkill
dengan lookaheads negatif dan itu gagal karena alasan ini.Menggunakan
awk
Perintah membunuh semua
java
proses, tetapi bukan proseseclipse
.sumber
Bagaimana tentang :
pgrep -af 'java'
mencarijava
di baris perintah penuh dari proses dan daftar merekagrep -Po '^[^ ]+(?!.*eclipse)'
terlihat di antara mencari proses dan mendapatkan ID proses dari proses yang tidak memilikieclipse
garis-garis perintah penuh merekaxargs kill
akan membunuh prosesnya.sumber
pkill
jikapgrep/pkill
didukung perl regex'es yang Anda gunakan pada langkah ke-2 di atas. Sayangnyapgrep
/pkill
hanya mendukung extended-regexps (sepertiegrep/grep -E
).pgrep
/pkill
mendukung PCRE ..jps -m | grep -v eclipse | awk '{print $1}' | xargs -t kill
Gunakan jps untuk memastikan bahwa Anda mencari hanya perintah java dan tidak semua perintah yang memiliki java di jalurnya.
sumber
sumber