在Debian Ubuntu上testingCrontab

我将在前言中说我对Debian Ubuntu的命令行编程非常新颖。

我一直在试图在Debian Ubuntu服务器上设置一个crontab列表,但一直没有能够得到它的工作。 这是一个示例:

MAILTO=myemail@gmail.com * * * * * wall test * * * * * /usr/bin/python2.6 /home/user/test.py > /home/user/clean_tmp_dir.log 

上面显示了当我键入“crontab -l”但没有结果输出出现在控制台。 “test.py”应该生成一个csv文件,但没有被创build。

我没有收到任何输出/错误的电子邮件。 我试图find一个日志,但“var / log / cron”不存在,也不是“etc / syslog.conf”…我试图编辑“etc / rsyslog.conf”,但得到“E212:Can' t打开文件写入“…我login,但是。 我需要某种特殊的pipe理权限吗? 我需要指定用户还是“根”?

有谁知道我在做什么错了,我如何创build/查看日志,或者我怎样才能执行任何其他简单的testing? 谢谢!

好的,让我们重新开始。

创建一个文件,说cron.txt ,具有以下内容(1行):

 * * * * * touch $HOME/CRON_IS_RUNNING 

(不要手动创建CRON_IS_RUNNING。)运行

 crontab cron.txt 

那么应该悄悄地产生没有产出

 crontab -l 

应该打印

 * * * * * touch $HOME/CRON_IS_RUNNING 

等一下,大概2分钟吧

 ls -l $HOME/CRON_IS_RUNNING 

应该打印类似的东西

 -rw-r--r-- 1 yourname yourgroup 0 2011-08-23 20:11 CRON_IS_RUNNING 

如果这一切正常,它将确认您可以运行cron作业。

如果这是成功的,这个问题可能与您的test.py命令。 从命令行运行时是否工作? 如果它是从命令行而不是从cron ,那么test.py可能对环境变量有一定的依赖性(cron作业的运行环境变量设置比交互命令通常要少)。

你的wall命令中的语法是错误的。 要输出直接消息,您需要使用以下语法: echo test | wall echo test | wallwall test将查找名为test的文件。

任何cron消息都将在/var/log/syslog

你的cronjob将位于/var/spool/cron/crontabs/username所拥有的

用户名:crontab中

我在我的系统“Debian Squeeze”上运行了一个测试,你的crontab作为root用户稍作修改。

我创建了一个文件test.py:

 #!/usr/bin/python print "hello" 

用以下方法创建了墙纸文件测试

 this is a test 

然后运行crontab -e并将其添加到我的crontab中:

 MAILTO=myemail@gmail.com * * * * * wall /usr/local/src/test * * * * * /usr/bin/python2.6 /usr/local/src/test.py > /usr/local/src/test.log 

当它跑了这个输出到屏幕上:

 Broadcast Message from root@X-Wing (somewhere) at 21:09 ... This is a test 

test.log的内容包含:

 hello 

这已添加到/ var / log / syslog:

 Aug 23 21:08:49 x-wing crontab[9850]: (root) REPLACE (root) Aug 23 21:08:49 x-wing crontab[9850]: (root) END EDIT (root) Aug 23 21:09:01 x-wing /usr/sbin/cron[1615]: (root) RELOAD (crontabs/root) Aug 23 21:09:02 x-wing /USR/SBIN/CRON[9860]: (root) CMD (/usr/bin/python2.6 /usr/local/src/test.py > /usr/local/src/test.log) Aug 23 21:09:02 x-wing /USR/SBIN/CRON[9862]: (root) CMD (wall /usr/local/src/test)