Cron
通知發送在 Cinnamon 不起作用
我正在使用
Linux Mint 17
.我想每隔 50 分鐘收到一次通知,每隔一小時進行一次小休息。
這是cron 工作:
nazar@desktop ~ $ crontab -l DISPLAY=:0.0 XAUTHORITY=/home/matrix/.Xauthority 00 13 * * * /home/nazar/Documents/scripts/lunch_break_job.sh # JOB_ID_2 50 * * * * /home/nazar/Documents/scripts/pc_break.sh # JOB_ID_1 * * * * * /home/nazar/Documents/scripts/cron_job_test.sh # JOB_ID
這是腳本
/home/nazar/Documents/scripts/cron_job_test.sh
:#!/bin/bash export DISPLAY=0.0 export XAUTHORITY=/home/matrix/.Xauthority if [ -r "$HOME/.dbus/Xdbus" ]; then . "$HOME/.dbus/Xdbus" fi /usr/bin/notify-send -i "hello"
這個函式片段:
if [ -r "$HOME/.dbus/Xdbus" ]; then . "$HOME/.dbus/Xdbus" fi
檢查
DBUS_SESSION_BUS_ADDRESS
並使用它。根據這個答案,我執行了腳本,現在我
Dbus
的保存到$HOME/.dbus/Xdbus
:nazar@desktop ~ $ cat $HOME/.dbus/Xdbus DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-flm7sXd0I4,guid=df48c9c8d751d2785c5b31875661ebae export DBUS_SESSION_BUS_ADDRESS
一切都應該工作。我找不到遺漏的東西。因為通知現在不起作用。
從終端它工作正常:
如何解決這個問題?
解決方案:
現在我的
crontab
樣子如下:DISPLAY=":0.0" XAUTHORITY="/home/nazar/.Xauthority" XDG_RUNTIME_DIR="/run/user/1000" 00 13 * * * /home/nazar/Documents/scripts/lunch_break_job.sh # JOB_ID_2 50 * * * * /home/nazar/Documents/scripts/pc_break.sh # JOB_ID_1 # * * * * * /home/nazar/Documents/scripts/cron_job_test.sh # JOB_ID
現在
cron_job_test.sh
看起來:#!/bin/bash /usr/bin/notify-send -i /home/nazar/Pictures/icons/Mail.png "hello" "It is just cron test message"
pc_break.sh
:#!/bin/bash /usr/bin/notify-send -i /home/nazar/Pictures/icons/download_manager.png "Break:" "Make a break for 10 min"
lunch_break_job.sh
:#!/bin/bash /usr/bin/notify-send -i /home/nazar/Pictures/icons/Apple.png "Lunch: " "Please, take a lunch!"
你也需要設置
XDG_RUNTIME_DIR
。將您的 crontab 更改為:DISPLAY=":0.0" XAUTHORITY="/home/nazar/.Xauthority" XDG_RUNTIME_DIR="/run/user/1001" 00 13 * * * /home/nazar/Documents/scripts/lunch_break_job.sh # JOB_ID_2 50 * * * * /home/nazar/Documents/scripts/pc_break.sh # JOB_ID_1 * * * * * /home/nazar/Documents/scripts/cron_job_test.sh # JOB_ID
確保更改
nazar
為您的使用者名和1001
實際的 UID。您可以通過執行獲取您的 UIDid -u
。您在腳本中只需要:
#!/bin/bash /usr/bin/notify-send "hello"
我剛剛在執行 Cinnamon 的 Arch 上進行了測試,效果很好。
變數在 crontab 中設置,無需從腳本中導出任何內容。這樣做也沒有意義,腳本正在由 cron 呼叫,無論如何它都不會導出您需要的值。