Pengguna Linux Berdebat Mengenai Alternatif Yang Lebih Baik Kepada systemd-inhibit Untuk Mencegah Sistem Tidur Semasa Sesi SSH

Pasukan Komuniti BigGo
Pengguna Linux Berdebat Mengenai Alternatif Yang Lebih Baik Kepada systemd-inhibit Untuk Mencegah Sistem Tidur Semasa Sesi SSH

Perbincangan terkini mengenai penggunaan systemd-inhibit untuk mencegah sistem Linux daripada tidur semasa sesi SSH jauh telah mencetuskan perdebatan di kalangan pengguna tentang pendekatan terbaik untuk mengendalikan pengurusan kuasa pada sistem desktop yang digunakan untuk kerja pembangunan.

Perbualan ini berpusat pada masalah biasa yang dihadapi oleh pembangun yang menggunakan komputer desktop mereka secara jauh. Apabila bekerja melalui sambungan SSH , tetapan tidur automatik sistem boleh mengganggu sesi, memaksa pengguna untuk membangunkan mesin dan menyambung semula. Walaupun satu penyelesaian melibatkan penggunaan systemd-inhibit dengan proses latar belakang, ahli komuniti telah membangkitkan kebimbangan mengenai pendekatan ini dan mencadangkan alternatif.

Penyelesaian Sementara Berbanding Penyelesaian Yang Betul

Beberapa pengguna menunjukkan bahawa penyelesaian sementara systemd-inhibit mewakili satu pembaikan pantas - penyelesaian cepat dan bukannya menangani punca masalah. Isu sebenar terletak pada logik yang tidak lengkap systemd-logind untuk mengendalikan sesi SSH . Walaupun systemd sudah menjejaki sesi SSH melalui pangkalan data log masuknya, ia tidak mempertimbangkan dengan betul sesi jauh yang aktif semasa membuat keputusan penggantungan. Ini bermakna sistem menganggap sesi SSH yang aktif sama seperti desktop yang tidak aktif, membawa kepada penggantungan yang tidak diingini.

Nota: systemd-logind ialah perkhidmatan sistem yang menguruskan log masuk pengguna dan keputusan pengurusan kuasa

Komponen Teknikal Yang Terlibat:

  • systemd-logind: Menguruskan sesi pengguna dan keputusan kuasa
  • pam_systemd.so: Modul PAM untuk penjejakan sesi
  • systemd-inhibit: Alat untuk menyekat tindakan pengurusan kuasa
  • Penjejakan sesi SSH: Terletak di /run/systemd/users/, /run/systemd/sessions/
  • Pernyataan Pengurusan Kuasa: API asas (serupa dengan macOS caffeinate)

Pendekatan Alternatif Mendapat Sokongan

Ahli komuniti mencadangkan beberapa penyelesaian yang lebih bersih. Satu alternatif popular melibatkan konfigurasi komputer riba untuk tidak pernah menggantung apabila disambungkan kepada kuasa, menghapuskan keperluan untuk campur tangan manual semasa tugas yang berjalan lama seperti kompilasi atau ujian. Yang lain mengesyorkan menggunakan autossh , yang secara automatik menyambung semula sesi SSH selepas gangguan rangkaian atau peristiwa bangun sistem.

Saya hanya menggunakan autossh dari CLI dan ia menyambung semula jika komputer riba saya (atau mesin jauh) bangun lagi.

Sesetengah pengguna menyokong untuk melumpuhkan sepenuhnya ciri tidur automatik, lebih suka pengurusan kuasa manual. Pendekatan ini menganggap komputer sebagai sama ada aktif sepenuhnya atau ditutup sepenuhnya, mengelakkan kerumitan menguruskan keadaan kuasa yang berbeza.

Penyelesaian Alternatif yang Dibincangkan:

  • autossh: Menyambung semula sesi SSH secara automatik selepas gangguan
  • Perubahan dasar kuasa: Konfigurasikan supaya tidak pernah suspend apabila menggunakan kuasa AC
  • Perkhidmatan pengguna systemd: Tukar arahan inhibit kepada perkhidmatan yang betul
  • Pelumpuhan tidur sepenuhnya: Pengurusan kuasa manual sahaja
  • D-Bus API: Panggilan sistem langsung dan bukannya alat baris arahan

Penambahbaikan Teknikal dan Penyelesaian Sementara

Perbincangan mendedahkan beberapa penambahbaikan teknikal kepada pendekatan asal. Pengguna mencadangkan menukar arahan systemd-inhibit kepada perkhidmatan pengguna systemd yang betul, yang akan menghapuskan keperluan untuk menjejaki ID proses secara manual. Ini akan membenarkan arahan mula dan berhenti yang mudah melalui systemctl dan bukannya menguruskan proses latar belakang.

Cadangan lain melibatkan menulis program khusus yang memanggil API D-Bus secara langsung, mengelakkan kerumitan proses bersarang. Pendekatan ini akan menyediakan pengurusan sumber yang lebih bersih dan operasi yang lebih dipercayai.

Nota: D-Bus ialah sistem untuk komunikasi antara proses yang digunakan oleh banyak persekitaran desktop Linux

Struktur Arahan systemd-inhibit:

  • --no-ask-password: Langkau gesaan pengesahan
  • --what=idle: Nyatakan apa yang hendak dihalang (idle, sleep, shutdown)
  • --who="username": Kenal pasti pengguna atau aplikasi
  • --why="reason": Berikan penerangan untuk halangan tersebut
  • Pelaksanaan arahan: sh & disown mencipta proses latar belakang

Cabaran Pengurusan Kuasa Yang Lebih Luas

Perdebatan ini menyerlahkan ketegangan berterusan dalam pengurusan kuasa Linux antara kes penggunaan yang berbeza. Walaupun tidur automatik berfungsi dengan baik untuk penggunaan komputer riba biasa, ia mencipta masalah untuk pengguna yang memerlukan sistem mereka tersedia untuk akses jauh. Perbincangan mencadangkan bahawa integrasi yang lebih baik antara perkhidmatan SSH dan pengurusan kuasa systemd boleh menyelesaikan isu ini tanpa memerlukan penyelesaian sementara pengguna.

Sesetengah peserta menyatakan bahawa masalah ini mencerminkan perbezaan falsafah yang lebih luas antara pendekatan Unix tradisional dan sistem berasaskan systemd moden. Cabaran terletak pada mengimbangi pengurusan kuasa automatik dengan fleksibiliti yang diperlukan untuk corak penggunaan yang pelbagai.

Perbincangan komuniti menunjukkan bahawa walaupun penyelesaian sementara teknikal wujud, isu asas memerlukan koordinasi yang lebih baik antara perkhidmatan SSH dan sistem pengurusan kuasa untuk menyediakan akses jauh yang lancar tanpa mengorbankan kecekapan tenaga.

Rujukan: Keeping sessions alive with systemd-inhibit