GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara mendapatkan ID proses untuk mematikan proses nohup?

pekerjaan -l harus memberi Anda pid untuk daftar proses nohup.bunuh (-9) mereka dengan lembut.;)


Saya menggunakan red hat linux di server VPS (dan melalui SSH - putty), bagi saya yang berikut ini berfungsi:

Pertama, Anda mencantumkan semua proses yang berjalan:

ps -ef

Kemudian di kolom pertama Anda menemukan nama pengguna Anda; Saya menemukannya tiga kali sebagai berikut:

  • Salah satunya adalah koneksi SSH
  • Yang kedua adalah koneksi FTP
  • Yang terakhir adalah proses nohup

Kemudian di kolom kedua Anda dapat menemukan PID dari proses nohup dan Anda hanya mengetik:

kill PID 

(tentu saja mengganti PID dengan PID proses nohup)

Dan itu dia!

Saya harap jawaban ini bermanfaat bagi seseorang yang saya juga sangat baru mengenal bash dan SSH, tetapi menemukan 95% pengetahuan yang saya butuhkan di sini :)


misalkan saya menjalankan skrip ruby ​​​​di latar belakang dengan perintah di bawah ini

nohup ruby script.rb &

maka saya bisa mendapatkan pid dari proses latar belakang di atas dengan menentukan nama perintah. Dalam kasus saya, perintahnya adalah ruby.

ps -ef | grep ruby

keluaran

ubuntu   25938 25742  0 05:16 pts/0    00:00:00 ruby test.rb

Sekarang Anda dapat dengan mudah menghentikan proses dengan menggunakan perintah kill

kill 25938

Saat menggunakan nohup dan Anda meletakkan tugas di latar belakang, operator latar belakang (& ) akan memberi Anda PID pada prompt perintah. Jika rencana Anda adalah mengelola proses secara manual, Anda dapat menyimpan PID tersebut dan menggunakannya nanti untuk mematikan proses jika diperlukan, melalui kill PID atau kill -9 PID (jika Anda perlu memaksa membunuh). Alternatifnya, Anda dapat menemukan PID nanti dengan ps -ef | grep "command name" dan temukan PID dari sana. Perhatikan bahwa nohup kata kunci/perintah itu sendiri tidak muncul di ps output untuk perintah yang dimaksud.

Jika Anda menggunakan skrip, Anda dapat melakukan hal seperti ini di skrip:

nohup my_command > my.log 2>&1 &
echo $! > save_pid.txt

Ini akan menjalankan my_command menyimpan semua output ke my.log (dalam skrip, $! mewakili PID dari proses terakhir yang dijalankan). 2 adalah deskriptor file untuk kesalahan standar (stderr ) dan 2>&1 memberi tahu shell untuk merutekan keluaran kesalahan standar ke keluaran standar (deskriptor file 1 ). Ini membutuhkan &1 sehingga shell tahu itu adalah deskriptor file dalam konteks itu, bukan hanya file bernama 1 . 2>&1 diperlukan untuk merekam pesan kesalahan apa pun yang biasanya ditulis ke kesalahan standar ke dalam my.log kami file (yang berasal dari keluaran standar). Lihat Pengalihan I/O untuk detail selengkapnya tentang penanganan pengalihan I/O dengan shell.

Jika perintah mengirimkan keluaran secara teratur, Anda dapat memeriksa keluaran sesekali dengan tail my.log , atau jika Anda ingin mengikutinya "langsung", Anda dapat menggunakan tail -f my.log . Terakhir, jika Anda perlu menghentikan prosesnya, Anda dapat melakukannya melalui:

kill -9 `cat save_pid.txt`
rm save_pid.txt

Linux
  1. Bagaimana cara menemukan ID proses di Ubuntu?

  2. Bagaimana cara mendapatkan jalur proses di Unix / Linux

  3. Bagaimana cara mendapatkan argumen baris perintah diteruskan ke proses yang sedang berjalan pada sistem unix/linux?

  1. Cara mendapatkan PID dari proses anak bercabang di skrip Shell

  2. Bagaimana cara mendapatkan PID dengan nama proses?

  3. Cara mendapatkan pid dari proses yang baru saja dimulai

  1. Cara mematikan proses zombie di Linux

  2. Bagaimana Menemukan Id Proses (pid) Dari Program Terminal yang Berjalan?

  3. Cara menemukan file .pid untuk proses tertentu