Cron没有运行脚本

我找了几个可能导致我的问题没有运气的原因。 这个问题似乎非常特别:运行LTS 10.04的服务器无法正确运行与互联网使用相关的脚本。 我试图从我的服务器更新动态DNS,以便我的域将始终指向我的服务器。 我ssh到我的服务器进行更改,它一直在运行。

我把cron脚本放在两个地方:

1)使用crontab -e为当前用户添加crontab

2)在/etc/cron.d/下添加一个文件(两个不同的文件)

我确保它们归root所有,并为所有者提供访问位。

排除一些事情:

1)所有cron脚本在我的笔记本电脑上完美运行,也是10.04 LTS

2)从命令行运行时,两个脚本都运行得很好。

3)在服务器上,如果我每分钟使用cron对文件“hello”,它实际上是有效的

要运行的两个脚本中较简单的配置如下:

* * * * * root /usr/bin/wget "-q --read-timeout=0.0 --waitretry=5 --tries=10 --background http://freedns.afraid.org/dynamic/update.php?........... 

我隐藏更新密钥的地方,然后是一个新行。

我觉得这一定是cron特有的东西,我错过了。

我在/ var或/ var / log中也没有cron日志文件

如果有一些我忘记提及的信息,请告诉我。

  • 您是否知道cron的错误消息/ STDERR最终出现在系统邮件中? 如果您尚未进行设置,则可以快速签入/var/mail/your_username 。 它在Thunderbird中被称为Unix Movemail,但我相信同样的机制还有其他名称。
  • 使用的默认shell是sh不是bash
  • 您是否意识到cron作业的环境与交互式shell完全不同? 为了测试这个,我创建了一个cron作业:

* * * * * /tmp/testscript.sh

/tmp/testscript.sh的内容是:

 #!/bin/bash set 

我收到了一封包含以下内容的电子邮件(请注意PATH非常不同的东西,将其与命令行中的set进行比较:

 BASH=/bin/bash BASHOPTS=cmdhist:extquote:force_fignore:hostcomplete:interactive_comments:progcomp:promptvars:sourcepath BASH_ALIASES=() BASH_ARGC=() BASH_ARGV=() BASH_CMDS=() BASH_LINENO=([0]="0") BASH_SOURCE=([0]="/tmp/testscript.sh") BASH_VERSINFO=([0]="4" [1]="2" [2]="24" [3]="1" [4]="release" [5]="x86_64-pc-linux-gnu") BASH_VERSION='4.2.24(1)-release' DIRSTACK=() EUID=1000 GROUPS=() HOME=/home/my_username HOSTNAME=diablo HOSTTYPE=x86_64 IFS=$' \t\n' LANG=en_US.UTF-8 LANGUAGE=en_US:en LOGNAME=jhendrix MACHTYPE=x86_64-pc-linux-gnu OPTERR=1 OPTIND=1 OSTYPE=linux-gnu PATH=/usr/bin:/bin PPID=623 PS4='+ ' PWD=/home/my_username SHELL=/bin/sh SHELLOPTS=braceexpand:hashall:interactive-comments SHLVL=1 TERM=dumb UID=1000 _=/bin/bash