Saya mencari satu baris yang mengembalikan pid dari proses yang berjalan.
Saat ini saya punya:
ps -A -o pid,cmd|grep xxx|head -n 1
Dan ini mengembalikan tinju pid, command
. Saya hanya perlu nomor pertama dari keluaran dan mengabaikan sisanya. Saya kira sed
atau awk
akan membantu di sini tetapi pengalaman saya dengan mereka terbatas.
Juga, ini memiliki masalah lain, itu akan mengembalikan pid grep jika xxx tidak berjalan.
Sangat penting untuk memiliki satu baris, karena saya ingin menggunakan kembali output untuk melakukan sesuatu yang lain, seperti membunuh proses itu.
Jawaban:
Jika Anda hanya ingin pid dari proses Anda dapat menggunakan
pgrep
jika tersedia.pgrep <command>
akan mengembalikan pid dari perintah (atau daftar pids jika ada lebih dari satu contoh dari perintah yang berjalan, dalam hal ini Anda dapat menggunakanhead
atau perintah lain yang sesuai)Semoga ini bisa membantu!
sumber
kill `pgrep xxx`
pkill
.Hanya perlu satu perintah lagi; Anda hanya menginginkan bidang pertama dari garis nilai yang dipisahkan ruang:
Ya, dua. Saya menambahkan grep lain untuk menghapus grep sendiri dari output.
sumber
Cukup gunakan pgrep, itu jauh lebih lurus ke depan
Di atas memilih proses tertua dengan nama yang tepat
sumber
pkill
(dengan argumen yang sama) akan menjadi pilihan paling langsung.pidof xxx
akan cukup di linuxsumber
Berjalan di Cygwin jadi saya tidak bisa menggunakan -A dan -o, tetapi sesuatu seperti ini:
sumber
Anda dapat melakukan sesuatu seperti
maka xxx haruslah nama proses dan itu tidak akan mengambil grep karena jangkar ^
sumber