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 mycommand
di 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.