Apa arti |
simbol dalam sudo ps -ef | grep processname
perintah?
Adakah yang bisa menjelaskan perintah ini? Saya telah menggunakan perintah ini hanya untuk mendapatkan PID dan membunuh proses itu, tetapi saya juga melihat sudo ps -ef | grep processname | grep -v grep
dan saya mendapat kesan bahwa -v grep
seperti membunuh PID yang dihasilkan sebelumnya untuk grep
. Jika begitu, bagaimana cara kerjanya?
command-line
bash
process
Aamir
sumber
sumber
sudo
larips -ef
. Juga trik umum untuk menghindari perintah ketiga adalah melampirkan karakter nama proses 'dalam tanda kurung:ps -ef | grep [p]rocessname
ps -ef | grep '[p]rocessname'
grep [p]rocessname
, Anda memberi tahu shell untuk mencari file di direktori saat ini dengan namaprocessname
dan mengganti pola dengan nama file itu. Jika tidak ada file bernamaprocessname
ada, shell dapat meneruskan pola secara harfiah untuk grep. Tetapi itu tergantung pada pengaturan Anda. Jadi versi Anda akan pecah jika sebuah file bernamaprocessname
ada atau jika salah satu opsi shell berikut telah diaktifkanfailglob
,nullglob
,nocaseglob
.Jawaban:
Pertama kali menjalankan
sudo ps -ef
dan meneruskan output ke perintah kedua.Perintah kedua menyaring semua baris yang berisi kata "processname".
ps -ef | grep processname | grep -v grep
daftar semua baris yang mengandungprocessname
dan tidak mengandunggrep
.Berdasarkan
man grep
Berdasarkan
man ps
Anda dapat menggabungkan parameter yang
-ef
berarti sama dengan-e -f
.Sebenarnya
ps -ef | grep processname
daftar semua kemunculan proses yang disebutprocessname
.sumber
ps -ef
??| grep processName
di terminal kita juga mendapatkan output dari grep yang itu sendiri adalah proses jadi -v membunuh output iniItu disebut
pipe
. Ini memberikan output dari perintah pertama sebagai input ke perintah kedua.Dalam kasus Anda itu berarti:
Hasil
sudo ps -ef
diumpankan sebagai input darigrep processname
sudo ps -ef
:Ini mencantumkan semua proses yang berjalan. Ketikkan
man ps
termial untuk lebih banyak.grep processname
Jadi, daftar proses ini dimasukkan ke grep yang hanya mencari program yang ditentukan oleh
programname
.Contoh
Mengetikkan
sudo ps -ef | grep firefox
terminal saya kembali:sumber
-v grep
fungsinya ..grep -v
digunakan. Untuk menyaring baris terakhir.grep -v
menyaring garis OUT yang mengandung pola.Saya akan mencoba dan menjawab ini dengan jawaban praktis langsung:
Pipa
|
memungkinkan Anda melakukan hal-hal luar biasa di shell! Ini satu-satunya operator yang saya anggap paling berguna dan perkasa.bagaimana kalau menghitung file dalam direktori? sederhana:
ls | wc -l
..mengarahkan outputls
kewc
parameter wit-l
untuk barisatau menghitung garis dalam file?
bagaimana jika saya ingin mencari sesuatu? 'grep' dapat mencari kejadian string:
Anda hanya mengarahkan output dari perintah kiri Pipa ke kanan perintah pipa.
satu tingkat lagi: seberapa sering sesuatu terjadi dalam suatu file?
Anda dapat menggunakan | untuk hampir semuanya :)
sumber
grep -c "aRandomStringYouWantToSearchFor" "someFile"
;-)kill $(ps aux | awk '/someString/ { print $2}' | sed -n '1p')
tidak, karena itu tidak akan melayani tujuan sama sekali.Jawaban lain sudah menjawab pertanyaan utama Anda, tetapi saya juga ingin membahas ini;
Secara umum, membunuh suatu proses sering kali merupakan pembunuhan yang berlebihan dan meninggalkan sumber daya yang dialokasikan oleh suatu proses dalam keadaan berantakan, Anda seringkali dapat menghentikannya ;
Selain itu, gunakan saja
pkill
untuk membunuh / menghentikan suatu proses.pkill
mendukung menentukan nama proses yang tepat atau ekspresi reguler:sumber
kill -9
kecuali Anda secara khusus tahu bahwa tidak ada sinyal lain yang akan berfungsi. Lihat juga iki.fi/era/unix/award.html#killkill
dilakukannya. Menentukan-9
adalah opsi tambahan tambahan dan paling sering membawa malapetaka.kill
, sederhana dan sederhana. Di luar istilah apa pun, jawaban Anda seharusnya tidak menyarankan orang untuk menggunakan-9
opsi kecuali Anda memasukkan peringatan gemuk.