사용자 도구

사이트 도구


linux:anacron

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
linux:anacron [2021/12/27 22:31]
kwon37xi
linux:anacron [2023/05/09 21:34] (현재)
kwon37xi [특정 사용자로 재실행하기]
줄 1: 줄 1:
 ====== anacron ====== ====== anacron ======
 +  * [[https://linux.die.net/man/8/anacron|anacron(8): runs commands periodically - Linux man page]]
   * [[linux:cron|cron]] 은 상시 전원이 들어와 있는 시스템(서버)용에 적합하며, daemon 으로 떠서 특정 시간에 job 을 실행하는 역할이라면,   * [[linux:cron|cron]] 은 상시 전원이 들어와 있는 시스템(서버)용에 적합하며, daemon 으로 떠서 특정 시간에 job 을 실행하는 역할이라면,
   * anacron 은 daemon으로 뜨지는 않고 가끔씩 끄기도 하는 데스크탑 등에서, 스케줄링된 job 에 대해 전원이 켜지면 실행을 보장해주는 역할을 한다.   * anacron 은 daemon으로 뜨지는 않고 가끔씩 끄기도 하는 데스크탑 등에서, 스케줄링된 job 에 대해 전원이 켜지면 실행을 보장해주는 역할을 한다.
 +  * 최대 실행 빈도는 1일 1회까지만 가능하다.
 +  * **실행 시간을 완전히 특정할 수 없다.**
   * [[linux:ubuntu|Ubuntu Linux]]의 경우 Desktop 배포판은 anacron이 깔리고, Server 배포판은 안깔린다. Server 는 기본적으로 상시 실행을 가정하기 때문이다.   * [[linux:ubuntu|Ubuntu Linux]]의 경우 Desktop 배포판은 anacron이 깔리고, Server 배포판은 안깔린다. Server 는 기본적으로 상시 실행을 가정하기 때문이다.
-  * Desktop 배포판은 ''/etc/cron.{daily,weekly,monthly}'' 에 지정된 job 들이 anacron 을 통해 실행되게 돼 있어서, 해당 job들은 PC가 꺼져도 다시 켜진뒤에 job 실행이 보장된다(**hourly** 제외).+  * Desktop 배포판은 ''/etc/cron.{daily,weekly,monthly}'' 에 지정된 job 들이 anacron 을 통해 실행되게 돼 있어서, 해당 job들은 PC가 꺼져도 다시 켜진뒤에 job 실행이 보장된다(**hourly**는 워낙 자주 실행되므로 제외). 
 + 
 +===== 특정 사용자로 재실행하기 ===== 
 +  * [[https://askubuntu.com/|anacron - Run /etc/cron.daily from specific user - Ask Ubuntu]] 
 +  * **해당 cron 파일은 실행 권한이 지정된 user 에게도 주어져야 한다.** (모르면 그냥 `0755` 로 설정?) 
 + 
 +<code bash> 
 +#!/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; 
 +</code> 
 + 
 +  * 그냥 다른 방법으로 cron shell 안에서 ''sudo -u <USER>''로 명령을 실행하는 것도.. 
 +<code sh> 
 +#!/bin/sh 
 +sudo -u kwon37xi echo "This runs as user $(id -un)"; 
 +exit 0; 
 +</code> 
 +===== Logging ===== 
 +  * anacron cron job 내의 system output 은 제대로 확인할 수 없다. 
 +  * 스크립트 내에서 [[linux:bash|Bash]] 파이프를 이용하거나 [[linux:syslog|Linux syslog]] 를 사용한다. 
 + 
 +<code sh> 
 +# /var/log/syslog 로 남기기 
 + 
 +somecmd 2>&1 | logger -i 
 +</code>
  
 ===== 참조 ===== ===== 참조 =====
linux/anacron.1640611905.txt.gz · 마지막으로 수정됨: 2021/12/27 22:31 저자 kwon37xi