【问题标题】:Running debian bash file as cron job将 debian bash 文件作为 cron 作业运行
【发布时间】:2012-10-17 07:25:05
【问题描述】:

我似乎无法将简单的 bash 文件作为每分钟运行一次的 cron 作业来运行。

#!/bin/bash 

NET_INTERFACE=eth0

CURRENT_IP=`/sbin/ifconfig $NET_INTERFACE | sed -n "/inet addr:.*255.255.25[0-5].[0-9]/{s/.*inet addr://; s/ .*//; p}"`

wget -q --delete-after "http://abc.co.uk/raspiUpdate.php?pi=1&ip=${CURRENT_IP}"

在我的 crontab 中:

 *     *     *     *     *        /home/user/Scripts/script.sh

我哪里错了?

谢谢

【问题讨论】:

  • 你怎么知道你错了? cron 作业失败时收到的电子邮件是什么意思?
  • 不确定,但您的sed 正则表达式需要注意。您应该使用\. 来匹配IP 地址中的文字点(句点),如255\.255\.25[0-5]\.
  • /bin/sh: 1: /home/user/Scipts/streamStatus.sh: not found 是我得到的错误
  • @user1778688 文件/home/user/Scipts/streamStatus.sh 是否存在于您的系统上,在那个位置,大小写?

标签: bash cron debian


【解决方案1】:

要解决这个 cron 问题,请考虑几个步骤:

  1. 仔细检查您放入 crontab 中的脚本文件名:

    $ ls -lah  /home/user/Scripts/script.sh
    $ cat /home/user/Scripts/script.sh
    
  2. 检查该脚本是否可由安装 crontab 的用户执行。即如果你使用 /etc/crontab,它应该可以由 root 执行,如果你使用了

    $ crontab -e
    

    它应该可以由您的用户 ID 执行。

    实际上运行该脚本应该已经给了你一个提示。

  3. 寻找 cron 提供的提示。根据您运行的发行版,cron 记录到的文件是不同的。对于 debian,它应该是 /var/log/syslog IIRC

如果您在任何地方都找不到错误消息,则很难判断出了什么问题。一般来说,如果我达到那个点,我会停下来睡觉或做其他事情。

[编辑] 当我返回时,我经常发现错误。 :)

ps:

  1. 我最近遇到了文件名中的点问题。一些 cron 实现会忽略 /etc/cron.* 中文件名中带有点的文件。此处记录:http://manpages.ubuntu.com/manpages/xenial/en/man8/cron.8.html 特定于 Debian。但我想我在 Fedora 上也遇到了这个问题。

【讨论】:

    猜你喜欢
    • 2011-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-04
    • 2014-11-11
    • 2021-06-18
    • 1970-01-01
    • 2012-06-19
    相关资源
    最近更新 更多