nohup
ialah arahan dalam sistem Linux dan Unix Fungsinya adalah untuk membolehkan proses terus berjalan di latar belakang apabila terminal keluar. Nama penuhnya ialah "no hang up", yang bermaksud "no hang up". Perintah nohup
membolehkan anda meneruskan menjalankan arahan selepas keluar dari terminal atau menutup sambungan SSH.
Sintaks asas perintah nohup adalah seperti berikut:
nohup COMMAND [ARGS ...] [> output-file 2> error-file] &
Maksud parameter adalah seperti berikut:
COMMAND
: Arahan atau skrip yang perlu dijalankan di latar belakang.
ARGS
: Parameter arahan atau skrip.
> output-file
: Output dihalakan semula ke fail yang ditentukan.
2> error-file
: Mesej ralat dihalakan semula ke fail yang ditentukan.
&
: Jalankan arahan di latar belakang.
Proses pelaksanaan arahan nohup dibahagikan kepada langkah berikut:
Arahan nohup menukar input standard, output standard dan standard ralat cangkerang semasa Semua output dihalakan semula ke peranti /dev/null
untuk mengelak daripada diganggu oleh isyarat yang menutup terminal.
Arahan nohup melaksanakan proses di latar belakang dan mengeluarkan PID proses ke terminal.
Proses memulakan pelaksanaan dan mengubah hala output standard dan output ralat standard ke fail yang ditentukan.
Pengguna boleh keluar dari terminal atau menutup tetingkap terminal dan proses itu masih akan berjalan di latar belakang.
Menggunakan arahan nohup adalah sangat mudah, cuma ikut sintaks asas di atas. Berikut ialah beberapa contoh penggunaan arahan nohup:
Untuk menjalankan arahan di latar belakang, masukkan sahaja arahan berikut pada baris arahan:
nohup COMMAND &
Sebagai contoh, jalankan skrip Bash di latar belakang:
nohup bash test.sh &
nohup bash test.sh > stdout.txt &
nohup bash test.sh 2> stderr.txt &
1 Ubah hala ke fail yang sama
nohup bash test.sh > output.txt 2>&1 &
2 Ubah hala ke fail lain
nohup bash test.sh > stdout.txt 2> stderr.txt &
3. Input kriteria pengalihan (stdin):
nohup ./myprogram > foo.out 2> foo.err < /dev/null &
Terdapat tambahan < /dev/null
di sini, yang bermaksud mengubah hala input standard ke /dev/null
untuk memastikan program tidak membaca sebarang data daripada input standard.
Ini adalah untuk menyelesaikan masalah praktikal: Sesi SSH sering enggan log keluar (atau hang) kerana tidak mahu kehilangan data yang berinteraksi dengan kerja latar belakang. Apabila menghadapi masalah ini, anda boleh menggunakan arahan di atas untuk menyelesaikannya dengan mengubah hala tiga kali.
Gunakan perintah jobs
untuk melihat senarai tugasan yang dijalankan di latar belakang dalam cangkerang semasa, termasuk nombor tugas, status dan arahan.
Sebagai contoh, kami melaksanakan perintah sleep 1000
di latar belakang, gunakan perintah jobs
untuk melihat:
$ jobs [1]+ Running nohup sleep 1000 &
Antaranya, nombor dalam kurungan segi empat sama mewakili nombor tugas dan tanda tambah atau tolak mewakili tugas Keutamaan Running
menunjukkan bahawa tugasan sedang berjalan di latar belakang. Di samping itu, terdapat kemungkinan keadaan lain, termasuk Stopped
(berhenti), Done
(selesai), dsb.
Kita juga boleh menggunakan perintah fg
untuk mengalihkan tugas latar belakang ke latar depan untuk terus berjalan, contohnya:
$ fg %1
Arahan ini akan mengalihkan tugasan dengan tugasan nombor 1 ke latar depan dan meneruskan pelaksanaan. Jika anda ingin menjeda atau menyambung semula tugas, anda boleh menggunakan kekunci Ctrl-Z
untuk menghantar isyarat SIGTSTP
dalam cangkerang semasa.
$ fg %1 nohup sleep 1000 ^Z [1]+ Stopped nohup sleep 1000
Jika anda ingin menyambung semula operasi pada masa ini, anda boleh menggunakan perintah bg
:
$ bg %1 [1]+ nohup sleep 1000 &
Jika anda ingin mematikan tugas, anda boleh menggunakan perintah kill
:
$ kill %1 [1]+ Terminated nohup sleep 1000
Jika anda ingin mematikan semua tugasan latar belakang, tetapi merasa menyusahkan untuk melakukannya satu demi satu, anda boleh menggunakan perintah disown
untuk menyelesaikan masalah:
$ disown -a
Arahan ini boleh bunuh semua tugas latar belakang, tetapi tidak akan ada gesaan, anda boleh mengesahkan melalui perintah jobs
.
Atas ialah kandungan terperinci Cara menggunakan arahan nohup dalam Linux. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!