Di Bash, disown
perintah yang dikeluarkan dengan sendirinya akan menghapus proses berlatar belakang (melalui bg
atau &
) dari tabel pekerjaan aktif, dan menandainya untuk tidak menerima SIGHUP saat logout.
Anda juga dapat melewati satu atau beberapa pekerjaan untuk ditolak, seperti disown 1 3
. The disown -h
flag berguna jika Anda ingin menyimpan pekerjaan di meja, tapi masih tidak SIGHUP di logout.
Anda dapat melihat tabel pekerjaan dengan mengeluarkan jobs
perintah. Setelah latar belakang yang sukses, itu akan ditampilkan [1]+ command &
. Setelah menyangkal pekerjaan, seharusnya tidak lagi ditampilkan di tabel pekerjaan, dan tidak lagi terbunuh saat keluar. Anda masih bisa melihat proses melalui ps ux
, top
dan proses-melihat utilitas lain.
Setelah suatu pekerjaan ditolak, Anda dapat menunggu sampai pekerjaan itu berhenti secara alami atau mengirim sinyal kill
ke PID untuk menghentikannya.
Karena Bash hanya menghapus pekerjaan dari daftar pekerjaan yang sedang berjalan untuk diakhiri dan file menangani ke stdout dan stderr terminal Anda masih terbuka, Anda akan terus menerima output dari pekerjaan itu sampai perangkat terminal Anda ditutup (ketika Anda logout) .
Contoh:
# we start a command in the background
$ cat /dev/urandom > test &
[1] 18533
# we see our command is still running
$ jobs
[1]+ Running cat /dev/urandom > test &
# we disown the backgrounded job
$ disown 1
# notice it is no longer in the job table
$ jobs
Saya biasanya hanya menggunakan disown
jika saya menjalankan perintah yang berpotensi berjalan lama seperti rsync
atau cp
dan setelah itu memutuskan saya harus keluar tanpa menghentikannya. Jika Anda tahu Anda akan menjalankan perintah dan keluar, Anda dapat menangkap output dengan memiparkan atau tee
memasukkannya ke file, menjalankannya dengan nohup
, atau menjalankannya screen
(yang memungkinkan Anda untuk mengambil kembali kepemilikan perintah / mengakhiri setelah itu ).
Contoh:
# capture stdout and stderr to separate logs
cat /dev/urandom >stdout.log 2>stderr.log
# capture stdout and stderr to the same log, and display to stdout as well
cat /dev/urandom 2>&1 | tee output.log
# run a command under nohup (doesn't require a disown or job control support)
nohup cat /dev/urandom </dev/null