在ubuntu中保存cron作业

在ubuntu中保存cron作业,cron,vi,Cron,Vi,我是ubuntu和cron的新手。我已在命令行中输入以下内容: crontab -e 我得到以下输出:“没有用于teddy的crontab-使用一个空的888” 然后,当我希望它执行时输入(我相信这是正确的?…我希望它每天运行一次,每天晚上8点): 这是我的问题,我不知道如何退出回到命令行。我键入的每一个字都会给我一个看起来很奇怪的字母,而回车(回车)什么也不做。我已经读到这将做的工作 ESC : w q 但这对我不起作用。我试着输入,我试着同

我是ubuntu和cron的新手。我已在命令行中输入以下内容:

       crontab -e
我得到以下输出:“没有用于teddy的crontab-使用一个空的888”

然后,当我希望它执行时输入(我相信这是正确的?…我希望它每天运行一次,每天晚上8点):

这是我的问题,我不知道如何退出回到命令行。我键入的每一个字都会给我一个看起来很奇怪的字母,而回车(回车)什么也不做。我已经读到这将做的工作

                 ESC : w q
但这对我不起作用。我试着输入,我试着同时按下它们,我试着一次按下一个。没什么,还是卡住了。当我按ESC键时,它显示为^[

这可能是一个非常简单的问题,我很抱歉,如果这是愚蠢的,但我已经被困了一段时间。任何帮助将不胜感激

多谢各位


另外,我在某个地方读到,如果这是您的第一个作业,您需要在cronjob的末尾做一个结束行…这是一个简单的回车键还是实际键入\n?

您需要按ZZ退出(大写“z”两次)。这是一篇关于设置cron选项卡的文章-

您可以尝试Ctrl+X。这将要求您在退出之前保存或不保存更改。这样,只需输入Shift+Y,您就可以离开了。尝试一下。

Teddy13,让我们在这里得到一些澄清

Ubuntu是您正在使用的Linux的发行版。您键入的任何命令都不是Ubuntu独有的

你在问两个不同的问题。一个是“如何编写crontab”。另一个是“如何使用vi,crontab命令的默认编辑器”

首先,
mancrontab
检查文件中条目的格式。请注意,cron运行的是可从shell执行的内容。如果“test.php”脚本的结构类似于shell脚本,则只能运行它,第一行包含“shell魔法”(即类似于
#!/usr/local/bin/php

第二,虽然vi是一个功能强大、深受读者喜爱的文本编辑器,但它不是最容易使用的。我完全支持你学习如何使用它的任何努力,但直到你感到满意为止,你可能会考虑切换到“PICO”或“EE”或“乔”。,这些都很容易学习,尽管它们可以做的更少。例如,您可以使用以下命令安装joe:
apt get install joe
run as root。然后要使用joe编辑您的crontab,请将
export VISUAL=/usr/bin/joe
添加到主目录中的
.bashrc
文件中

你可能想得到很多背景信息。读很多。这是值得的

更新(根据评论):

以下是编辑crontab所需的基本内容

  • crontab-e
    …您现在知道,这将使用$EDITOR或$VISUAL编辑crontab文件,默认为
    vi
    • 在vi中,您始终处于三种模式之一。移动模式允许您使用箭头或H、J、K和L在文件中移动。您可以删除带有“dd”的行或带有“x”的字符。编辑模式允许您添加或更改文本。在移动模式中,使用“i”或“a”或“o”以不同的方式进入编辑模式。阅读文档了解详细信息。第三,可以通过点击“:”进入命令模式。从这里,您可以发出各种命令来保存、搜索、批量编辑等
    • 在移动模式下,您可以保存文件并使用“ZZ”退出。在编辑模式下,您可以使用命令“wq”(因此在别处提到了“:wq”)
  • 或者,您可以通过将信息管道化到crontab命令中来设置新的crontab。请注意,这将删除您可能拥有的任何现有crontab。在shell中运行此命令,并根据需要更新脚本的URL:

    echo“0 20***wgethttp://example.com/path/to/file.php“| crontab-

  • crontab-l
    将显示当前crontab包含的内容

希望这有帮助

更新#2(根据以下评论):

$tmpfile=/tmp/foo$$
$crontab-l>$tmpfile

$echo"30 6***邮件-唤醒pager@example.net感谢您的快速回复…阅读文章,但似乎不起作用。如果我从mac上的终端访问我的ubuntu服务器,会有什么不同吗?我做了:00 18***************************/***************/test.phpZZ,没有luckno指定条目后,按“Esc”键,然后按ZZZjust:00 18***/******/*********/***************/test.php^[ZZ,然后按return,我会得到一个“?”。对我来说,当我按esc时,它仍然会给我:^[这个问题不属于主题。关于这个问题:你确定你正在使用Vi编辑文件吗?因为如果它是其他编辑器,你的Vi命令不会让你走远。加上8 pm=20而不是18(下午六时)。从您的shell提示符,echo$EDITOR;echo$VISUAL
的输出是什么?@vstm,OP使用的是Ubuntu,但这个问题对任何类型的Linux或Unix都是有效的。Vixie Cron和Vixie在任何地方都以同样的方式工作。什么是vi?我在macbook pro的终端上连接到我的Ubuntu服务器……我需要直接在Ubuntu se上吗服务器?是的,您的右侧20=晚上8点。@KeithThompson我在下一行得到一个空行,后面是我的命令提示符…对于这两个命令,当我按cntl+XT时,它会给我^X感谢您的澄清ghoti…看起来需要做很多工作,可能现在超出了我的范围。您知道有什么其他方法可以让守护进程运行一次php脚本吗每天都这么做并不困难吗?嗯,cron肯定是您希望用于此任务的守护进程。t您在此处的答案中得到的其他建议可能会为您提供有关如何执行此cron作业的提示。您可以使用“wget”命令“访问URL”,而不是使用shell魔术,从而执行PHP,就像它被web浏览器击中一样。
020***wgethttp://example.com/path/to/file.php
我将添加一点
                 ESC : w q
$ tmpfile=/tmp/foo.$$
$ crontab -l > $tmpfile
$ echo "30 6 * * * Mail -s wakeup pager@example.net <<< 'Time to wake up.'" >> $tmpfile
$ crontab - < $tmpfile && rm $tmpfile