Ketika saya mencoba untuk menutup tab di Terminal Gnome, dikatakan:
Tutup terminal ini? Masih ada proses yang berjalan di terminal ini. Menutup terminal akan membunuhnya.
Bagaimana saya bisa mengetahui apa yang masih berjalan? Perhatikan bahwa tidak ada dalam output dari jobs
. Terima kasih.
screen
,tmux
,script
,ssh
,mc
dan berbalik panel off, atau hanya shell lain dengan misalnya mengetikbash
, atau sesuatu sepanjang garis-garis ini. Tekan Ctrl + D atau ketikexit
untuk keluar dari shell Anda, Anda akan melihat di mana Anda berakhir.exit
, tab terminal gnome tidak menutup.exit
mungkin akan menutupnya kemudian. @egmont dapatkah Anda memindahkan ini ke jawaban.Jawaban:
Pilih semua proses yang terkait dengan terminal.
sumber
nohup
perintah terputus dari terminal, jadi jangan menghalangi penutupannya. Tetapi mereka masih terdaftar dengan perintah ini.Anda dapat mengambil puncak di proses yang daftar PID shell Anda sebagai orang tua. Karena Anda mungkin atau mungkin tidak tahu, kami dapat menentukan
ps
formatDi sini, kita mendapatkan shell PID dari variabel khusus
$$
keSHELLPID
, yang kemudian dapat digunakan oleh awk di subkulit pipa ini. Pada dasarnya kami hanya mendaftar proses dalam bentuk NAME, PID, PID Induk, dan memfilter hanya mereka yang memiliki PID yang sesuai di kolom terakhir.sumber
Jika Anda memulai beberapa proses di terminal (mis. Gedit) daripada ID Proses (PID) (dari bash) dan ID Proses Induk (PPID) (dari gedit) untuk kedua proses ini akan sama. Ini dapat dilihat pada output dari
perintah. Untuk membuatnya lebih mudah dibaca, pertama-tama "pipa" output untuk
grep
menemukan PID dari semua "bash" proses yang sedang berjalan dan daripada "pipa" lagiawk
. Theawk
menyeleksi hanya PID dan bidang nama proses (field 2 dan 8) dan output ke layar.ps -ef | grep bash | awk '{print $2 ": " $8}'
Angka dalam output adalah PID. Anda akan menggunakannya untuk menemukan proses apa yang dimulai di terminal yang memiliki PID itu. Perhatikan bahwa mungkin ada lebih dari satu jalur output jika Anda memiliki lebih dari satu terminal yang dibuka. Sekarang untuk menemukan proses "child" (jika ada) dari sesi-terminal itu kita dapat menggunakan perintah ini:
ps -ef | awk '{if ($3 == EnterPID) print $2 ": " $8;}'
Anda harus memasukkan nomor PID menggantikan EnterPID dalam perintah terakhir. Jika ada lebih dari satu PID untuk "bash", Anda harus mencoba semuanya.
Perintah terakhir hanya melihat output
ps -ef
dan mencari jika PID (yang telah Anda temukan dari perintah sebelumnya) dan PPID adalah sama untuk setiap proses.Info lebih lanjut:
man ps
pria awk
sumber
Anda bisa menggunakannya
htop
. Di Ubuntu 16.04 (dan lebih tinggi), Anda dapat menginstalnya hanya dengan mengetiksudo apt-get install htop
.Anda juga bisa menggunakan
top
.sumber
htop
?