Cron Job 移动未运行的文件

Cron Job 移动未运行的文件

我在我的 crontab 中添加了此命令,但它不起作用。我在我的用户和根 crontab 中都保存了它,但都没有起作用。

* * * * * [ $(ls -al /media/cyper/evo_1tb | grep plot | wc -l) -gt 0 ] && [ $(ps aux | grep mv | grep -v grep | wc -l) -eq 0 ] && mv /media/cyper/evo_1tb/*.plot /media/cyper/Farm5

grep CRON /var/log/syslog

显示它正在执行,但没有文件被复制。

May 22 23:53:01 Plotter CRON[1010104]: (root) CMD ([ $(ls -al /media/cyper/evo_1tb | grep plot | wc -l) -gt 0 ] && [ $(ps aux | grep mv | grep -v grep | wc -l) -eq 0 ] && mv /media/cyper/evo_1tb/*.plot /media/cyper/Farm5)
May 22 23:53:01 Plotter CRON[1010105]: (cyper) CMD ([ $(ls -al /media/cyper/evo_1tb | grep plot | wc -l) -gt 0 ] && [ $(ps aux | grep mv | grep -v grep | wc -l) -eq 0 ] && mv /media/cyper/evo_1tb/*.plot /media/cyper/Farm5)

答案1

您的 crontab 中没有复制命令。您的意思是“移动”吗?不要让您的 crontab 命令行太复杂,创建一个执行脏活的脚本,然后让 cron 启动该脚本。

如果此命令也为其他用户运行,则该命令可能会检测到其中一个用户正在运行“mv”,并决定不自行运行。

答案2

既然你问“有什么想法”,我就给出一些:

  • 从命令行运行该命令。如果不起作用,调试一下。

    如果它从命令行工作,继续:

  • 跟随杰拉德的建议:将命令放入脚本,调试该脚本,然后从 cron 运行该脚本。

    如果这不可接受,或者您尝试过但没有效果,请继续:

  • */10 * * * *出于调试目的,请停止每分钟运行一次。每 10 分钟(使用)或每 15 分钟(使用)运行一次*/15 * * * *

  • 分解命令以查看失败的原因。例如,尝试
    ls -al /media/cyper/evo_1tb | grep plot | wc -l >> /home/cyper/cron.log

    如果结果没有给出正数,请进一步细分,看看哪里失败了,哪里成功了。如果上述方法成功(给出正数),请尝试
    [ $(ls -al /media/cyper/evo_1tb | grep plot | wc -l) -gt 0 ] && ps aux | grep mv | grep -v grep | wc -l >> /home/cyper/cron.log

    相同的过程。如果结果没有给你零分,请进一步细分,看看哪里失败了,哪里成功了。如果上述方法成功(给你零分),请继续尝试 。
    blah blah blah && blah blah blah && mv /media/cyper/evo_1tb/*.plot /media/cyper/Farm5 >> /home/cyper/cron.log 2>&1


好的,你说你得到了

crontab: installing new crontab
"/tmp/crontab.OddU6i/crontab":23: bad minute
errors in crontab file, can’t install.

嗯,这是来自 的错误消息crontab,而且是用英语写的。你读过吗?它说“糟糕的分钟”——这意味着分钟字段写得不正确。你说“这是完全相同的一行。”(我猜你指的是命令ls)。这与这一点无关。你有什么?????或者其他  什么  ?这就是你现在需要看的地方ls。  * * * * **/10 * * * **/15 * * * *

PS 你查看过你的邮件文件吗?很可能是/var/mail/cyper

相关内容