【问题标题】:Crontab not working but its working as scriptCrontab 不工作,但它作为脚本工作
【发布时间】:2025-12-10 14:50:01
【问题描述】:

下面是我的 Crontab:

*/5 * * * * /usr/bin/wget "http://localhost:8080/sample/index.jsp" --post-data "data=$(nohup sqoop import --connect 'jdbc:sqlserver://localhost;username=username;password=password;database=database' --table table1 --target-dir /user/data/ -m 1)&dt=$(date)&user=$USER"

我正在安排,但它没有运行

【问题讨论】:

  • 如果您手动运行该命令是否有效?仔细检查以确保失败的是 cron 作业,而不是您的命令。你怎么知道它没有运行?通常日志会告诉你 cron 是否运行,常用的 cron 日志位置是 /var/log/cron/var/log/messages/var/log/syslog

标签: unix crontab wget sqoop schedule


【解决方案1】:

您必须在 crontab 中使用完整路径,因为它的 $PATH 值与您的 shell 不同(即使用 nohup、sqoop 的完整路径)

【讨论】:

    【解决方案2】:

    这可能是因为您不在同一个执行上下文中。根据您运行的 shell(适应我的老派 .kshrc),您可能需要在命令前加上 source /home/myuser/.kshrc,如下所示:

    */5 * * * * source /home/myuser/.kshrc ; /usr/bin/wget "http://localhost:8080/sample/index.jsp" --post-data "data=$(nohup sqoop import --connect 'jdbc:sqlserver://localhost;username=username;password=password;database=database' --table table1 --target-dir /user/data/ -m 1)&dt=$(date)&user=$USER"
    

    如果可以的话,如果您的命令可以嵌入到一个小脚本中,这对每个人来说也可能看起来更简单。这可以避免这种可能具有误导性的nohup 你有......那么如果脚本是mycommand.sh

    */5 * * * * source /home/myuser/.kshrc ; /home/myuser/mycommand.sh
    

    (因为你做了一个chmod u+x /home/myuser/mycommand.sh 来授予执行权)。

    【讨论】: