Làm cách nào để chạy lệnh hoặc tập lệnh khi khóa / mở khóa màn hình?


19

Tôi đang tìm cách để lưu trữ khóa / mở khóa thời gian trên màn hình.

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

Tôi đã thử những gì:

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

Sau đó, tôi khóa màn hình và kiểm tra xem tập tin có xuất hiện hay không và nó bị lỗi mỗi lần. Làm thế nào tôi có thể kiểm tra thời gian hơn?


Khi tôi đọc câu hỏi này, tôi nghĩ rằng bạn không chạy máy chủ X. Câu trả lời bạn đã chọn hoàn toàn hoạt động trong khi chạy máy chủ X. Có lẽ bạn có thể mô tả tình huống của mình tốt hơn ...
MiningWare 18/03/2016

FWIW, câu hỏi này cũng đã được hỏi trên stackexchange Unix / Linux .
joeytwiddle

Câu trả lời:


20

Kịch bản sau đây sẽ ghi thời gian khóa / mở khóa trong một tệp time_xprofiletrong nhà của bạn.

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

lưu tập lệnh. Cho phép nó thực thi.

chmod +x script.sh

Cách chạy

./script.sh &

Lưu ý Kịch bản nên chạy ở mặt sau. Đừng giết nó. Nếu bạn bật khóa / mở khóa màn hình trong khi tập lệnh đang chạy ở chế độ nền, thời gian khóa / mở khóa của bạn sẽ được ghi lại trong time_xprofiletập tin tại nhà của bạn. Người ta có thể sử dụng nó để chạy một số lệnh hoặc tập lệnh khi khóa / mở khóa màn hình.

Lưu ý rằng nếu bạn đóng thiết bị đầu cuối hiện tại, tập lệnh của bạn sẽ bị giết. Bạn có thể dùng

nohup ./script.sh &

Sau đó, nó sẽ tiếp tục chạy ngay cả sau khi đóng thiết bị đầu cuối.

Làm thế nào để giết kịch bản

Để giết quá trình, sử dụng trong thiết bị đầu cuối

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

Kịch bản trên được lấy cảm hứng từ câu trả lời này


Nó vẫn hoạt động trong Ubuntu 17.10 với XServer? Tôi không biết tại sao không làm việc cho tôi ..
eddieferetro

Hơn thế nữa: nó chỉ hoạt động một vài lần ...
eddieferetro

1
@eddieferetro Tôi vẫn ở ngày 16.04 không thể kiểm tra nó cho bạn. Tại sao bạn không hỏi một câu hỏi mới chỉ định vấn đề của bạn? Sự kiện Dbus cho khóa màn hình có thể được thay đổi vào 17.10
souravc

6

Trong phiên bản Ubuntu 14.04, sự kiện DBus để mở khóa khóa màn hình đã thay đổi và tập lệnh mới để liên kết với khóa màn hình và mở khóa các sự kiện giống như sau

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
)

Thay thế SCREEN_LOCKED và SCREEN_UNLOCKED bằng những gì bạn cần làm.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.