GNU/Linux >> Belajar Linux >  >> Linux

Apa perbedaan antara nohup dan ampersand

nohup menangkap sinyal hangup (lihat man 7 signal ) sedangkan ampersand tidak (kecuali shell dikonfigurasi seperti itu atau tidak mengirim SIGHUP sama sekali).

Biasanya, saat menjalankan perintah menggunakan & dan keluar dari shell sesudahnya, shell akan mengakhiri sub-perintah dengan sinyal hangup (kill -SIGHUP <pid> ). Hal ini dapat dicegah dengan menggunakan nohup , karena menangkap sinyal dan mengabaikannya sehingga tidak pernah mencapai aplikasi yang sebenarnya.

Jika Anda menggunakan bash, Anda dapat menggunakan perintah shopt | grep hupon untuk mengetahui apakah shell Anda mengirimkan SIGHUP ke proses anaknya atau tidak. Jika tidak aktif, proses tidak akan dihentikan, seperti yang terjadi pada Anda. Informasi lebih lanjut tentang bagaimana bash menghentikan aplikasi dapat ditemukan di sini.

Ada kasus di mana nohup tidak berfungsi, misalnya saat proses yang Anda mulai menghubungkan kembali SIGHUP sinyal, seperti yang terjadi di sini.


myprocess.out & akan menjalankan proses di latar belakang menggunakan subkulit. Jika shell saat ini diakhiri (katakanlah dengan logout), semua subkulit juga diakhiri sehingga proses latar belakang juga akan dihentikan. Perintah nohup mengabaikan HUP sinyal dan bahkan jika shell saat ini diakhiri, subkulit dan myprocess.out akan terus berjalan di latar belakang. Perbedaan lainnya adalah & sendirian tidak mengarahkan ulang stdout/stderr jadi jika ada keluaran atau kesalahan, itu ditampilkan di terminal. nohup di sisi lain mengalihkan stdout/stderr ke nohup.out atau $HOME/nohup.out .


Sebagian besar waktu kita masuk ke server jauh menggunakan ssh. Jika Anda memulai skrip shell dan Anda logout maka prosesnya dimatikan. Nohup membantu untuk terus menjalankan skrip di latar belakang bahkan setelah Anda logout dari shell.

Nohup command name &
eg: nohup sh script.sh &

Nohup menangkap sinyal HUP. Nohup tidak menempatkan pekerjaan secara otomatis di latar belakang. Kami perlu mengatakan bahwa secara eksplisit menggunakan &


Linux
  1. Apa perbedaan antara InnoDB dan MyISAM?

  2. Perbedaan Antara [[ $a ==Z* ]] Dan [ $a ==Z* ]?

  3. Apa Perbedaan Antara Git Switch dan Checkout?

  1. Perbedaan Penggunaan Antara Variabel Shell Dan Variabel Lingkungan?

  2. Apa perbedaan antara Redhat dan centOS?

  3. Apa perbedaan antara $(CC) dan $CC?

  1. Apa perbedaan antara strtok_r dan strtok_s di C?

  2. Apa perbedaan antara fsck dan e2fsck?

  3. Apa perbedaan antara &> dan >&di bash?