【问题标题】:script not running via crontab脚本未通过 crontab 运行
【发布时间】:2019-11-24 03:52:57
【问题描述】:

我创建了一个删除 var/cache 文件夹的子文件夹的 shell 脚本。请检查以下脚本。

#!/bin/sh
now=$(date +"%Y-%m-%d %T")
if rm -rf var/cache/* ; then
    echo "$now: Deleted"
else
  echo "$now: problem"
fi

当我通过命令 sh hello.sh 直接运行这个 shell 文件时,它工作正常。

但是当我使用 crontab 运行此文件时,它会在日志文件中创建一个条目,但不会删除 var/cache/.. 的子文件夹

请检查我的 crontab。

*/1 * * * * /bin/sh /www/html/wp/hello.sh >> /www/html/var/log/redis.flush.cron.log 2>&1

请建议我如何使用 crontab 运行该文件。

【问题讨论】:

  • @NullDev 不,我没有在 crontab 中添加任何用户,但如果我想从不同的用户(如 abc)运行它,那么它的语法是什么
  • @KaranAdhikari 如果你想为 root 设置一个可以访问所有文件夹的 cron 作业,那么你可以使用命令sudo crontab -e -u root
  • 我猜是因为权限问题,文件夹没有被删除,检查文件ls -la的权限
  • 直接运行时当前工作目录是什么,还有没有理由不把整个路径放在var/前面
  • 始终使用绝对路径

标签: linux bash shell cron


【解决方案1】:

尝试使用绝对路径而不是var/cache。当您通过 cron 运行它时,它将 a) 作为特定用户运行,b) 从该用户的主目录运行。其中一项或两项可能会给您带来问题。

而不是这个:

if rm -rf var/cache/* ; then

试试这样的:

if rm -rf /full/path/to/var/cache/* ; then

【讨论】:

    猜你喜欢
    • 2021-07-29
    • 2014-01-02
    • 1970-01-01
    • 2017-12-02
    • 1970-01-01
    • 2017-03-31
    • 2014-06-25
    • 2020-11-13
    相关资源
    最近更新 更多