배터리가 특정 임계값 아래로 떨어지는 시기를 확인하고 배터리 위험 알림을 보내기 위해 cron 작업을 사용하려고 합니다. 그러나 cron 작업이 1분마다 스크립트를 실행하고 스크립트가 나에게 알림을 보내도록 하면 작동하지 않습니다.
스크립트의 권한 문제가 아닌지 또는 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
답변1
이것을 내 crontab에 추가했고 모든 알림이 작동합니다(현재 사용 중선그리고알림이 전송되었습니다.):
DISPLAY=":0.0"
XAUTHORITY="/home/me/.Xauthority"
XDG_RUNTIME_DIR="/run/user/1000"
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
답변2
crontab 작업에 일부 환경 변수에 대한 액세스 권한을 부여해야 합니다. 방금 Kali Linux에서 이 문제를 해결했기 때문에 터미널을 열고 Enter를 입력하면 export
변수 정보가 포함된 메시지가 표시됩니다.
declare -x DISPLAY=":1"
존재하는 행(값은 1 대신 0일 수 있음)으로 이동하여 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
답변3
root
제 경우에는 사용자를 사용하는 것이 문제였습니다 notify-send
. 나는 이것이 sudo notify-send
터미널에서 작동하지 않고 (즉, 현재 사용자)에서만 작동한다는 것을 알았을 때 notify-send
이것을 깨달았습니다 . 따라서 내가 /etc/crontab
사용하는 일반적인 root
cron 스크립트를 편집하는 대신 myusername
전체 답변을 확인하십시오.여기.