Diskusi terbaru tentang penggunaan systemd-inhibit untuk mencegah sistem Linux tertidur selama sesi SSH jarak jauh telah memicu perdebatan di antara pengguna tentang pendekatan terbaik untuk menangani manajemen daya pada sistem desktop yang digunakan untuk pekerjaan pengembangan.
Percakapan ini berpusat pada masalah umum yang dihadapi oleh pengembang yang menggunakan komputer desktop mereka secara remote. Ketika bekerja melalui koneksi SSH, pengaturan sleep otomatis sistem dapat mengganggu sesi, memaksa pengguna untuk membangunkan mesin dan menyambung kembali. Meskipun satu solusi melibatkan penggunaan systemd-inhibit dengan proses latar belakang, anggota komunitas telah menyuarakan kekhawatiran tentang pendekatan ini dan menyarankan alternatif.
Solusi Sementara vs. Solusi yang Tepat
Beberapa pengguna menunjukkan bahwa solusi sementara systemd-inhibit merupakan sebuah bodge - perbaikan cepat daripada mengatasi akar masalah. Masalah sebenarnya terletak pada logika yang tidak lengkap dari systemd-logind dalam menangani sesi SSH. Meskipun systemd sudah melacak sesi SSH melalui database login-nya, sistem ini tidak mempertimbangkan dengan baik sesi remote yang aktif ketika membuat keputusan suspend. Ini berarti sistem memperlakukan sesi SSH yang aktif sama seperti desktop yang idle, yang menyebabkan suspend yang tidak diinginkan.
Catatan: systemd-logind adalah layanan sistem yang mengelola login pengguna dan keputusan manajemen daya
Komponen Teknis yang Terlibat:
- systemd-logind: Mengelola sesi pengguna dan keputusan daya
- pam_systemd.so: Modul PAM untuk pelacakan sesi
- systemd-inhibit: Alat untuk memblokir tindakan manajemen daya
- Pelacakan sesi SSH: Terletak di
/run/systemd/users/
,/run/systemd/sessions/
- Power Management Assertions: API yang mendasari (mirip dengan macOS caffeinate)
Pendekatan Alternatif Mendapat Dukungan
Anggota komunitas menyarankan beberapa solusi yang lebih bersih. Satu alternatif populer melibatkan konfigurasi laptop untuk tidak pernah suspend ketika terhubung ke daya, menghilangkan kebutuhan untuk intervensi manual selama tugas yang berjalan lama seperti kompilasi atau pengujian. Yang lain merekomendasikan penggunaan autossh, yang secara otomatis menyambungkan kembali sesi SSH setelah gangguan jaringan atau kejadian bangun sistem.
Saya hanya menggunakan autossh dari CLI dan itu menyambung kembali jika laptop saya (atau mesin remote) bangun lagi.
Beberapa pengguna mengadvokasi untuk sepenuhnya menonaktifkan fitur sleep otomatis, lebih memilih manajemen daya manual. Pendekatan ini memperlakukan komputer sebagai sepenuhnya aktif atau sepenuhnya mati, menghindari kompleksitas mengelola berbagai status daya.
Solusi Alternatif yang Dibahas:
- autossh: Secara otomatis menghubungkan kembali sesi SSH setelah terputus
- Perubahan kebijakan daya: Mengonfigurasi agar tidak pernah suspend ketika menggunakan daya AC
- layanan pengguna systemd: Mengonversi perintah inhibit menjadi layanan yang tepat
- Menonaktifkan sleep sepenuhnya: Manajemen daya manual saja
- D-Bus API: Panggilan sistem langsung alih-alih menggunakan alat command-line
Perbaikan Teknis dan Solusi Sementara
Diskusi mengungkapkan beberapa penyempurnaan teknis terhadap pendekatan asli. Pengguna menyarankan mengubah perintah systemd-inhibit menjadi layanan pengguna systemd yang tepat, yang akan menghilangkan kebutuhan untuk melacak ID proses secara manual. Ini akan memungkinkan perintah start dan stop yang sederhana melalui systemctl daripada mengelola proses latar belakang.
Saran lain melibatkan penulisan program khusus yang memanggil API D-Bus secara langsung, menghindari kompleksitas proses bersarang. Pendekatan ini akan memberikan manajemen sumber daya yang lebih bersih dan operasi yang lebih andal.
Catatan: D-Bus adalah sistem untuk komunikasi antar-proses yang digunakan oleh banyak lingkungan desktop Linux
Struktur Perintah systemd-inhibit:
--no-ask-password
: Melewati prompt autentikasi--what=idle
: Menentukan apa yang akan dihambat (idle, sleep, shutdown)--who="username"
: Mengidentifikasi pengguna atau aplikasi--why="reason"
: Memberikan deskripsi untuk penghambatan- Eksekusi perintah:
sh & disown
membuat proses latar belakang
Tantangan Manajemen Daya yang Lebih Luas
Perdebatan ini menyoroti ketegangan yang sedang berlangsung dalam manajemen daya Linux antara berbagai kasus penggunaan. Meskipun sleep otomatis bekerja dengan baik untuk penggunaan laptop yang khas, ini menciptakan masalah bagi pengguna yang membutuhkan sistem mereka tersedia untuk akses remote. Diskusi menunjukkan bahwa integrasi yang lebih baik antara layanan SSH dan manajemen daya systemd dapat menyelesaikan masalah ini tanpa memerlukan solusi sementara pengguna.
Beberapa peserta mencatat bahwa masalah ini mencerminkan perbedaan filosofis yang lebih luas antara pendekatan Unix tradisional dan sistem berbasis systemd modern. Tantangannya terletak pada menyeimbangkan manajemen daya otomatis dengan fleksibilitas yang diperlukan untuk pola penggunaan yang beragam.
Diskusi komunitas menunjukkan bahwa meskipun solusi sementara teknis ada, masalah yang mendasari memerlukan koordinasi yang lebih baik antara layanan SSH dan sistem manajemen daya untuk menyediakan akses remote yang mulus tanpa mengorbankan efisiensi energi.
Referensi: Keeping sessions alive with systemd-inhibit