Cara menggunakan arahan nohup dalam Linux

PHPz
Lepaskan: 2023-05-12 08:52:10
ke hadapan
3993 orang telah melayarinya

Apa itu nohup?

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.

peraturan sintaks nohup

Sintaks asas perintah nohup adalah seperti berikut:

nohup COMMAND [ARGS ...] [> output-file 2> error-file] &
Salin selepas log masuk

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.

Cara menggunakan nohup

Menggunakan arahan nohup adalah sangat mudah, cuma ikut sintaks asas di atas. Berikut ialah beberapa contoh penggunaan arahan nohup:

Jalankan arahan di latar belakang

Untuk menjalankan arahan di latar belakang, masukkan sahaja arahan berikut pada baris arahan:

nohup COMMAND &
Salin selepas log masuk

Sebagai contoh, jalankan skrip Bash di latar belakang:

nohup bash test.sh &
Salin selepas log masuk

Ubah hala output standard ke fail

nohup bash test.sh > stdout.txt &
Salin selepas log masuk

Ubah hala output ralat standard ke fail

nohup bash test.sh 2> stderr.txt &
Salin selepas log masuk

Ubah hala kedua-duanya output standard dan output ralat standard Ubah hala ke fail

1 Ubah hala ke fail yang sama

nohup bash test.sh > output.txt 2>&1 &
Salin selepas log masuk

2 Ubah hala ke fail lain

nohup bash test.sh > stdout.txt 2> stderr.txt &
Salin selepas log masuk

3. Input kriteria pengalihan (stdin):

nohup ./myprogram > foo.out 2> foo.err < /dev/null &
Salin selepas log masuk

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.

pengurusan proses latar belakang nohup

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 &amp;
Salin selepas log masuk

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
Salin selepas log masuk

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
Salin selepas log masuk

Jika anda ingin menyambung semula operasi pada masa ini, anda boleh menggunakan perintah bg:

$ bg %1
[1]+ nohup sleep 1000 &amp;
Salin selepas log masuk

Jika anda ingin mematikan tugas, anda boleh menggunakan perintah kill:

$ kill %1
[1]+  Terminated              nohup sleep 1000
Salin selepas log masuk

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
Salin selepas log masuk

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!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan