Ekran kilidi / kilidinde bir komut veya komut dosyası nasıl çalıştırılır?


19

Kilitleme / kilit açma ekran sürelerini saklamanın bir yolunu arıyorum.

A=$(date)
echo $A >> $HOME/time_xprofile

Ne denedim:

$HOME/.bashrc
$HOME/.bash_logout
$HOME/.bash_prompt
$HOME/.xprofile

Sonra ekranı kilitledim ve dosyanın görünüp görünmediğini kontrol ettim ve her seferinde başarısız oldu. Zamanı nasıl kontrol edebilirim?


Bu soruyu okurken, bir X sunucusu çalıştırmadığınızı düşündüm. Seçtiğiniz cevap tamamen çalışıyor iken bir X sunucusunu çalıştıran. Belki durumunuzu daha iyi tarif edebilirsiniz ...
ExploWare

Yanıtlar:


20

Aşağıdaki komut dosyası time_xprofile, evinizdeki bir dosyaya kilitleme / kilit açma süresini yazacaktır .

#!/bin/bash

dbus-monitor --session "type='signal',interface='org.gnome.ScreenSaver'" | \
( while true
    do read X
    if echo $X | grep "boolean true" &> /dev/null; then
        echo "locking at $(date)" >> $HOME/time_xprofile
    elif echo $X | grep "boolean false" &> /dev/null; then
        echo "unlocking at $(date)" >> $HOME/time_xprofile
    fi
    done )

komut dosyasını kaydedin. Yürütme izni verin.

chmod +x script.sh

Nasıl çalıştırılır

./script.sh &

Not Betik arka planda çalışmalıdır. Öldürmeyin. Komut dosyası arka planda çalışırken ekran kilidinizi / kilidini açarsanız, kilitleme / kilit açma time_xprofilesüreniz evinizdeki dosyaya kaydedilir . Bir ekran kilidi / kilidini bazı komut veya komut dosyası çalıştırmak için kullanabilirsiniz.

Geçerli terminali kapatırsanız komut dosyanızın öldürüleceğini unutmayın. Kullanabilirsiniz

nohup ./script.sh &

Ardından terminal kapatıldıktan sonra bile çalışmaya devam eder.

Senaryo nasıl öldürülür

Süreci öldürmek için terminalde kullanın

ps ax| grep "[s]cript.sh" | cut -d' ' -f2 | xargs kill

Yukarıdaki komut bu cevaptan esinlenmiştir


Hala XServer ile Ubuntu 17.10'da çalışıyor mu? Neden benim için çalışmıyor bilmiyorum ..
eddieferetro

Daha fazlası: sadece birkaç kez çalışır ...
eddieferetro

1
@ eddieferetro Ben hala 16.04 üzerinde sizin için test edemez. Neden sorunlarınızı belirten yeni bir soru sormuyorsunuz? Ekran kilidi için Dbus olayı 17.10 olarak değiştirilebilir
souravc

6

Ubuntu 14.04'te ekran kilidi kilidini açmak için DBus olayı değişti ve ekran kilidi ve kilit açma olaylarına bağlanmak için yeni komut dosyası aşağıdaki gibi görünüyor

dbus-monitor --session "type='signal',interface='com.ubuntu.Upstart0_6'" | \
(
  while true; do
    read X
    if echo $X | grep "desktop-lock" &> /dev/null; then
      SCREEN_LOCKED;
    elif echo $X | grep "desktop-unlock" &> /dev/null; then
      SCREEN_UNLOCKED;
    fi
  done
)

SCREEN_LOCKED ve SCREEN_UNLOCKED ile yapmanız gerekenleri değiştirin.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.