Cara Menggunakan Command nohup di Linux

Hai, Sobat Jagoan! Perintah nohup memungkinkan task-task di sistem Linux tetap berjalan tanpa gangguan setelah kamu keluar (logout) atau menutup terminal. Perintah ini membuat sistem Linux kebal terhadap sinyal hangup terminal (SIGHUP).

Artikel kali ini akan membahas perintah nohup, cara penggunaannya, bagaimana nohup berinteraksi dengan session, dan membandingkannya dengan tools lain untuk mengelola proses background yang berjalan lama.

Perintah nohup

nohup merupakan singkatan dari ‘no hang up’. Perintah ini menjaga supaya sistem Linux tetap berjalan meskipun kamu keluar dari terminal. nohup mencegah proses menerima sinyal SIGHUP (Signal Hang UP), yaitu sinyal yang biasanya dikirim ke proses ketika terminal ditutup atau logout.

Sintaks umum:

				
					nohup command arguments
				
			

Atau:

				
					nohup options
				
			

Memeriksa Versi nohup

Untuk memeriksa versi nohup, gunakan perintah:

				
					nohup --version
				
			

Menggunakan nohup

Kalau kamu inign proses tetap berjalan, cukup tambahkan nohup di depan perintah, seperti:

				
					nohup ./hello.sh
				
			

Contoh skrip hello.sh:

				
					#!/bin/bash
echo "Hello World!"
				
			

Ketika dijalankan:

				
					nohup ./hello.sh
				
			

Output:

1-output nohup hello-cara-menggunakan-nohup-linux

Outputnya akan disimpan ke file nohup.out. Untuk memeriksa isinya:

				
					cat nohup.out
				
			

Output:

2-isi nohup hello-cara-menggunakan-nohup-linux

Mengalihkan output ke file lain

Kamu bisa mengalihkan output ke file lain:

				
					nohup ./hello.sh > output.txt
cat output.txt
				
			

Output:

3-mengalihkan-output-ke file-lain-cara-menggunakan-nohup-linux

Untuk mengalihkan error output ke file yang sama:

				
					nohup ./hello.sh > myoutput.txt 2>&1
				
			

Output:

4-mengalihkan-output-error-ke satu file-cara-menggunakan-nohup-linux

Menjalankan Proses di Background

Gunakan & untuk menjalankan proses di background:

				
					nohup ping google.com &
				
			

Output:

5-menjalankan proses di background-cara-menggunakan-nohup-linux

[1] 97227  #adalah job number dan PID (PID = process ID)

Untuk memeriksa proses:

				
					pgrep -a ping
				
			

Output:

6-memeriksa proses di background-cara-menggunakan-nohup-linux

Untuk menghentikan proses, gunakan command ‘kill’ yang diikuti ID proses:

				
					kill <PID>
				
			

Output:

7-menghentikan proses di background-cara-menggunakan-nohup-linux

Perbandingan Detail antara nohup, screen, dan tmux

nohup : Ini adalah alat yang sangat sederhana. Fungsinya supaya perintah yang kamu jalankan tetap berjalan walaupun kamu logout. Caranya adalah dengan membuat proses kebal terhadap sinyal SIGHUP (yang biasanya membuat proses berhenti saat logout). Output proses akan disimpan di nohup.out.
Kelebihannya: gampang banget dipakai, ringan.
Kekurangannya: kamu tidak bisa lagi berinteraksi dengan proses itu. Kalau mau menghentikan, kamu harus kill prosesnya secara manual. Tidak ada fitur pengelolaan sesi.

screen: Ini alat yang lebih canggih. Kamu bisa menjalankan beberapa terminal di dalam satu sesi screen.
Yang keren: kamu bisa detach (lepas) dari sesi itu, lalu reattach (sambung lagi) dari tempat lain, bahkan kalau koneksi kamu sempat putus. Jadi proses tetap jalan.
Screen juga tahan terhadap gangguan jaringan.
Kekurangannya: pengaturan tombol dan cara kerja manajemen jendelanya agak tua, dan mungkin agak susah dipelajari bagi pemula.

tmux: Ini adalah terminal multiplexer modern yang sangat kuat. Cara kerjanya pakai model client-server, jadi lebih fleksibel.
Di dalam tmux, kamu bisa punya beberapa sesi, di dalam sesi ada jendela, dan jendela bisa dibagi lagi jadi pane.
Kelebihannya:

  • Bisa berinteraksi penuh (misalnya ganti jendela, atur tata letak pane, dll.)
  • Bisa dikustomisasi banget (shortcut bisa diatur sesuka hati)
  • Bisa dibuat otomatis lewat skrip
  • Tahan terhadap putus jaringan, sesi tetap bisa diakses lagi.

Kekurangannya: biasanya tidak langsung tersedia di sistem lama (harus diinstal manual), dan belajar pakainya agak butuh waktu (tapi sepadan).

Tools

Kapan cocok dipakai

nohup

Kalau kamu cuma mau proses tetap berjalan setelah logout, tanpa perlu interaksi

screen

Kalau kamu mau bisa kembali ke sesi terminal, meskipun koneksi sempat terputus

tmux

Kalau kamu ingin alat paling fleksibel untuk mengelola banyak terminal sekaligus, dengan kontrol penuh

Bagaimana nohup Berinteraksi dengan Session Pengguna

1. SSH terputus (Disconnect)

Kalau kamu terhubung ke server lewat SSH, lalu koneksi terputus (misalnya karena internet mati), server biasanya akan mengirim sinyal SIGHUP ke proses yang kamu jalankan. Proses itu biasanya akan berhenti.

Tapi kalau kamu menjalankan perintah pakai nohup, proses itu akan abaikan sinyal SIGHUP. Artinya, proses tetap jalan di server meskipun kamu sudah terputus. Output proses akan disimpan di nohup.out atau file lain yang kamu tentukan. Inilah salah satu alasan kenapa nohup sering dipakai.

2. Logout secara normal

Kalau kamu logout biasa dengan exit atau logout, shell akan kasih sinyal SIGHUP ke proses-proses yang kamu jalankan. Proses yang tidak dilindungi akan berhenti.

Tapi kalau proses kamu dijalankan pakai nohup, proses akan abaikan sinyal ini dan tetap berjalan, meskipun kamu sudah logout.

3. Menutup jendela terminal emulator

Kalau kamu tutup jendela terminal (misalnya xterm atau gnome-terminal):

  • Kalau kamu sedang SSH ke server dan pakai nohup, proses di server tetap jalan meskipun SSH terputus.
  • Kalau kamu jalankan nohup langsung di terminal lokal (bukan SSH), proses tetap jalan walaupun terminal kamu ditutup. Proses itu nanti akan jadi “anak yatim” (orphan) yang diurus oleh proses sistem (init).

4. Shutdown atau reboot sistem

Kalau sistem kamu shutdown atau reboot, semua proses — termasuk yang dijalankan dengan nohup, akan diberi sinyal SIGTERM, lalu SIGKILL.
Nohup tidak bisa melindungi proses dari sinyal ini. Kalau ingin proses otomatis hidup lagi setelah reboot, kamu harus pakai alat lain seperti systemd, upstart, atau cron dengan @reboot.

5. Proses dihentikan secara manual

Nohup hanya melindungi proses dari SIGHUP.
Kalau kamu pakai kill atau kill -9, proses tetap bisa dihentikan. Jadi, nohup tidak membuat proses jadi “tak bisa dibunuh”.

6. Menjalankan nohup tanpa & (di foreground)

Kalau kamu menjalankan perintah seperti:

				
					nohup ./my_script.sh
				
			

tanpa &, proses tetap abaikan SIGHUP. Tapi terminal kamu akan menunggu proses selesai (tidak langsung kembali ke prompt).

Kalau kamu tutup terminal saat proses masih jalan, proses tetap lanjut berjalan di background.

Tapi biasanya lebih praktis pakai & supaya proses langsung jalan di background:

				
					nohup ./my_script.sh &
				
			

7. Shell berakhir karena timeout

Kadang server diatur supaya sesi otomatis ditutup kalau tidak ada aktivitas (misalnya dengan TMOUT atau pengaturan SSH). Kalau proses kamu dijalankan pakai nohup, proses tetap jalan walaupun sesi ditutup otomatis.

8. Jika nohup.out tidak bisa ditulis

Saat nohup mau tulis output ke nohup.out:

  • Pertama, dia coba tulis ke direktori tempat kamu jalankan perintah.
  • Kalau gagal (misalnya karena tidak ada izin), dia coba tulis ke $HOME/nohup.out.
  • Kalau itu juga gagal, bisa muncul error atau proses tetap jalan tapi output hilang (seperti ditulis ke /dev/null).

Memahami Kegagalan nohup yang Berhenti Tanpa Pesan (silent failure)

Kadang proses yang dijalankan dengan nohup tiba-tiba berhenti, seolah-olah nohup gagal.
Sebenarnya, nohup tetap bekerja dengan baik, tapi proses itu sendiri yang berhenti karena:

  • Ada error di aplikasi
  • Konfigurasi salah
  • Ada dependency yang kurang
  • PATH tidak lengkap
  • Kehabisan memori atau disk
  • Proses minta input interaktif, padahal nohup arahkan input dari /dev/null
  • Masalah izin

Untuk cari tahu kenapa, cek nohup.out atau log sistem. Biasanya di situ ada penjelasannya.

Praktik Logging yang Baik Ketika Pakai nohup

Secara default, nohup menulis semua output ke nohup.output. Supaya lebih rapi, kamu bisa atur:

  • Memisahkan stdout dengan stderr:
				
					nohup ./my_cmd > app.log 2> app.err &
				
			
  • Menggabungkan semua output ke satu file:
				
					nohup ./my_cmd > combined.log 2>&1 &
				
			

Gunakan nama file log yang jelas, misalnya pakai timestamp:

				
					app_2025-06-09.log
				
			

Simpan di folder log yang aman dan pastikan proses punya izin menulis.

Penting juga supaya aplikasi kamu menulis log yang rapi dan jelas (dengan timestamp, level INFO/DEBUG/ERROR).

Perlu diingat, nohup tidak otomatis melakukan rotasi log. Kalau proses berjalan lama, atur rotasi log supaya file log tidak kebesaran, bisa pakai logrotate atau fitur rotasi bawaan aplikasi.

Terakhir, rajin-rajin cek log pakai:

				
					tail -f app.log
				
			

atau pakai less dan grep, supaya kamu tahu proses yang masih berjalan normal.

Selamat, mencoba Sob! Kamu bisa menggunakan nohup untuk menjaga proses tetap berjalan meskupun terminal ditutup dan cobalah untuk bereksperimen dengan redirect output supaya log kamu lebih rapi.

Kalau ada yang masih bikin bingung, jangan ragu hubungi Tim Support Jagoan Hosting ya, Sob!

Related Posts
Tips Mengatasi Error Undefined Index / Variable

Pengantar Halo sobat Jagoan! di tutorial kali ini kita bakalan membahas permasalahan Error Undefined Index/Variable. Pasti sekarang kamu lagi main-main Read more

Cara Membuat CSR dan PrivateKey untuk Mengaktifkan SSL Certificate

Tahu nggak, Sob! untuk dapat mengaktifkan layanan SSL murah, ada beberapa persyaratan yang harus disiapkan terlebih dahulu, diantaranya adalah CSR Read more

Tutorial Mendeteksi Script Jahat pada Website Sebelum Publish

Hai, Sob kamu pasti tentu tidak ingin jika website kamu dibobol oleh hacker, terutama jika kamu seorang programmer dan webmaster. Read more

Tutorial Install Virus Scanner Clam AV pada cPanel

Kamu ngerasa insecure karena belum install antivirus? Install antivirus emang penting, Sob untuk menjaga performa server kamu. Nah, kamu bisa Read more