[Linux] ssh를 사용해 crontab 수정하기

ssh를 사용해 crontab을 수정하는 방법에 대한 정리


환경

  • Linux
  • SSH(OpenSSH)
  • crontab


방법

crontab

crontab [-u user] file
crontab [-u user] { -l | -r [-f] |	-e }
  • 표준입력(stdin)을 주거나 crontab 명령어 다음에 파일명을 넘겨주면 해당 표준입력(stdin)이나 파일로 현재의 crontab 내용을 덮어쓴다.
  • ssh로 수정시 crontab -e를 사용할 수 없기 때문에 위의 방법을 사용한다.
  • 문서를 참고하면 “The first form of this command is used to install a new crontab from some named file or standard input if the pseudo-filename ‘-‘ is given”이라고 나와있다.


예시

시나리오

  • 현재 컴퓨터에서 서버에 있는 crontab 내용을 수정하는 시나리오

예시

  • 서버에 있는 crontab 내용 확인
# Check remote crontab
ssh twpower@157.230.234.230 "crontab -l"
0 10 17 * * /home/twpower/simple-script.sh
40 7 * * 1 python /home/twpower/run.py
  • crontab의 내용을 /tmp에 복사후에 수정하고 해당 내용을 crontab에 적용
# Copy current crontab content to temporary file
ssh twpower@157.230.234.230 "crontab -l > /tmp/tmp-crontab-content"

# Add crontab content to temporary file
# Not only addition but also deletion and modification are possible
# Many variations are possible like using sed, tee or cat
ssh twpower@157.230.234.230 "echo '* * * * 1 python /home/twpower/run.py' >> /tmp/tmp-crontab-content"

# Apply new crontab using temporary file
ssh twpower@157.230.234.230 "crontab /tmp/tmp-crontab-content"

# Remove temporary file
ssh twpower@157.230.234.230 "rm -rf /tmp/tmp-crontab-content"
  • 결과 확인
# Check remote crontab
ssh twpower@157.230.234.230 "crontab -l"
0 10 17 * * /home/twpower/simple-script.sh
40 7 * * 1 python /home/twpower/run.py
* * * * 1 python /home/twpower/run.py

스크립트

  • 아래처럼 스크립트로 만들수도 있다.
#!/bin/bash

# Copy current crontab content to temporary file
ssh twpower@157.230.234.230 "crontab -l > /tmp/tmp-crontab-content"

# Add crontab content to temporary file
# Not only addition but also deletion and modification are possible
# Many variations are possible like using sed, tee or cat
ssh twpower@157.230.234.230 "echo '* * * * 1 python /home/twpower/run.py' >> /tmp/tmp-crontab-content"

# Apply new crontab using temporary file
ssh twpower@157.230.234.230 "crontab /tmp/tmp-crontab-content"

# Remove temporary file
ssh twpower@157.230.234.230 "rm -rf /tmp/tmp-crontab-content"


참고자료