Cron 不运行脚本

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 日志文件

如果我忘记提及某些信息,请告诉我。

答案1

  • 您是否知道 cron 的错误消息/STDERR 最终会进入系统邮件?如果您尚未设置,您可以快速检查/var/mail/your_username。它在 Thunderbird 中被称为 Unix Movemail,但我相信同一机制也有其他名称。
  • 使用的默认 shellsh不是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

相关内容