2012-01-31 54 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