Perintah nohup mengeksekusi perintah lain yang ditentukan sebagai argumennya dan mengabaikan semua sinyal SIGHUP (hangup). SIGHUP adalah sinyal yang dikirim ke suatu proses ketika terminal pengendali ditutup.

Biasanya ketika Anda menjalankan perintah melalui SSH jika koneksi Anda down, atau sesi SSH diakhiri dan semua perintah yang dijalankan dari terminal akan berhenti. Di sinilah perintah nohup berguna. Ini akan mengabaikan semua sinyal hangup dan perintah akan terus berjalan.

Cara Menggunakan Perintah nohup

Sintaks untuk perintah nohup adalah sebagai berikut:

nohup PERINTAH [ARGS]

Perintah tidak menerima opsi lain kecuali standar --help dan --version.

Mari kita lihat contoh berikut:

nohup mycommand
nohup: ignoring input and appending output to 'nohup.out'

nohup akan menjalankan perintah mycommanddi latar depan dan mengarahkan ulang output perintah ke file nohup.out. File ini akan dibuat di direktori kerja saat ini. Jika pengguna yang menjalankan perintah tidak memiliki izin menulis ke direktori kerja, file tersebut akan dibuat di direktori home pengguna.

Jika Anda keluar atau menutup terminal, perintah tidak akan dihentikan.

Menjalankan Perintah di Latar Belakang

Menggunakan nohup di latar depan tidak terlalu berguna karena Anda tidak akan dapat berinteraksi dengan shell sampai perintah selesai.

Untuk menjalankan nohup di latar belakang tambahkan simbol & di akhir perintah:

nohup mycommand &

Saat menjalankan perintah di latar belakang ID pekerjaan shell (dikelilingi dengan tanda kurung) dan ID proses akan dicetak pada terminal:

[1] 26177

Anda dapat menggunakan ID pekerjaan untuk membawa perintah ke latar depan menggunakan perintah fg.

Jika karena alasan tertentu Anda ingin menghentikan proses, gunakan perintah kill yang diikuti oleh ID proses:

kill -9 25132

Mengarahkan Output ke File

Secara default, nohup akan mengarahkan output ke file nohup.out. Jika Anda ingin mengarahkan output perintah ke file yang berbeda, Anda dapat menggunakan redirection shell standar.

Misalnya untuk mengarahkan output standar dan kesalahan standar ke mycommand. Anda dapat menggunakan perintah:

nohup mycommand > mycommand.out 2>&1 &

Untuk mengarahkan output standar dan kesalahan standar ke file yang berbeda:

nohup mycommand > mycommand.out 2> mycommand.err &

Alternatif untuk Perintah nohup

Ada sejumlah program alternatif yang dapat Anda gunakan untuk menghindari perintah untuk dihentikan ketika Anda menutup terminal atau terputus.

Screen

Screen atau GNU Screen adalah program terminal multiplexer yang memungkinkan Anda untuk memulai sesi layar dan membuka sejumlah jendela (terminal virtual) di dalam sesi itu. Proses yang berjalan di Screen akan terus berjalan ketika jendelanya tidak terlihat, atau meskipun koneksi terputus.

Tmux

Tmux adalah alternatif modern untuk GNU screen. Dengan Tmux Anda juga dapat membuat sesi dan membuka banyak jendela di dalam sesi tersebut. Sesi Tmux sangat persisten, yang berarti bahwa program yang berjalan di Tmux akan terus berjalan bahkan jika Anda menutup terminal.

Kesimpulan

Sekarang Anda sudah memiliki gambaran dan pemahaman yang baik tentang bagaimana menggunakan perintah nohup untuk mencegah perintah dihentikan saat Anda logout atau keluar dari terminal.