
cron 작업을 통해 노트북이 AC에 연결되어 있지 않은 경우 노트북을 끄는 간단한 bash 스크립트를 실행하려고 합니다.
내 스크립트는 다음과 같습니다.
#!/bin/bash
if ! on_ac_power; then
poweroff
fi
그리고 매분마다 실행되도록 cron을 구성했습니다.
*/1 * * * * /home/user/Documents/script.sh
수동으로 실행하면 스크립트가 제대로 작동하지만 그렇지 않으면 cron에서는 아무런 효과가 없는 것 같습니다.
내가 여기서 무엇을 놓치고 있는 걸까요?
답변1
우선 나는 루트에서 크론을 실행하지 않았습니다.
분명히 cron이 루트에서 실행되려면 를 추가해야 합니다 sudo crontab -e
. 으로만 추가한 것은 crontab -e
sudo로 실행되지 않습니다.
참조에서 지적한 두 번째 :
cron은 기본적으로 매우 제한된 환경에서 실행되므로 사용자 터미널에서 명령 이름을 통해 실행되는 많은 명령은 경로를 확장하기 위해 crontab의 전체 경로 또는 crontab 시작 부분의 선언이 필요합니다.
그래서 결국 스크립트에서 poweroff
by 로 교체했고 이제 예상대로 실행됩니다./sbin/shutdown
#!/bin/bash
if ! on_ac_power;
then
/sbin/shutdown
fi