notify-send与cron组合(基础桌面通知)notify-send是Ubuntu自带的桌面通知工具,结合cron定时任务可实现定时弹窗提醒。需注意:cron默认不加载图形环境变量,需手动指定DISPLAY和DBUS_SESSION_BUS_ADDRESS。
~/notify_script.sh),内容如下:#!/bin/bash
export DISPLAY=:0.0 # 指定图形显示设备(通常为:0.0)
export DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$(pgrep -u $LOGNAME gnome-session)/environ | tr '\0' '\n' | sed 's/DBUS_SESSION_BUS_ADDRESS=//') # 获取当前用户的DBus地址
notify-send -u normal -t 5000 "定时提醒" "当前时间:$(date '+%H:%M:%S')" # 发送通知(标题+内容,显示5秒)
注:
-u normal表示普通紧急程度(可选low/critical);-t 5000表示通知显示5秒(单位:毫秒)。
② 赋予脚本执行权限:
chmod +x ~/notify_script.sh
③ 编辑当前用户的crontab文件:crontab -e
④ 添加定时任务(例如:每天上午9点、下午3点各提醒一次):0 9,15 * * * ~/notify_script.sh # 每天9点和15点整执行脚本
⑤ 保存退出后,cron会自动加载配置。可通过crontab -l查看当前用户的定时任务。若不想手动编辑crontab,可使用图形化工具管理定时任务,如:
sudo apt install gnome-schedule,启动后通过“新建”按钮添加任务,选择“重复执行”并设置时间,命令填写notify-send "标题" "内容"即可。gnome-schedule,提供直观的时间设置界面,支持自定义命令。若需要更复杂的通知(如短信、邮件),可结合以下工具:
cron+mail命令实现。需先安装邮件工具(如postfix或ssmtp),配置SMTP服务器后,在crontab中添加类似0 9 * * * /path/to/script.sh | mail -s "定时任务" recipient@example.com的命令,将脚本输出发送到指定邮箱。cron+Twilio API(需注册Twilio账号获取SID和Token)或Gammu(连接手机)发送短信。需编写Python或Shell脚本调用API,再通过cron定时执行脚本。cron服务正在运行:sudo systemctl status cron(若未运行,执行sudo systemctl start cron);DISPLAY和DBUS_SESSION_BUS_ADDRESS是否正确(可通过echo $DISPLAY和echo $DBUS_SESSION_BUS_ADDRESS在终端获取当前值);cron日志排查错误:grep CRON /var/log/syslog。以上方法覆盖了Ubuntu系统下定时器通知的主要场景,可根据需求选择合适的方式。