Mari kita meneroka dunia misteri dalam sistem pengendalian Linux - latar belakang berjalan. Dalam penggunaan harian, kita selalunya perlu menggunakan larian latar belakang untuk membiarkan tugasan dilaksanakan secara senyap di latar belakang tanpa menjejaskan kerja semasa kita. Jadi, bagaimana untuk melaksanakan operasi latar belakang dalam Linux?
Berfikir
Pertama sekali, kita perlu mempertimbangkan satu soalan Mengapa program latar belakang keluar apabila anda menutup terminal secara terus Ini kerana apabila anda menutup terminal secara terus, terminal akan menghantar isyarat SIGHUP kepada tugas latar belakang yang dimulakan dalam persekitaran semasa? , menyebabkan program yang sedang berjalan digantung Kemudian abaikan sahaja SIGHUP.
nohup
Arahan yang paling biasa digunakan ialah [nohup]. Daripada namanya, anda boleh mengetahui sama ada untuk menggantung arahan yang sedang berjalan, menutup terminal atau log keluar dari akaun Proses itu juga mesti digunakan dengan [. &] simbol.
Penggunaan: nohup Command [ Arg … ] [ & ] rreeee
Seperti yang dapat dilihat dari di atas, proses induk test.sh yang kami jalankan telah menjadi [PID 1]., dan diambil alih oleh proses utama Linux.
setsid
nohup ialah mengabaikan isyarat SIGHUP, adakah idea lain?
Arahan setip boleh membuka semula sesi, mewarisi ID kumpulan proses induk dan melepaskan diri daripada kawalan proses induk. Seperti yang anda boleh lihat dari gambar di bawah, proses induk skrip test.sh sudah pun init 1. Pada masa ini, tidak kira sama ada anda menutup atau keluar dari terminal, ia tidak ada kena mengena dengan program latar belakang.
$ nohup sh test.sh & # 直接关闭当前终端,再打开一个查看 $ ps -few|grep test.sh
Satu lagi perbezaan setsid dan nohup ialah tak perlu guna simbol & background.
keluar
Gunakan arahan keluar untuk keluar dari terminal, tetapi program kami akan terus berjalan Mengapa ini?
Ini kerana apabila keluar dari terminal menggunakan arahan keluar, isyarat SIGHUP tidak akan dihantar ke tugas yang menjadi milik terminal Ia dikawal oleh item konfigurasi huponexit Anda boleh menggunakan arahan shopt melihatnya.
rreeeeKonfigurasikan huponexit kepada hidup, gunakan arahan keluar sekali lagi untuk keluar, dan tugasan yang sepadan akan keluar dengan sewajarnya.
$ setsid sh test.sh
perangkap
Perintah perangkap ialah arahan terbina dalam Linux Tindakan yang perlu diambil apabila menerima isyarat yang ditentukan, diikuti dengan nama isyarat yang akan diproses adalah seperti berikut:
Apabila skrip perlu di latar belakang dan kami tidak mahu terminal keluar dan menutup program, kami boleh menambah arahan perangkap pada skrip untuk mengabaikan isyarat SIGHUP (gantung proses).
[root@api ~]# shopt |grep huponexit huponexit off
Arahan skrin Linux digunakan untuk program pengurusan berbilang tetingkap Ia boleh mencipta terminal dan membiarkan program berjalan di dalamnya
rreeee Seperti yang dapat dilihat daripada contoh, proses induk bagi skrip ujian ialah proses terminal skrin, dan proses induk PID1 terminal skrin juga melengkapkan perjalanan proses latar belakang.Ringkasnya, berlari di latar belakang adalah teknik yang sangat biasa dan praktikal dalam Linux. Sama ada ia melaksanakan beberapa perkhidmatan latar belakang di bahagian pelayan atau menyelesaikan beberapa tugasan yang sudah lama dijalankan pada komputer peribadi, operasi latar belakang boleh membantu kami meningkatkan kecekapan dan memudahkan kerja harian kami.
Atas ialah kandungan terperinci Meneroka dunia misteri operasi latar belakang di Linux. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!