Cron 没有运行脚本

chr*_*eaf 1 cron automation dyndns

我已经寻找了几个可能导致我的问题没有运气的原因。这个问题似乎非常特别:我运行 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?...........
Run Code Online (Sandbox Code Playgroud)

我隐藏更新密钥的地方,后面跟着一个新行。

我觉得这一定是我错过的特定于 cron 的东西。

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

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

jip*_*pie 6

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

* * * * * /tmp/testscript.sh

内容/tmp/testscript.sh为:

#!/bin/bash
set
Run Code Online (Sandbox Code Playgroud)

我收到了一封包含以下内容的电子邮件(注意 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
Run Code Online (Sandbox Code Playgroud)