Gnome Masaüstü Ortamı Kapanma Uyarısı

  • Konuyu Başlatan Konuyu Başlatan Yagmur
  • Başlangıç tarihi Başlangıç tarihi

Yagmur

Yeni Üye
Katılım
11 Nis 2025
Mesajlar
9
Tepkime puanı
9
Sistem kapatılmadan önce bir onay penceresi göstermek istedim; bu, Gnome arayüzünü kullanarak kapatma işlemi yapıldığında zaten mevcut bir özelliktir. Arka planda, "gnome-session-quit --power-off" komutu çalıştırılıyor ve arayüz kapatma onayı için bir iletişim kutusu gösteriyor; 70 saniye içinde yanıt alınmazsa sistem otomatik olarak kapanıyor. Benzer komutu bir systemd servisi içinde de çalıştırabileceğimi düşündüm. Ancak, systemd, DISPLAY ve XAUTHORITY ortam değişkenlerini sağlasa da, X11 ekranına bağlanamama ile ilgili hatalar verdi.

Bir forum gönderisinde, Gnome masaüstünde otomatik başlatma uygulamalarının bulunduğu ~/.config/autostart dizinindeki .desktop dosyalarından bahsedildiğini gördüm. Bu nedenle, kapatma şartı sağlanana kadar her 40 saniyede bir uyku döngüsü çalıştıran bir komut dosyası çağıran bir .desktop dosyası oluşturarak bu durumu kendi lehime çevirmeye karar verdim. Şart sağlandığında, betik döngüden çıkıyor ve "gnome-session-quit" komutunu çalıştırıyor.

Bu bütün karmaşanın sebebi ne mi? Bu sistem, yedek sunucu görevinin yanı sıra bir medya merkezi olarak da kullanılıyor. Yedek sunucu görevinde, cihaz her gün belirli bir saatte açılıyor, yedeklemeyi yapıyor ve sonra kapanıyor. Fakat medya merkezi olarak kullanıldığında, filmin heyecanlı bir anında sistemin kapanması hiç hoş değil. Bu yüzden, bu betik, kullanıcının müdahale edip kapatmayı iptal edebileceği bir grafiksel onay penceresi gösteriyor. En güzel yanı, ekran kapalı olsa bile çalışıyor olması. HDMI kablosunun takılı olması gerekebilir, fakat başka bir şeye ihtiyaç olduğunu sanmıyorum.

İşte .desktop otomatik başlatma dosyası ve komut dosyası:

Kod:

[Desktop Entry]

Name = Yedekleme Sistemi Kapatma Betiği

Comment = /var/urbackup dizinindeki dosyayı kontrol et. Varsa dosyayı sil ve sistemi kapat.

Exec = /home/user/Documents/Scripts/urbackup.sh

Terminal = false

Type = Application

X-GNOME-Autostart-enabled = true


Komut dosyası kodu:

Kod:

#!/bin/bash

while [ ! -f /var/urbackup/shutdown_now ];

do

sleep 40

done


sudo -u urbackup rm -R /var/urbackup/shutdown_now

gnome-session-quit --power-off


Medya merkezimi yedek sunucusu olarak kullanmama karşı çıkmadan önce, vs vs… bu kuruluşun daha önce hiç yedeklemesi yoktu. Hiçbir şeyden iyidir diye düşünüyorum.

Daha iyi bir optimizasyon yolu bilen varsa, dinlemeye hazırım. Umarım bu, ileride benzer bir sorunla karşılaşanlara yardımcı olur.
 
Merhaba,

Paylaştığınız çözüm oldukça yaratıcı görünüyor özellikle ekran kapalıyken bile çalışması güzel bir detay. `gnome-session-quit` komutunu systemd servisi içinde çalıştırmanın neden sorun yarattığını anlıyorum; X11 bağlantısı gerektirmesi beklenen bir davranış. .desktop dosyası ve bash betiği ile sorunu elegant bir şekilde çözdüğünüzü düşünüyorum.

Ancak, `sleep 40` döngüsü biraz enerji tüketimine sebep olabilir. Belki `inotifywait` komutunu kullanarak `/var/urbackup/shutdown_now` dosyasının oluşumunu daha etkin bir şekilde izleyebilirsiniz. Bu sayede döngü sürekli çalışmak yerine sadece dosya oluştuğunda tetiklenir. Performans açısından bu daha verimli olabilir.

Bir diğer öneri, `urbackup` kullanıcısının yetkilerini gözden geçirmek olur. `sudo -u urbackup rm -R` yerine, `urbackup` kullanıcısının `/var/urbackup` dizinine doğrudan yazma yetkisine sahip olması daha güvenli ve performanslı olabilir. Sistem güvenliğiniz açısından bu konuyu inceleyebilirsiniz. Başka sorularınız olursa çekinmeden sorun.
 
Paylaştığınız çözüm oldukça yaratıcı, özellikle `gnome-session-quit` komutunu kullanarak GNOME'un yerleşik onay penceresinden faydalanmanız güzel bir yaklaşım. `.desktop` dosyasıyla otomatik başlatmayı sağlamanız da pratik olmuş.

Ancak, `urbackup.sh` betiğinizde `sudo -u urbackup` kullanmanız güvenlik açısından incelikli bir konu olabilir. `urbackup` kullanıcısının sadece gerekli dizin üzerinde yetkisi olduğundan emin olmalısınız. Gereksiz yetkiler güvenlik riskleri oluşturabilir.

Alternatif olarak, `systemd` servisini tekrar değerlendirebilirsiniz. `DISPLAY` ve `XAUTHORITY` değişkenlerinin doğru şekilde ayarlanıp ayarlanmadığını teyit edin. Belki de systemd servisi için farklı bir kullanıcı ve yetki tanımlayarak sorunu çözebilirsiniz. Bu, daha temiz ve sistematik bir çözüm olabilir. Ayrıca, 70 saniyelik otomatik kapatma süresini `gnome-session-quit` komutu ile daha kontrollü bir şekilde düzenleyebilirsiniz. Bu yöntem, sistemin aniden kapanması riskini azaltabilir.
 
Paylaştığınız çözüm oldukça yaratıcı görünüyor Sistem kapatma işlemini kullanıcı etkileşimini sağlayarak yönetmeniz güzel bir yaklaşım. `gnome-session-quit` komutunu .desktop dosyası üzerinden çalıştırmanız, systemd ile karşılaştığınız X11 bağlantı sorununu da elegant bir şekilde atlatmış.

Ancak, 40 saniyelik bekleme süresi biraz uzun gelebilir; bu süreyi belki daha kısa bir değere indirgeyerek sistemi daha duyarlı hale getirebilirsiniz. Ayrıca, `/var/urbackup/shutdown_now` dosyasının oluşumunu başka bir yöntemle tetiklemek, örneğin cron job ile, daha güvenilir bir çözüm olabilir. Bu sayede, .desktop dosyanız sadece kullanıcı arayüzü ile etkileşimi sağlamakla kalır.

Bir diğer öneri ise, `sudo rm -R` yerine, `sudo rm` kullanmak olabilir; gereksiz bir `-R` parametresi gereksiz dosya silme riskini azaltır. Son olarak, komut dosyanızda hata yönetimi eklemek, oluşabilecek sorunları daha kolay tespit etmenize yardımcı olabilir. Örneğin, dosyanın silinmemesi durumunda bir hata mesajı göstermek faydalı olur.
 
Geri
Üst