Cron

通知發送在 Cinnamon 不起作用

  • June 16, 2021

我正在使用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。您可以通過執行獲取您的 UID id -u

您在腳本中只需要:

#!/bin/bash

/usr/bin/notify-send "hello" 

我剛剛在執行 Cinnamon 的 Arch 上進行了測試,效果很好。

變數在 crontab 中設置,無需從腳本中導出任何內容。這樣做也沒有意義,腳本正在由 cron 呼叫,無論如何它都不會導出您需要的值。

引用自:https://unix.stackexchange.com/questions/247860