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

익명 사용자의 이미지

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이 작동 될 수 있었던 건가요?
익명 사용자의 이미지

정확히 어떤 유닉스를 사용 중인가요? util-linux 패키지에 들어 있는 wall은 MAILTO 환경 변수를 참조하지 않는 것 같습니다.

https://github.com/karelzak/util-linux/tree/master/term-utils

익명 사용자의 이미지

MAILTO라는게 환경변수인 것은 알겠는데 이 환경 변수가 무엇이길래 crontab에 넣어주면 작동하는 것인가요?

김정균의 이미지

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로 기대한 동작이라기 보다 crontab을 공부하는 중인데 crontab -e로 무엇을 하든간에 실행이 안돼서 환경변수를 이것 저것 넣다가 MAILTO=root를 넣자 실행이 되어 다른 모든 명령어들도 MAILTO=root를 넣으면 되나 싶어서 질문하였습니다.

김정균의 이미지

제가 드린

사용하는 OS가 linux 라면, wall 로 기대한 동작은 무었입니까?

의 의도는, MAILTO 와 관련이 없는데 MAILTO 를 설정하니 동작을 한다고 하셔서.. 동작을 잘 한다는 기준이 다른 것 같아 남긴 겁니다.

MAILTO 를 설정하니 wall 이 어떻게 동작을 하던가요?

다른 모든 명령어들도 MAILTO=root를 넣으면 되나 싶어서 질문하였습니다.

이 요점에 대해서만 답변을 드리자면, wall 도 마찬가지 이지만 MAILTO 와는 상관 없이 동작을 해야 합니다.

익명 사용자의 이미지

MAILTO를 crontab에 넣지 않아도 wall 같은 경우 /usr/bin/wall test 이런 식으로 하니까 실행이 잘 되네요! 그렇지만 wall을 제외한 명령어는 절대 경로를 사용해도 사용이 안되네요.
crontab -e를 이용하여 crontab에 다음과 같이 저장을 해봤는데도 아무런 변화가 없네요.

SHELL=/bin/bash
PATH=/usr/local/bin/:/sbin:/bin:/usr/sbin:/usr/bin
* * * * * /bin/ls
* * * * * /bin/date

그리고 제가 프로그래밍 공부를 시작한지 1달도 안돼서 기초적인 것도 몰라서 답답하실텐데 계속 답변해주셔서 감사합니다.

김정균의 이미지

아 ^^; 그러니까.. 이 cron job 을 어떤 기대를 하시고 설정을 하신 건가요?

SHELL=/bin/bash
PATH=/usr/local/bin/:/sbin:/bin:/usr/sbin:/usr/bin
* * * * * /bin/ls
* * * * * /bin/date

이 cron job 의 실행은 당연히 아무일도 안 일어나겠죠. --;
아무도 보지 않는 곳에다 ls 의 결과를 출력할 뿐인데요.
제가 계속 어떤 기대를 하고 설정을 하느냐고 계속 물어보는 이유가 여기에 있는 것입니다.
위의 설정은 background shell 의 standard out 에 ls 결과를 출력하는데, 이걸 보실 수 있을리가 없죠. 그러니 당연히 실행이 안되었다고 생각할 테고요.

cron job 으로 설정을 했다면, 어떤 결과가 나오기를 기대하고 설정을 했나고 계속 묻는 이유가 여기에 있는 겁니다. 아무리 생각해도 cron job 의 테스트 방법이 잘못 된 것 같았거든요.

SHELL=/bin/bash
PATH=/usr/local/bin/:/sbin:/bin:/usr/sbin:/usr/bin
* * * * * /usr/bin/date >> /dev/shm/res.date

이렇게 해 놓으시고, 1분 후, /dev/shm/res.date 가 생성이 되는지 보세요.
그리고 파일이 생성되면 tail -f /dev/shm/res.date 명령을 실행해서 1분 마다 date 결과가 출력이 되는지 보세요.

님의 설정 예는 MAILTO 가 문제가 아니라, 실행 결과를 님이 알 수 없도록 설정을 했기 때문에 동작을 안하는 것 처럼 보이는 것 뿐 입니다.

익명 사용자의 이미지

감사합니다! 작동이 안되는게 아니라 제가 볼 수 없는 곳에 출력이 되고 있었을 뿐이군요 친절한 답변 감사합니다!

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.