사용자 도구

사이트 도구


linux:anacron

차이

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

차이 보기로 링크

다음 판
이전 판
linux:anacron [2021/12/27 19:29]
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 는 기본적으로 상시 실행을 가정하기 때문이다.
 +  * Desktop 배포판은 ''/etc/cron.{daily,weekly,monthly}'' 에 지정된 job 들이 anacron 을 통해 실행되게 돼 있어서, 해당 job들은 PC가 꺼져도 다시 켜진뒤에 job 실행이 보장된다(**hourly**는 워낙 자주 실행되므로 제외).
  
-===== 참조 ===== +===== 특정 사용자로 재실행하기 ===== 
-  * [[https://www.tecmint.com/cron-vs-anacron-schedule-jobs-using-anacron-on-linux/|Cron Vs Anacron: How to Schedule Jobs Using Anacron on Linux]]+  * [[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>
 +
 +===== 참조 =====
 +  * [[https://www.nemonein.xyz/2020/05/3778/|꽃삽질 : cron 과 anacron. 과연 둘은 친한 사이일까?]] : anacron 의 작동 원리를 잘 분석해두었다.
 +  * [[https://www.tecmint.com/cron-vs-anacron-schedule-jobs-using-anacron-on-linux/|Cron Vs Anacron: How to Schedule Jobs Using Anacron on Linux]]
 +  * [[https://www.digitalocean.com/community/tutorials/how-to-schedule-routine-tasks-with-cron-and-anacron-on-a-vps|How To Schedule Routine Tasks With Cron and Anacron on a VPS | DigitalOcean]]
linux/anacron.1640600992.txt.gz · 마지막으로 수정됨: 2021/12/27 19:29 저자 kwon37xi