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系統下定時器通知的主要場景,可根據需求選擇合適的方式。