2012-01-31 72 views
4

我是ubuntu和cron作業的新手。我已經進入下面進入我的命令行:在ubuntu中保存cron作業

 crontab -e 

,我得到下面的輸出:「沒有的crontab的玩具 - 使用空單888」

然後我進入時,我想它來執行(我相信這是正確的...我希望它每天運行一次,每天晚上8點):

    00 18 * * * /*****/*****/****/test.php 

這裏是我的問題,我不知道如何退回到命令行。我輸入的所有內容都讓我看起來很奇怪,並且輸入(返回)並沒有做任何事情。我讀過,這將做這項工作

    ESC : w q 

但它不適合我。我嘗試輸入,我試着在同一時間按下,我一次嘗試按下一個。沒有什麼,仍然卡住。當我按下ESC時,它會顯示爲^ [。

這可能是非常簡單的問題,如果它很笨,但我一直在卡住,我很抱歉。任何幫助將不勝感激。

謝謝

P.S.我在某處讀到,如果這是你的第一份工作,你需要在cronjob的最後做一個結束行......這是一個簡單的輸入鍵按下或實際輸入\ n?

+0

這個問題是題外話,屬於http://askubuntu.com/。關於這個問題:你確定你使用Vi來編輯文件嗎?因爲如果它是其他編輯器,你的Vi命令不會讓你走得更遠。加上8點= 20點不是18點(即下午6點)。 – vstm 2012-01-31 06:28:40

+0

在shell提示符下,echo $ EDITOR的輸出是什麼; echo $ VISUAL'? – 2012-01-31 06:39:12

+1

@vstm,OP使用的是Ubuntu,但問題適用於任何Linux或Unix版本。 Vixie Cron和viworks在任何地方都是一樣的。 – ghoti 2012-01-31 06:39:37

回答

8

Teddy13,讓我們來澄清一下。

Ubuntu是您正在使用的Linux的發行版。您輸入的命令都不是Ubuntu專有的。

你在問兩個不同的問題。一個是「我如何編寫一個crontab」。另一個是「我如何使用vi,crontab命令的默認編輯器」。

首先,man crontab查看文件中條目的格式。請注意,cron運行可從shell執行的東西。如果它的結構像一個shell腳本,只能運行「test.php」腳本,並且第一行包含「shell magic」(即類似於#!/usr/local/bin/php)。其次,雖然vi是一個功能強大且深受喜愛的文本編輯器,但它並不是最容易使用的。我完全支持您爲了學習如何使用它而可能做出的任何努力,但在您對此感到滿意之前,您可能需要考慮切換到「pico」或「ee」或「joe」,這些都很容易學習,儘管他們可以做得少得多。例如,您可以使用以root身份運行的命令:apt-get install joe來安裝joe。然後,要使用joe編輯您的crontab,請將export VISUAL=/usr/bin/joe添加到主目錄中的.bashrc文件。

有很多你可能想要得到的背景信息。閱讀很多。這很值得。

UPDATE(根據註釋):

下面是你需要編輯你的crontab基本的東西。

  • crontab -e ......因爲你現在已經知道,這個編輯使用$ EDITOR或VISUAL $,默認爲vi crontab文件。
    • 在vi裏面,你總是處於三種模式之一。移動模式可讓您使用箭頭或H,J,K和L移動文件。您可以刪除帶有「dd」的行或帶有「x」的字符。編輯模式可讓您添加或更改文字。從運動模式中,使用「i」或「a」或「o」以不同的方式進入編輯模式。詳細信息請閱讀文檔。第三,可以通過從移動模式中按「:」來達到命令模式。從這裏,您可以發出各種命令來保存,搜索,批量編輯等。
    • 從移動模式中,您可以保存您的文件並使用「ZZ」退出。在編輯模式下,您可以使用命令「wq」(因此在其他地方提到的「:wq」)執行此操作。
  • 或者,您可以通過管道將信息crontab命令設置一個新的crontab。 請注意,這將清除您可能擁有的任何現有crontab。在你的shell中運行該更新腳本的URL的要求:

    echo "0 20 * * * wget http://example.com/path/to/file.php" | crontab -

  • crontab -l會告訴你什麼是你目前的crontab包含的內容。

希望這會有所幫助。

更新#2(每下面的註釋):

$ tmpfile=/tmp/foo.$$ 
$ crontab -l > $tmpfile 
$ echo "30 6 * * * Mail -s wakeup [email protected] <<< 'Time to wake up.'" >> $tmpfile 
$ crontab - < $tmpfile && rm $tmpfile 
+0

謝謝澄清ghoti ...看起來像很多工作,也許當前我的境界。你知道任何其他方式我可以有一個守護進程每天運行一個PHP腳本,每天一次,並不那麼困難嗎? – Teddy13 2012-01-31 06:55:22

+0

那麼,cron肯定是你想用於這個任務的守護進程。你在這裏得到的其他建議可能會給你提示如何獲得這個cron工作。您可以使用「wget」命令「訪問URL」,而不是使用shell魔法,從而執行PHP,就好像它被瀏覽器擊中一樣。 '0 20 * * * wget http:// example.com/path/to/file.php'我將再添加一些到我的答案... – ghoti 2012-01-31 07:00:50

+0

非常感謝這一點。我以前使用過「emacs」,因此我只是安裝了它,並試圖通過鍵入EDITOR = emacs && crontab -e將其加入到emacs中,但將我帶到同一編輯器中?或相同的地方 – Teddy13 2012-01-31 07:14:31

0

您需要按ZZ退出(大寫'z'兩次)。下面是設置的cron標籤的文章 - http://www.sophos.com/support/knowledgebase/article/12176.html

+0

感謝您的快速回復......閱讀文章,但似乎沒有工作。如果im從mac上的終端訪問我的ubuntu服務器,它有什麼區別嗎? – Teddy13 2012-01-31 06:20:23

+0

我做了:00 18 * * * /*****/*****/****/test.phpZZ沒有運氣 – Teddy13 2012-01-31 06:21:05

+0

沒有一旦你指定條目,請按'Esc'鍵,然後按ZZ – Rocky 2012-01-31 06:22:38

4

您可以嘗試按Ctrl +X。這將要求您退出前保存或未保存的更改。在這只是給轉變 + 所以你會離開那裏。嘗試一下。

+0

它給了我^ X當我按cntl + X – Teddy13 2012-01-31 06:39:10