[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"