systemd beroperasi secara internal dalam hal antrian "pekerjaan". Setiap pekerjaan (menyederhanakan sedikit) adalah tindakan yang harus diambil: berhenti, periksa, mulai, atau mulai ulang unit tertentu .
Ketika (misalnya) Anda menginstruksikan systemd untuk memulai unit layanan , ia bekerja keluar daftar berhenti dan memulai pekerjaan untuk unit apa pun (unit layanan, unit mount, unit perangkat, dan sebagainya) diperlukan untuk mencapai tujuan itu, menurut persyaratan dan ketergantungan unit, memerintahkannya, sesuai dengan hubungan pemesanan unit, berhasil dan (jika mungkin) memperbaiki kontradiksi diri sendiri, dan (jika langkah terakhir berhasil) menempatkan mereka dalam antrian.
Kemudian ia mencoba untuk melakukan "pekerjaan" yang telah diuraikan.
Pekerjaan berhenti sedang berjalan untuk Sesi 1 pengguna xy
Nama tampilan unit di sini adalah Session 1 of user xy
. Ini akan menjadi (dari nama tampilan) unit sesi , bukan unit layanan . Ini adalah abstraksi sesi ruang-pengguna yang dikelola oleh logind
program systemd dan plugin PAM-nya. Ini adalah (pada intinya dan dalam teori) pengelompokan semua proses yang dijalankan pengguna sebagai "sesi masuk" di suatu tempat.
Pekerjaan yang telah ditolak itu adalah stop
. Dan mungkin butuh waktu lama karena orang-orang systemd telah keliru menyatukan hangup sesi dengan shutdown sesi . Mereka mematahkan yang pertama untuk membuat yang kedua bekerja, dan sebagai tanggapan beberapa orang mengubah sistem dan mematahkan yang kedua untuk membuat yang kedua bekerja. Orang-orang systemd benar-benar harus mengenali bahwa mereka adalah dua hal yang berbeda.
Di sesi login Anda, Anda memiliki sesuatu yang mengabaikan SIGTERM
atau yang membutuhkan waktu lama untuk dihentikan setelah dilihat SIGTERM
. Ironisnya, yang pertama adalah perilaku lama beberapa cangkang kontrol pekerjaan. Cara yang benar untuk mengakhiri pemimpin sesi login ketika mereka adalah shell kontrol pekerjaan khusus ini adalah untuk memberitahu mereka bahwa sesi telah ditutup , dimana mereka mengakhiri semua pekerjaan mereka (jenis pekerjaan yang berbeda dengan pekerjaan systemd internal) dan kemudian mengakhiri diri mereka sendiri.
Apa yang sebenarnya terjadi adalah systemd sedang menunggu batas waktu unit berhenti sampai ia mau SIGKILL
. Batas waktu ini dapat dikonfigurasi per unit, tentu saja, dan dapat diatur agar tidak pernah habis. Karenanya mengapa seseorang berpotensi dapat melihat perilaku yang berbeda.
Bacaan lebih lanjut