nohup
perintah mengeksekusi program lain yang ditentukan sebagai argumennya dan mengabaikan semua SIGHUP
(menggantung) sinyal. SIGHUP
adalah sinyal yang dikirim ke suatu proses ketika terminal pengontrolnya ditutup.
Biasanya, ketika Anda menjalankan program melalui SSH, jika koneksi Anda terputus atau Anda keluar, sesi dihentikan, dan semua proses yang dijalankan dari terminal akan berhenti. Di sinilah nohup
perintah berguna. Ini mengabaikan semua sinyal hangup, dan proses akan terus berjalan.
Cara Menggunakan Perintah nohup #
Sintaks untuk nohup
perintahnya adalah sebagai berikut:
nohup COMMAND [ARGS]
Perintah tidak menerima opsi lain kecuali --help
standar dan --version
.
Mari kita lihat contoh berikut:
nohup mycommand
nohup: ignoring input and appending output to 'nohup.out'
nohup
menjalankan mycommand
perintah di latar depan dan mengarahkan output perintah ke nohup.out
mengajukan. File ini dibuat di direktori kerja saat ini. Jika pengguna yang menjalankan perintah tidak memiliki izin menulis ke direktori kerja, file akan dibuat di direktori home pengguna.
Jika Anda logout atau menutup terminal, proses 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 perintah di latar belakang, tambahkan &
simbol di akhir perintah:
nohup mycommand &
Outputnya termasuk ID pekerjaan shell (dikelilingi dengan tanda kurung) dan ID proses:
[1] 25177
Anda dapat menggunakan ID pekerjaan untuk membawa perintah ke latar depan menggunakan fg
perintah.
Jika karena alasan tertentu Anda ingin menghentikan proses, gunakan tombol kill
perintah diikuti oleh ID proses:
kill -9 25132
Mengalihkan Output ke File #
Secara default, nohup
mengarahkan output perintah ke nohup.out
mengajukan. Jika Anda ingin mengarahkan output ke file lain, gunakan pengalihan shell standar.
Misalnya, untuk mengarahkan output standar dan kesalahan standar ke mycommand.out
Anda akan menggunakan:
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 #
Ada beberapa program alternatif yang dapat Anda gunakan untuk menghindari perintah dihentikan saat Anda menutup terminal atau terputus.
Layar #
Screenor 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 Layar akan terus berjalan saat jendelanya tidak terlihat meskipun Anda terputus.
Tmux #
Tmuxis adalah alternatif modern untuk layar GNU. Dengan Tmux, Anda juga dapat membuat sesi dan membuka banyak jendela di dalam sesi itu. Sesi Tmux bersifat persisten, artinya program yang berjalan di Tmux akan terus berjalan meskipun Anda menutup terminal.
Sangkal #
disown
adalah shell builtin yang menghapus pekerjaan shell dari kontrol pekerjaan shell. Tidak seperti nohup
, Anda dapat menggunakan disown
pada proses yang sedang berjalan juga.
Kesimpulan #
nohup
memungkinkan Anda untuk mencegah perintah dihentikan saat Anda keluar atau keluar dari terminal.
Jika Anda memiliki pertanyaan atau masukan, jangan ragu untuk memberikan komentar.