GNU/Linux >> Belajar Linux >  >> Linux

Apa Sebenarnya "Pekerjaan Berhenti", Seperti Dalam "Pekerjaan Berhenti Sedang Berjalan ..."?

Setelah perintah shutdown dikeluarkan, terkadang ada pesan status seperti ini:

A stop job is running for Session 1 of user xy

dan kemudian sistem hang untuk sementara, atau selamanya tergantung pada ???

Jadi, apa sebenarnya “pekerjaan berhenti” itu?

Juga, mengapa kadang-kadang memperkirakan waktu yang dibutuhkan, cukup akurat, dan di lain waktu dapat berjalan selamanya?

Jawaban yang Diterima:

systemd beroperasi secara internal dalam hal antrian "pekerjaan". Setiap pekerjaan (sedikit menyederhanakan) adalah tindakan yang harus dilakukan:hentikan, periksa, mulai, atau mulai ulang unit tertentu .

Ketika (misalnya) Anda menginstruksikan systemd untuk memulai unit layanan , itu mengerjakan daftar pekerjaan berhenti dan mulai untuk unit apa pun (unit layanan, unit pemasangan, unit perangkat, dan sebagainya) yang diperlukan untuk mencapai tujuan itu, sesuai dengan persyaratan dan ketergantungan unit, memesannya, menurut hubungan pemesanan unit , berhasil dan (jika mungkin) memperbaiki kontradiksi diri, dan (jika langkah terakhir berhasil) menempatkannya dalam antrean.

Kemudian ia mencoba melakukan "pekerjaan" yang diantrekan.

Pekerjaan berhenti sedang berjalan untuk Sesi 1 pengguna xy

Unit nama tampilan di sini adalah Session 1 of user xy . Ini akan menjadi (dari nama tampilan) sebuah sesi unit, bukan layanan satuan. Ini adalah abstraksi sesi login ruang pengguna yang dikelola oleh logind systemd program dan plugin PAM-nya. Ini (pada dasarnya dan dalam teori) pengelompokan semua proses yang dijalankan pengguna sebagai "sesi masuk" di suatu tempat.

Pekerjaan yang telah diantrekan adalah stop . Dan mungkin butuh waktu lama karena orang-orang systemd telah keliru menggabungkan sesi hangup dengan sesi shutdown . Mereka mematahkan yang pertama agar yang terakhir berfungsi, dan sebagai tanggapan beberapa orang mengubah systemd untuk mematahkan yang terakhir agar yang pertama berfungsi. Orang-orang yang bersistem harus benar-benar menyadari bahwa mereka adalah dua hal yang berbeda.

Di sesi login Anda, Anda memiliki sesuatu yang mengabaikan SIGTERM atau membutuhkan waktu lama untuk berhenti setelah melihat SIGTERM . Ironisnya, yang pertama adalah perilaku lama dari beberapa shell kontrol pekerjaan. Cara yang benar untuk menghentikan pemimpin sesi login ketika mereka adalah shell kontrol pekerjaan khusus ini adalah dengan memberi tahu mereka bahwa sesi telah ditutup , setelah itu mereka menghentikan semua mereka pekerjaan (jenis pekerjaan yang berbeda dengan pekerjaan sistem internal) dan kemudian berhenti sendiri.

Terkait:Linux – Terminal Gnome gagal memulai?

Apa yang sebenarnya terjadi adalah bahwa systemd sedang menunggu stop timeout unit sampai beralih ke SIGKILL . Batas waktu ini tentu saja dapat dikonfigurasi per unit, dan dapat diatur untuk tidak pernah habis. Karenanya mengapa seseorang berpotensi melihat perilaku yang berbeda.

Bacaan lebih lanjut

  • Puisi Lennart (2015). sistemd. halaman manual systemd. Freedesktop.org.
  • Jonathan de Boyne Pollard (2016-06-01). systemd mematikan proses latar belakang setelah pengguna keluar . 825394. Pelacak bug Debian.
  • Puisi Lennart (2015). systemd.kill. halaman manual systemd. Freedesktop.org.
  • Puisi Lennart (2015). systemd.service. halaman manual systemd. Freedesktop.org.
  • Mengapa bash mengabaikan SIGTERM?
  • https://superuser.com/questions/1102242/

Linux
  1. Bagaimana cara menghentikan proses layar di linux?

  2. Bagaimana menghentikan layanan systemd

  3. Apa sebenarnya yang menentukan apakah pekerjaan latar belakang dimatikan saat shell dikeluarkan, atau dimatikan?

  1. iptables:apa sebenarnya arti --src-type LOCAL?

  2. Apa sebenarnya AVAHI itu?

  3. Apa sebenarnya yang dilakukan init?

  1. Apa Sebenarnya Posix?

  2. Apa yang dimaksud dengan "Pemimpin sesi" di `ps`?

  3. Wordpress - Persiapan Wawancara Kerja WordPress