wget不是通过cronjob执行的,而是直接在控制台中执行的

wget不是通过cronjob执行的,而是直接在控制台中执行的,cron,embedded-linux,openwrt,Cron,Embedded Linux,Openwrt,我有一个TP链接弓箭手C7与15.05混乱冷静在家里 我正在努力使这项工作发挥作用。看起来是这样的: ***/usr/bin/wget--spider\”https://subdomain.domain.net/update.php\“>/dev/null 2>&1 不幸的是,这没有得到执行。我还试着做了**wget-O-https://subdomain.domain.net/update.php相同的结果。 如果直接通过控制台输入,则两个版本都能正确执行 日志读取的最后一行 周二9月20日1

我有一个TP链接弓箭手C7与15.05混乱冷静在家里

我正在努力使这项工作发挥作用。看起来是这样的:

***/usr/bin/wget--spider\”https://subdomain.domain.net/update.php\“>/dev/null 2>&1

不幸的是,这没有得到执行。我还试着做了
**wget-O-https://subdomain.domain.net/update.php
相同的结果。 如果直接通过控制台输入,则两个版本都能正确执行

日志读取的最后一行

周二9月20日11:55:00 2016 cron.info crond[10317]:用户xxx pid 16697 cmd/usr/bin/wget--spider\”https://subdomain.domain.net/update.php\“>/dev/null 2>&1


看起来对吗?知道为什么不通过cronjob执行吗?

需要检查的主要事项:

  • 如果crond已启动并正在运行(顶部,ps-A)
  • 如果crond有足够的权限执行wget(ls-l/usr/bin)
  • 如果wget没有产生任何错误(不要将输出丢弃到/dev/null,将其存储在某个文件中,然后首先检查-如果文件已创建,如果未创建-请检查第1项和第2项,如果文件已创建并且有一些信息-可能会有所帮助)
  • 与项目1和2有关。检查运行crond的用户,并尝试使用此用户执行命令
  • 尝试不执行wget,而是执行一些将字符串写入某个文件的命令,并检查它是否有效

  • 您的cron作业确实运行,但wget遇到错误

    另外,要获取日志,i.s.o.重定向到/dev/null,您不能使用
    /out.txt
    ,因为cron将没有
    /
    的写入权限,
    /tmp/wget.txt
    也可以

    wget命令也是如此,输出存储在哪里?您应该使用
    -p
    选项

    其次,您需要处理数据是否已经在该目录中,这可能是为了使用
    -N
    ,只下载较新的文件并覆盖旧文件

    第三,当所有人都在工作时,使用
    -q
    选项使wget输出安静下来

    第四,您不能每分钟运行脚本
    ***
    ,因为上一次运行可能尚未完成,请参阅格式:

     # ┌───────────── min (0 - 59)
     # │ ┌────────────── hour (0 - 23)
     # │ │ ┌─────────────── day of month (1 - 31)
     # │ │ │ ┌──────────────── month (1 - 12)
     # │ │ │ │ ┌───────────────── day of week (0 - 6) (0 to 6 are Sunday to
     # │ │ │ │ │                  Saturday, or use names; 7 is also Sunday)
     # │ │ │ │ │
     # │ │ │ │ │
     # * * * * *  command to execute
    
    为了测试起见,让我们每晚午夜1点运行它

    备注:要真正做到这一点,您应该使用脚本文件执行wget命令,并将其放入其中,因为脚本文件可能会锁定,以防您想频繁执行此命令,请参阅以获取建议,因为这超出了本问题/答案的范围

    第5点:不需要用
    \“
    转义
    ,即使这样
    也不需要,所以请将其删除

    总之,首先创建一个可以存储数据的目录,例如
    /wget_data

    mkdir /wget_data
    chmod 777 /wget_data
    
    然后调整cron行,添加
    -p
    -N
    并调整执行格式:

    1 0 * * *  /usr/bin/wget -N -p /wget_data --spider https://subdomain.domain.net/update.php >/tmp/wget.txt 2>&1
    
    重新启动你的cron,不能提供建议,还不知道使用了什么

    另一个明智的做法是首先从命令行测试您的命令,方法是:

    /usr/bin/wget -N -p /wget_data --spider https://subdomain.domain.net/update.php >/tmp/wget.txt 2>&1
    

    然后
    cat/tmp/wget.txt
    查看命令是否有效,并
    ls/wget_data
    查看wget是否收集数据。

    1.是的,2.是的(crontab),3.将输出更改为/out.txt,但未创建文件,4.OpenWRT只有根用户,5.您有一个应该有效的示例吗?试试这个:
    echo“crontab working“>>/tmp/out.txt
    File/tmp/out.txt应该随着添加“crontab working”行而每分钟都在增长。删除引号前面的讨厌的反斜杠怎么样?或者也可以删除整个\?