画面のロック/ロック解除でコマンドまたはスクリプトを実行する方法は?


19

ロック/ロック解除画面時間を保存する方法を探しています。

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

私は何を試しましたか:

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

次に、画面をロックし、ファイルが表示され、毎回失敗するかどうかを確認しました。どうすれば時間を確認できますか?


この質問を読んで、Xサーバーを実行していないと思いました。あなたが選択した答えは、Xサーバーの実行中に純粋に機能 ています。たぶん、あなたは...もっと自分の状況を記述することができる
ExploWare

回答:


20

次のスクリプトはtime_xprofile、自宅のファイルにロック/ロック解除時間を書き込みます。

#!/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 )

スクリプトを保存します。実行許可を与えます。

chmod +x script.sh

実行方法

./script.sh &

スクリプトはバックグラウンドで実行する必要があります。殺さないでください。スクリプトがバックグラウンドで実行されているときに画面のロック/ロック解除をオンにすると、ロック/ロック解除の時間がtime_xprofile自宅のファイルに記録されます。これを使用して、画面のロック/ロック解除でコマンドまたはスクリプトを実行できます。

現在のターミナルを閉じると、スクリプトが強制終了されることに注意してください。使用できます

nohup ./script.sh &

その後、ターミナルを閉じた後も実行を継続します。

スクリプトを殺す方法

プロセスを強制終了するには、ターミナルで使用します

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

上記のスクリプトはこの答えに触発されています


XServerを搭載したubuntu 17.10でも動作しますか?なぜ私のために働いていないのか分からない
.-エディフェレトロ

それ以上:それは数回しか動作しません
...-エディフェレトロ

1
@eddieferetro私はまだ16.04にいますが、あなたのためにそれをテストすることはできません。問題を特定して新しい質問をしてみませんか?画面ロックのDbusイベントは17.10で変更される可能性があります
-souravc

6

ubuntu 14.04では、画面ロックロック解除のDBusイベントが変更され、画面ロックおよびロック解除イベントにバインドするための新しいスクリプトは次のようになります。

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とSCREEN_UNLOCKEDを必要なものに置き換えます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.