사용자 도구

사이트 도구


linux:anacron

anacron

  • cron 은 상시 전원이 들어와 있는 시스템(서버)용에 적합하며, daemon 으로 떠서 특정 시간에 job 을 실행하는 역할이라면,
  • anacron 은 daemon으로 뜨지는 않고 가끔씩 끄기도 하는 데스크탑 등에서, 스케줄링된 job 에 대해 전원이 켜지면 실행을 보장해주는 역할을 한다.
  • 최대 실행 빈도는 1일 1회까지만 가능하다.
  • 실행 시간을 완전히 특정할 수 없다.
  • Ubuntu Linux의 경우 Desktop 배포판은 anacron이 깔리고, Server 배포판은 안깔린다. Server 는 기본적으로 상시 실행을 가정하기 때문이다.
  • Desktop 배포판은 /etc/cron.{daily,weekly,monthly} 에 지정된 job 들이 anacron 을 통해 실행되게 돼 있어서, 해당 job들은 PC가 꺼져도 다시 켜진뒤에 job 실행이 보장된다(hourly는 워낙 자주 실행되므로 제외).

특정 사용자로 재실행하기

#!/bin/sh
# If started as root, then re-start as user "gavenkoa":
if [ "$(id -u)" -eq 0 ]; then # root는 id가 0
    exec sudo -H -u gavenkoa $0 "$@" # 핵심부.
    echo "This is never reached.";
fi
 
echo "This runs as user $(id -un)";
# prints "gavenkoa"
 
exit 0;
  • 그냥 다른 방법으로 cron shell 안에서 sudo -u <USER>로 명령을 실행하는 것도..
#!/bin/sh
sudo -u kwon37xi echo "This runs as user $(id -un)";
exit 0;

Logging

  • anacron cron job 내의 system output 은 제대로 확인할 수 없다.
  • 스크립트 내에서 Bash 파이프를 이용하거나 Linux syslog 를 사용한다.
# /var/log/syslog 로 남기기
 
somecmd 2>&1 | logger -i

참조

linux/anacron.txt · 마지막으로 수정됨: 2023/05/09 21:34 저자 kwon37xi