유닉스 crontab에 대해 질문이 있습니다.

글쓴이: 익명 사용자 / 작성시간: 화, 2019/06/11 - 1:12오전
crontab을 사용 하려고 간단하게 crontab -e를 이용하여 다음과 같이 적었습니다.
# Edit this file to introduce tasks to be run by cron. # # Each task to run has to be defined through a single line # indicating with different fields when the task will be run # and what command to run for the task # # To define the time you can provide concrete values for # minute (m), hour (h), day of month (dom), month (mon), # and day of week (dow) or use '*' in these fields (for 'any').# # Notice that tasks will be started based on the cron's system # daemon's notion of time and timezones. # # Output of the crontab jobs (including errors) is sent through # email to the user the crontab file belongs to (unless redirected). # # For example, you can run a backup of all your user accounts # at 5 a.m every week with: # 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/ # # For more information see the manual pages of crontab(5) and cron(8) # # m h dom mon dow command * * * * * /usr/bin/wall "test"
그렇지만 wall 명령어가 실행되지 않아서 구글링 한 결과 환경변수를 상속 받지 못하여서 그렇다길래 SHELL과 PATH의 환경변수를 안에 넣어 보기도 했지만 작동하지 않았습니다.
그러다가
MAILTO=root
를 넣자 작동이 잘됐는데 MAILTO=root라는게 정확히 무슨 의미이기에 crontab이 작동 될 수 있었던 건가요?Forums:
정확히 어떤 유닉스를 사용 중인가요? util
정확히 어떤 유닉스를 사용 중인가요? util-linux 패키지에 들어 있는 wall은 MAILTO 환경 변수를 참조하지 않는 것 같습니다.
https://github.com/karelzak/util-linux/tree/master/term-utils
넷사랑에서 다운 받은 xshell을 사용중입니다
MAILTO라는게 환경변수인 것은 알겠는데 이 환경 변수가 무엇이길래 crontab에 넣어주면 작동하는 것인가요?
contab 을 설정한 OS가 무슨 unix 냐고
contab 을 설정한 OS가 무슨 unix 냐고 물어 보는 겁니다.
xshell은 unix 가 아니라 unix에 원격 접속을 하기 위한 terminal program 입니다. xshell 과 crontab 은 직접적인 연관이 아무것도 없습니다.
MAILTO 는 cron daemon이 cron job 수행 시에 stdout 으로 나온 결과를 메일로 발송을 할 때 사용을 합니다. 기본적으로는 실행한 유저에게 메일을 보내게 되고, 메일을 보내고 싶지 않거나 다른 계정으로 보내고 싶을 경우에 MAILTO 환경 변수를 이용합니다.
OS 가 뭐냐고 물어보는 이유는, 기본적으로 util-linux 에서 제공하는 wall 은 MAILTO 환경 변수를 전혀 참조를 하지 않기 때문에 혹시 매우 minor 한 OS를 사용하는 것인지를 물어 보는 것입니다.
linux 를 사용 하신다고 가정을 한다면, MAILTO 를 설정하고 나서 정상 작동을 했다고 하시는데,
작동이 잘 되었다는 것 부터 검증을 해야 할 것 같습니다.
사용하는 OS가 linux 라면, wall 로 기대한 동작은 무었입니까?
아아 OS는 Linux입니다. wall로 기대한
아아 OS는 Linux입니다. wall로 기대한 동작이라기 보다 crontab을 공부하는 중인데 crontab -e로 무엇을 하든간에 실행이 안돼서 환경변수를 이것 저것 넣다가 MAILTO=root를 넣자 실행이 되어 다른 모든 명령어들도 MAILTO=root를 넣으면 되나 싶어서 질문하였습니다.
제가 드린
제가 드린
의 의도는, MAILTO 와 관련이 없는데 MAILTO 를 설정하니 동작을 한다고 하셔서.. 동작을 잘 한다는 기준이 다른 것 같아 남긴 겁니다.
MAILTO 를 설정하니 wall 이 어떻게 동작을 하던가요?
이 요점에 대해서만 답변을 드리자면, wall 도 마찬가지 이지만 MAILTO 와는 상관 없이 동작을 해야 합니다.
MAILTO를 crontab에 넣지 않아도 wall
MAILTO를 crontab에 넣지 않아도 wall 같은 경우 /usr/bin/wall test 이런 식으로 하니까 실행이 잘 되네요! 그렇지만 wall을 제외한 명령어는 절대 경로를 사용해도 사용이 안되네요.
crontab -e를 이용하여 crontab에 다음과 같이 저장을 해봤는데도 아무런 변화가 없네요.
그리고 제가 프로그래밍 공부를 시작한지 1달도 안돼서 기초적인 것도 몰라서 답답하실텐데 계속 답변해주셔서 감사합니다.
아 그러니까.. 이 cron job 을 어떤 기대를
아 ^^; 그러니까.. 이 cron job 을 어떤 기대를 하시고 설정을 하신 건가요?
이 cron job 의 실행은 당연히 아무일도 안 일어나겠죠. --;
아무도 보지 않는 곳에다 ls 의 결과를 출력할 뿐인데요.
제가 계속 어떤 기대를 하고 설정을 하느냐고 계속 물어보는 이유가 여기에 있는 것입니다.
위의 설정은 background shell 의 standard out 에 ls 결과를 출력하는데, 이걸 보실 수 있을리가 없죠. 그러니 당연히 실행이 안되었다고 생각할 테고요.
cron job 으로 설정을 했다면, 어떤 결과가 나오기를 기대하고 설정을 했나고 계속 묻는 이유가 여기에 있는 겁니다. 아무리 생각해도 cron job 의 테스트 방법이 잘못 된 것 같았거든요.
이렇게 해 놓으시고, 1분 후, /dev/shm/res.date 가 생성이 되는지 보세요.
그리고 파일이 생성되면
tail -f /dev/shm/res.date
명령을 실행해서 1분 마다 date 결과가 출력이 되는지 보세요.님의 설정 예는 MAILTO 가 문제가 아니라, 실행 결과를 님이 알 수 없도록 설정을 했기 때문에 동작을 안하는 것 처럼 보이는 것 뿐 입니다.
감사합니다! 작동이 안되는게 아니라 제가 볼 수 없는
감사합니다! 작동이 안되는게 아니라 제가 볼 수 없는 곳에 출력이 되고 있었을 뿐이군요 친절한 답변 감사합니다!
댓글 달기