Prasyarat:
Untuk melaksanakan langkah-langkah dalam panduan ini, anda memerlukan komponen berikut:
- Sistem Linux yang berfungsi. Ketahui lebih lanjut tentang menyediakan VM Ubuntu pada VirtualBox .
- Akses kepada a pengguna bukan root dengan kebenaran sudo .
Menjalankan Proses dari Terminal
Setiap kali menjalankan arahan, proses itu dihasilkan di bawah terminal. Jika terminal ditutup, semua proses yang berkaitan akan ditamatkan secara automatik. Dalam situasi tertentu, ia boleh menyusahkan. Sebagai contoh:
- Jumlah luar biasa data output dan mesej ralat/diagnostik
- Penutupan terminal secara tidak sengaja yang mengakibatkan penamatan proses yang berpotensi kritikal misi, dsb.
Untuk menangani isu ini, terdapat beberapa pilihan:
- Menjalankan proses di latar belakang
- Mengeluarkan proses dari terminal
Proses yang berjalan di latar belakang tidak akan mengatasi output terminal. Selain itu, terminal bebas untuk menjalankan arahan tambahan. Untuk proses terpisah, mereka tidak akan ditamatkan walaupun terminal ditutup.
Memulakan Proses di Latar Belakang
Dalam banyak kes, arahan boleh mengambil masa yang agak lama untuk diselesaikan. Secara amnya, pengguna terpaksa menunggu sehingga arahan selesai. Contohnya, apabila anda menggunakan editor teks, cangkerang tidak tersedia sehingga editor ditutup.
Untuk menunjukkan, kami menggunakan arahan 'ya':
$ lelaki ya
Kaedah 1:
Terdapat beberapa cara di mana kita boleh menghantar proses berjalan ke latar belakang.
Pertama, kami menghentikan proses tanpa menamatkannya. Untuk berbuat demikian, jalankan arahan berikut dan tekan 'Ctrl + Z':
$ ya 'Hai dunia' > / dev / null
Sekarang, jalankan arahan 'bg' untuk menghantar proses di latar belakang:
$ bg
Setelah ditolak ke latar belakang, proses disambung semula. Perintah berikut menyenaraikan semua kerja yang sedang berjalan di latar belakang:
$ pekerjaan
Kaedah 2:
Dalam kaedah sebelumnya, proses mula-mula mula berjalan di latar depan. Kami menjeda proses itu, menghantarnya ke latar belakang, kemudian meneruskannya. Sebaliknya, kita boleh menjalankan proses secara langsung di latar belakang.
Untuk berbuat demikian, tambahkan tanda '&' di hujung arahan:
$ ya 'oh long johnson' > / dev / null &
Di sini, proses yang dihasilkan secara automatik berjalan di latar belakang. Untuk mengesahkan, semak senarai kerja latar belakang:
$ pekerjaan
Kaedah 3:
Kami juga boleh melancarkan proses di latar belakang dengan bantuan tmux , pemultipleks berkuasa yang boleh mengurus berbilang sesi terminal dalam satu tetingkap. Ia tidak diprapasang dalam Linux. Walau bagaimanapun, ia tersedia untuk semua distro Linux utama. Ketahui lebih lanjut tentang pemasangan tmux pada Linux .
Dalam contoh berikut, kami menggunakan tmux untuk ping sasaran dan log keluaran:
$ tmux baru -d 'ping -c 9 127.0.0.1 > ping.log'
Fail log mengesahkan sama ada arahan berjalan dengan jayanya atau tidak:
$ kucing ping.log
Ia hanyalah satu contoh perkara yang boleh dilakukan oleh tmux. Ketahui lebih lanjut tentang tmux dengan contoh .
Mengembalikan Pekerjaan ke Latar Depan
Jika anda ingin mengembalikan kerja ke latar depan, kami menggunakan arahan 'fg'. Kami juga memerlukan nombor kerja daripada arahan kerja.
Mula-mula, tentukan kerja yang anda ingin bawa ke latar depan:
$ pekerjaan
Sekarang, gunakan arahan 'fg':
$ fg %< nombor_pekerjaan >
Mengeluarkan Proses daripada Terminal
Sebarang proses yang dikaitkan dengan terminal ditamatkan sebaik sahaja terminal ditutup, sama ada ia berjalan di latar depan atau di latar belakang. Untuk mengelakkan penamatan proses, kami mengasingkan proses sasaran daripada terminal/shell.
Kaedah 1:
Untuk menolak proses, kita memerlukan proses latar belakang terlebih dahulu:
$ ya 'qwerty' > / dev / null &
Semak senarai kerja latar belakang yang sedang dijalankan:
$ pekerjaan
Perhatikan nombor siri kerja latar belakang sasaran. Sekarang, gunakan perintah 'disown' untuk melepaskannya dari terminal:
$ menafikan %< nombor_pekerjaan >
Kerja sasaran kini seharusnya hilang daripada senarai kerja:
$ pekerjaan
Walau bagaimanapun, anda masih boleh melihat proses berjalan di latar belakang:
$ ps kepada
Kaedah 2:
Satu lagi cara untuk memisahkan proses daripada terminal induk adalah menggunakan arahan 'nohup'. Ia memastikan proses berjalan di latar belakang walaupun selepas menutup terminal.
Penggunaan 'nohup' adalah seperti berikut:
$ nohup < perintah > &
Sahkan jika kerja berjaya dibuat:
$ pekerjaan
Kaedah 3:
Kaedah ini memisahkan sepenuhnya proses sasaran. Ini adalah cara yang lebih berkesan untuk mencabut apl GUI.
Sebagai contoh, untuk memulakan Firefox dan menanggalkannya sepenuhnya daripada terminal, gunakan arahan berikut:
$ firefox dev / null &>/ dev / null &di sini:
- The /dev/null ialah peranti khas dalam Linux yang menyingkirkan sebarang data yang ditulis kepadanya.
- Dalam arahan sebelumnya, input dibaca dari dan output dihantar ke /dev/null . Ketahui lebih lanjut tentang cara lain menggunakan /dev/null .
Kesimpulan
Kami menunjukkan pelbagai cara menjalankan proses di latar belakang. Kami juga mempamerkan cara untuk melepaskan proses daripada terminal induk. Teknik ini boleh berguna apabila bekerja dengan terminal atau menjalankan skrip .
Jika anda perlu menjalankan arahan tertentu dalam corak tertentu, kami boleh memunggahnya sebagai a perkhidmatan systemd . Untuk mesin jauh, kami juga boleh menggunakan alat pihak ketiga seperti Boleh mengautomasikan hampir segala-galanya .
Selamat berkomputer!