美文网首页
Linux定时任务-定时锁屏

Linux定时任务-定时锁屏

作者: 箭飞天 | 来源:发表于2019-12-16 11:54 被阅读0次

作为程序员,经常写代码写到难以自拔,但是如果长时间如此,对眼睛和颈椎都是很大负担。如何善待自己的眼睛和颈椎呢?答案就是:Linux cron。本文将介绍通过定时任务实现定时锁屏。注意:本人机器为 Ubuntu。

安装锁屏命令

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

善待眼睛、善待颈椎,从看完本文开始!

参考

相关文章

  • Linux定时任务-定时锁屏

    作为程序员,经常写代码写到难以自拔,但是如果长时间如此,对眼睛和颈椎都是很大负担。如何善待自己的眼睛和颈椎呢?答案...

  • day 17

    第13章 Linux系统定时任务Cron(d)服务应用实践 1.1、Linux定时任务 1.1.1、什么是定时任务...

  • linux crontab: 定时任务

    参考 crontab 定时任务 Linux之crontab定时任务

  • 定时任务

    Linux定时任务 什么是定时任务: 周期性的执行任务计划的软件,linux里定时任务常用软件有:Crond 使用...

  • linux Crontab

    Linux Crontab:Linux中用于执行定时任务的工具crontab -e:编辑定时任务crontab -...

  • day17

    Linux系统定时任务 3W1H 框架 Linux系统定时任务: 1、什么是定时任务? 周期性的执行任务计划的软件...

  • 79.linux定时任务

    Linux定时任务 通过制定 ```crontab -e``编辑和开启定时任务

  • 作业-第04周--课堂-Day17-linux系统定时任务Cro

    Day17 课堂笔记 1 Linux系统定时任务 1、什么是定时任务?周期性的执行任务计划的软件,Linux定时任...

  • Linux笔记

    Linux定时任务 Mysql备份 Linux+Mysql定时备份 * * * * * user task分 时 ...

  • day17-Linux系统定时任务

    Linux系统定时任务 1.什么是定时任务? 周期性的执行任务计划的软件,Linux定时任务软件的常用软件cron...

网友评论

      本文标题:Linux定时任务-定时锁屏

      本文链接:https://www.haomeiwen.com/subject/hngrnctx.html