作者 主題: crontab 問題  (閱讀 5214 次)

0 會員 與 1 訪客 正在閱讀本文。

ohmygod

  • 活潑的大學生
  • ***
  • 文章數: 210
    • 檢視個人資料
crontab 問題
« 於: 2004-08-29 22:13 »
# crontab -e
*/2 * * * * /bin/cp -a /var/spool/mail /root/test.`date +%Y-%m-%d`
我作測試時,這個排程都執行不出來,不曉得哪出錯?
# cat /var/log/cron
Aug 29 22:10:00 redhat CROND[1613]: (root) CMD (/bin/cp -a /var/spool/mail /root/test.`date +)
這個紀錄檔的訊息好像指令敘述有問題的樣子,可是我看不出哪有錯?

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17466
    • 檢視個人資料
    • http://www.study-area.org
crontab 問題
« 回覆 #1 於: 2004-08-29 22:16 »
打: mail

ohmygod

  • 活潑的大學生
  • ***
  • 文章數: 210
    • 檢視個人資料
crontab 問題
« 回覆 #2 於: 2004-08-29 22:54 »
#mail
No mail for root

我發覺問題是出在`date +%Y-%m-%d`這個地方,只要我不用日期就可以執行,
但 cp -a /var/spool/mail /root/test.`date +%Y-%m-%d` 在命令列上執行
都沒問題啊,為何用crontab 編輯就出問題?

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17466
    • 檢視個人資料
    • http://www.study-area.org
crontab 問題
« 回覆 #3 於: 2004-08-29 23:31 »
那你不跑 cp, 只跑 date(不帶參數) 如何?

tern

  • 懷疑的國中生
  • **
  • 文章數: 54
    • 檢視個人資料
    • http://dns.tern.idv.tw/tern/
另存 test.sh
« 回覆 #4 於: 2004-08-30 10:32 »
何不把這段,另外存成 test.sh

代碼: [選擇]
#!/bin/sh
cp -a /var/spool/mail /root/test.`date +%Y-%m-%d`


# crontab -e
*/2 * * * * root /root/test.sh
------
我走在這個電腦世界的大觀園中,我像一隻自由的鳥,學習如我在飛翔戲耍。
http://www.tern.idv.tw
-------

ohmygod

  • 活潑的大學生
  • ***
  • 文章數: 210
    • 檢視個人資料
crontab 問題
« 回覆 #5 於: 2004-08-30 11:38 »
寫成scripts 來替代一定 ok,但小弟想明白錯誤造成的原因為何?原本我這個測試
是在 fedora 上面做的,打 mail 無任何訊息,但換成 redhat9 上面跑還是一樣,不過
打mail 有訊息如下:
# mail
From root@localhost.localdomain  Mon Aug 30 11:27:01 2004
Date: Mon, 30 Aug 2004 11:27:01 +0800
From: root@localhost.localdomain (Cron Daemon)
To: root@localhost.localdomain
Subject: Cron <root@redhat> cp -a /var/spool/mail /root/test.`date +
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=root>

/bin/sh: -c: line 1: unexpected EOF while looking for matching ``'
/bin/sh: -c: line 2: syntax error: unexpected end of file

&

還請netman 大大指導一下.

Sandro Chen

  • 懷疑的國中生
  • **
  • 文章數: 62
    • 檢視個人資料
crontab 問題
« 回覆 #6 於: 2004-08-30 13:31 »
引述: "ohmygod"
寫成scripts 來替代一定 ok,但小弟想明白錯誤造成的原因為何?原本我這個測試
是在 fedora 上面做的,打 mail 無任何訊息,但換成 redhat9 上面跑還是一樣,不過
打mail 有訊息如下:
# mail
From root@localhost.localdomain  Mon Aug 30 11:27:01 2004
Date: Mon, 30 Aug 2004 11:27:01 +0800
From: root@localhost.localdomain (Cron Daemon)
To: root@localhost.localdomain
Subject: Cron <root@redhat> cp -a /var/spool/mail /root/test.`date +
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=root>

/bin/sh: -c: line 1: unexpected EOF while looking for matching ``'
/bin/sh: -c: line 2: syntax error: unexpected end of file

&

還請netman 大大指導一下.


滿有趣的問題, 我剛剛看了一下 , 以前也都沒有注意過這樣的設定...
大家參考一下嚕~~~
man 5 crontab
裡面有一段
The ''sixth''  field ( the rest of the line) specifies the
command to be run. The entire command portion of the
 line, up to a newline or % character, will be executed
by /bin/sh or by the shell specified in the SHELL variable
 of cronfile.
Percent-signs (%) in the command, unless
escaped with backslash (\), will be changed into newline character
,
and all date after the first % will be sent to the command as standard input.

根據上面的說法
1. mail 裡面的資訊就是正確的嚕~~~
2. 應該是把 % 改成 \% 就 ok 嚕 ~~~
hink Do, I Will
思考 行動, 我將能夠
Sandro Chen

yc123

  • 懷疑的國中生
  • **
  • 文章數: 84
    • 檢視個人資料
crontab 問題
« 回覆 #7 於: 2004-08-30 13:57 »
山不轉路轉,

#!/bin/sh
today=`date +%Y-%m-%d`
cp -a /var/spool/mail /root/test."$today"

在回文完後發現已有人回答了,
我只知道從加號以後指令就切斷了,應是%有問題,但不知如何處理.

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17466
    • 檢視個人資料
    • http://www.study-area.org
crontab 問題
« 回覆 #8 於: 2004-08-30 14:06 »
若能解決問題就好...
於我來看, 寫成 script 更有彈性.

ohmygod

  • 活潑的大學生
  • ***
  • 文章數: 210
    • 檢視個人資料
crontab 問題
« 回覆 #9 於: 2004-08-30 16:07 »
引述: "Sandro Chen"

1. mail 裡面的資訊就是正確的嚕~~~
2. 應該是把 % 改成 \% 就 ok 嚕 ~~~

哇賽,棒,我怎麼沒想到去看 crontab  的 man page,佩服佩服,終於解開我多日
的疑惑了,謝啦.