無法從 cron 作業發送通知
我正在嘗試使用 cron 作業來查看電池何時低於給定門檻值,然後發送電池緊急通知。但是,當我讓 cron 作業每分鐘執行一次腳本並讓腳本向我發送通知時,它就不起作用了。
為了確保這不是腳本的權限問題或導致 cron 作業無法執行的原因,我讓腳本創建了一個文件,並且它可以正常工作。這是 crontab 條目:
* * * * * /home/aravk/test.sh
而且,為了簡化問題,這些是以下內容
test.sh
:#!/bin/sh /usr/bin/dunstify hi
但是,沒有顯示通知。當我手動執行該腳本時,它確實有效。我還嘗試通過將 crontab 條目更改為來將
DISPLAY
環境變數設置為,但它仍然不起作用。如何從 cron 作業執行的腳本發送通知?如果相關,我在 Arch Linux 上。:0``* * * * * export DISPLAY=:0 && /home/aravk/test.sh
我將此添加到我的 crontab 並且我的所有通知都可以正常工作(目前使用zenity和notify-send進行了測試):
DISPLAY=":0.0" XAUTHORITY="/home/me/.Xauthority" XDG_RUNTIME_DIR="/run/user/1000" DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
你必須讓 crontab 作業訪問一些環境變數。我剛剛在我的 Kali Linux 中解決了這個問題,所以打開終端並
export
輸入輸入,將顯示一條包含變數資訊的消息。到達
declare -x DISPLAY=":1"
存在的行(值可能是 0 而不是 1)只需複制DISPLAY=":1"
並在您的 crontab 行中過去,然後轉到declare -x XAUTHORITY="/run/user/1000/gdm/Xauthority"
存在的行並複制此部分XAUTHORITY="/run/user/1000/gdm/Xauthority"
,然後在您的 crontab 行中也過去。你的 crontab 會是這樣的:
* * * * * DISPLAY=':1' XAUTHORITY='/run/user/1000/gdm/Xauthority' your_command