系统实现:
HOME=/
SHELL=/bin/bash
* * * * * export DISPLAY=:0.0 && notify-send ["该休息一下啦"] "喝水!伸懒腰!动一动!"
python 实现:
sudo apt-get install python3-tk
#!/usr/bin/python3
from tkinter import *
top=Tk()
message='喝水时间到,休息一下吧!'
w=Label(top,text=message,bg='SeaGreen',width=1024,height=800)
w.pack()
top.mainloop()
crontab -e
* */1 * * * python3 /path/timer.py
[定时锁屏]
安装锁屏命令
sudo apt install gnome-screensaver
锁屏
gnome-screensaver-command -l
页面通知
为了更加优化,在锁屏前,弹出系统通知
notify-send -u normal -t 50000 -i appointment-new '1分钟后锁屏' '注意休息,善待眼睛、善待颈椎'
定时任务
Terminal中输入 crontab -e 进入定时任务编辑页面(如果是第一次,会提示选择编辑器,本人选择vim)。输入如下内容:
# m h dom mon dow command
29 * * * * notify-send -u normal -t 50000 -i appointment-new '1分钟后锁屏' '注意休息,善待眼睛、善待颈椎'
30 * * * * gnome-screensaver-command -l
奇怪的是,不管是通知还是锁屏,均无法生效。原因就在于 cron 中执行界面相关的命令,需要有如下合适的参数:$DBUS_SESSION_BUS_ADDRESS,$DISPLAY。如何给这两个参数设置合适的值呢?可以从系统中已运行的程序中获取,详情介绍请参考。
新建脚本:/usr/local/bin/gui-program-from-cron.sh,内容如下:
#!/bin/sh
[ "$#" -lt 1 ] && echo "Usage: $0 program options" && exit 1
program="$1"
shift
user=$(whoami)
env_reference_process=$( pgrep -u "$user" xfce4-session || pgrep -u "$user" ciannamon-session || pgrep -u "$user" gnome-session || pgrep -u "$user" gnome-shell || pgrep -u "$user" kdeinit | head -1 )
export DBUS_SESSION_BUS_ADDRESS=$(cat /proc/"$env_reference_process"/environ | grep --null-data ^DBUS_SESSION_BUS_ADDRESS= | sed 's/DBUS_SESSION_BUS_ADDRESS=//')
export DISPLAY=$(cat /proc/"$env_reference_process"/environ | grep --null-data ^DISPLAY= | sed 's/DISPLAY=//')
"$program" "$@"
修改脚本权限:
sudo chmod +x /usr/local/bin/gui-program-from-cron.sh
再次执行 crontab -e
# m h dom mon dow command
29 * * * * /usr/local/bin/gui-program-from-cron.sh notify-send -u normal -t 50000 -i appointment-new '1分钟后锁屏' '注意休息,善待眼睛、善待颈椎'
30 * * * * /usr/local/bin/gui-program-from-cron.sh gnome-screensaver-command -l
善待眼睛、善待颈椎,从看完本文开始!
参考:
https://blog.csdn.net/weixin_43834662/article/details/95596981?utm_medium=distribute.pc_relevant.none-task-blog-title-8&spm=1001.2101.3001.4242
以上在uos上都不行!!!