Odpowiedzi:
Możesz znaleźć zdarzenia na ekranie odblokowania za pomocą następującego polecenia:
grep screen /var/log/auth.log*
Ale nie jest tak łatwo znaleźć zdarzenia na ekranie blokady, ponieważ domyślnie nie ma dziennika dla tych zdarzeń (o ile mi wiadomo).
W każdym razie możesz uruchomić następującą komendę w celu zarejestrowania zdarzeń na ekranie blokady:
dbus-monitor --session "type='signal',interface='org.gnome.ScreenSaver'" | ( while true; do read X; if echo "$X" | grep "boolean true" &> /dev/null; then echo "Screen locked on $(date)" > $HOME/lock_screen.log; fi; done )
w ~/lock_screen.log
pliku
Jeśli podoba Ci się powyższe polecenie, użyj go w skrypcie i spraw, aby skrypt był uruchamiany automatycznie podczas uruchamiania.
Bibliografia:
dbus-monitor --session "type='signal',interface='com.ubuntu.Upstart0_6'"
jest signal time=1497336035.520628 sender=org.freedesktop.DBus -> destination=:1.140 serial=2 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=NameAcquired string ":1.140" signal time=1497336035.520706 sender=org.freedesktop.DBus -> destination=:1.140 serial=4 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=NameLost string ":1.140"
, a następnie nic, gdy blokuję lub odblokowuję
FWIW: to, co działa dla mnie na Ubuntu 16.04.4 LTS z Unity, to monitorowanie DBUS za pomocą następującego polecenia:
dbus-monitor --session "type='signal',interface='com.canonical.Unity.Session'"
... a następnie monitorowanie zdarzeń „Zablokowane” i „Odblokowane”. Przykładowe dane wyjściowe:
czas sygnału = 1525269138.855107 nadawca =: 1,51 -> miejsce docelowe = (puste miejsce docelowe) serial = 86735 ścieżka = / com / canonical / Unity / Session; interfejs = com.canonical.Unity.Session; member = LockRequested
czas sygnału = 1525269139.409261 nadawca =: 1,51 -> miejsce docelowe = (puste miejsce docelowe) serial = 86892 ścieżka = / com / canonical / Unity / Session; interfejs = com.canonical.Unity.Session; member = Zablokowany
czas sygnału = 1525269151.238899 nadawca =: 1,51 -> miejsce docelowe = (puste miejsce docelowe) serial = 86937 ścieżka = / com / canonical / Unity / Session; interfejs = com.canonical.Unity.Session; member = UnlockRequested
czas sygnału = 1525269151.791874 nadawca =: 1,51 -> miejsce docelowe = (puste miejsce docelowe) serial = 86938 ścieżka = / com / canonical / Unity / Session; interfejs = com.canonical.Unity.Session; member = Odblokowany
Tego używam w Ubuntu 16.04. Loguje się do syslog systemu.
Dodaj do folderu domowego, oznacz jako plik wykonywalny, a następnie użyj go, gnome-session-properties
aby skonfigurować go do uruchamiania podczas uruchamiania sesji.
#!/bin/bash
exit_report(){
logger "$(date) Lockscreen Monitoring Terminated."
}
trap "exit_report; exit;" 0
lockmon() {
adddate() {
while IFS= read -r line; do
echo $line | grep string | grep '"start"' -q
if [ $? -eq 0 ] ; then
logger "$(date) Screen locked"
fi
echo $line | grep string | grep '"stop"' -q
if [ $? -eq 0 ] ; then
logger "$(date) Screen unlocked"
fi
done
}
logger "$(date) Lockscreen Monitoring Started."
dbus-monitor --session "type='signal',interface='com.ubuntu.Upstart0_6.Instance'" | adddate
}
lockmon
Na podstawie podobnej odpowiedzi dla systemów Fedora .
cat screen /var/log/auth.log | grep unlock
- sudo nie jest konieczne.