【问题标题】:Simple--running shell script with a cronjob简单——使用 cronjob 运行 shell 脚本
【发布时间】:2018-06-20 23:39:55
【问题描述】:

简单的问题:

我希望 cron 作业每分钟运行一次脚本。此脚本 (script.sh) 生成目录中所有文件的 .zip 文件。 我已经在一个名为 script.sh 的文件中编写了脚本:

if [ -z "$(ls -A /var/www/html/convo_files)" ]; then
   exit
else
   zip -rj zipped.zip /var/www/html/convo_files/*
fi

Successfully creates .zip file when I run it with command ./script.sh

我的 crontab 脚本是:

*/1 * * * * /var/www/html/convo_files/script.sh
在邮件中提供消息(看起来正确):

updating: crap.txt (deflated 89%)
updating: script.sh (deflated 36%)

Cronjob 文件与 script.sh btw 在同一目录中,但没有使用 cronjob 创建 .zip 文件。真的不知道如何解决这个困境。

【问题讨论】:

  • "man crontab" 会给你答案。
  • 手册中具体有什么内容?

标签: linux shell linux-kernel cron


【解决方案1】:

您是否尝试过以下 cron 作业?

*/1 * * * * /path/to/your/script.sh

这应该每分钟执行一次你的脚本。

如果您在执行脚本时遇到问题,请确保您设置了“可执行标志” (chmod +x /path/to/your/script.sh)

如果您仍然有错误,您应该查看您的系统日志。在大多数 Linux 系统上,文件 /var/log/syslog 是正确的文件,但这可能因系统而异。

【讨论】:

  • 我将 script.sh 文件更改为 if [ -z "$(ls -A /var/www/html/convo_files)" ];然后退出 else zip -rj zipped.zip /var/www/html/convo_files/* fi 它给出了与我以 ./script.sh 运行时相同的消息(在 /var/spool/mail 目录中)。然而,仍然没有使用 cron 命令创建 zip 文件。
  • @user9965063 文件 zipped.zip 将在您的主目录中创建;我刚刚对其进行了测试,它按预期工作。
  • 我明白了!我希望 zip 文件位于同一目录 (/var/www/html/convo_files) 但是...
【解决方案2】:

需要更改 crontab 文件中的命令:

* * * * * cd /var/www/html/convo_files && /var/www/html/convo_files/script.sh

问题是工作目录设置不正确 (https://unix.stackexchange.com/questions/38951/what-is-the-working-directory-when-cron-executes-a-job)

对于像我这样的初学者,请务必查看您的邮件目录/日志文件以查看您的错误! 注意,进入你的邮件目录:

cd /var/spool/mail
tail root

感谢所有回答和帮助的人!

【讨论】:

    猜你喜欢
    • 2013-11-14
    • 1970-01-01
    • 1970-01-01
    • 2013-01-26
    • 1970-01-01
    • 2016-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多