Android

Perintah nohup Linux

nohup - Run Commands in the Background - Linux CLI

nohup - Run Commands in the Background - Linux CLI

Isi kandungan:

Anonim

Perintah nohup melaksanakan program lain yang dinyatakan sebagai hujahnya dan mengabaikan semua isyarat SIGHUP (hangup). SIGHUP adalah isyarat yang dihantar ke proses apabila terminal kawalannya ditutup.

Biasanya, apabila anda menjalankan program melalui SSH, jika sambungan anda jatuh atau anda log keluar, sesi itu ditamatkan, dan semua proses yang dilaksanakan dari terminal akan berhenti. Di sinilah perintah nohup berguna. Ia mengabaikan semua isyarat hangup, dan prosesnya akan terus dijalankan.

Bagaimana Menggunakan Perintah nohup

Sintaks untuk arahan nohup adalah seperti berikut:

nohup COMMAND

Perintah ini tidak menerima sebarang pilihan lain kecuali standard --help dan --version .

Mari lihat contoh berikut:

nohup mycommand

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

nohup menjalankan arahan mycommand di latar depan dan mengalihkan output arahan ke fail nohup.out . Fail ini dibuat dalam direktori kerja semasa. Sekiranya pengguna menjalankan perintah itu tidak mempunyai keizinan menulis ke direktori yang berfungsi, fail itu dibuat dalam direktori rumah pengguna.

Jika anda log keluar atau menutup terminal, proses itu tidak ditamatkan.

Menjalankan Perintah di Latar Belakang

Menggunakan nohup di latar depan tidak begitu berguna kerana anda tidak akan dapat berinteraksi dengan shell sehingga perintah selesai.

Untuk menjalankan arahan di latar belakang, masukkan & simbol di hujung arahan:

nohup mycommand &

Output termasuk ID pekerjaan shell (dikelilingi dengan tanda kurung) dan ID proses:

25177

Anda boleh menggunakan ID kerja untuk membawa arahan ke dalam latar depan menggunakan perintah fg .

Jika atas sebab tertentu anda ingin menamatkan proses, gunakan perintah kill diikuti dengan ID proses:

kill -9 25132

Mengalihkan Output ke Fail

Secara lalai, nohup mengalihkan output arahan ke fail nohup.out . Sekiranya anda ingin mengalihkan output ke fail lain, gunakan pengalihan shell standard.

Sebagai contoh, untuk mengalihkan keluaran standard dan ralat piawai ke mycommand.out anda akan gunakan:

nohup mycommand > mycommand.out 2>&1 &

Untuk mengalihkan keluaran standard dan kesilapan standard kepada fail berbeza:

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

Alternatif

Terdapat beberapa program alternatif yang boleh anda gunakan untuk mengelakkan arahan yang akan ditamatkan apabila anda menutup terminal atau terputus.

Skrin

Skrin atau Skrin GNU adalah program multiplexer terminal yang membolehkan anda memulakan sesi skrin dan membuka beberapa tingkap (terminal maya) dalam sesi itu. Proses yang berjalan di Skrin akan terus berjalan apabila tetingkap mereka tidak kelihatan walaupun anda terputus.

Tmux

Tmux adalah alternatif moden untuk skrin GNU. Dengan Tmux, anda juga boleh membuat sesi dan buka beberapa tetingkap dalam sesi itu. Sesi Tmux adalah berterusan, yang bermaksud bahawa program yang berjalan di Tmux akan terus berjalan walaupun anda menutup terminal.

Disown

disown adalah shell shell yang membuang kerja shell dari kawalan kerja shell. Tidak seperti nohup , anda boleh menggunakan disown pada proses berjalan juga.

Kesimpulannya

nohup membolehkan anda menghalang arahan daripada ditamatkan apabila anda log keluar atau keluar dari terminal.

terminal nohup