【问题标题】:Cron wont create directoriesCron 不会创建目录
【发布时间】:2020-11-16 20:52:35
【问题描述】:

我有 crontab 条目,找不到问题,但它不起作用。

*/5 * * * * mkdir -m /home/ubuntu/aus/cron/$(date +\%Y\%m\%d)/$(date +\%R) && /usr/bin/python3 /home/ubuntu/aus/test.py >> /home/ubuntu/au/cron/$(date +\%Y\%m\%d)/$(date +\%R)/cron.log 2>&1

我正在尝试让 croncron 文件夹中创建目录并将 cron 日志文件放入其中。

【问题讨论】:

  • 使用mkdir -p 一次创建多个目录。
  • 那个 cron 条目变得非常复杂,我将它移动到一个脚本中,然后 cron 执行该脚本。
  • 是否有一个简单的脚本可以添加并运行?

标签: shell cron cron-task


【解决方案1】:

将此用作/home/ubuntu/aus/test.sh

#!/bin/bash

rootdir=/home/ubuntu/aus
crondir=$(date "+$rootdir/cron/%Y%m%d/%R")

mkdir -p "$crondir"
/usr/bin/python3 "$rootdir/test.py" >> "$crondir/cron.log" 2>&1

然后cron条目将是

*/5 * * * * /home/ubuntu/aus/test.sh

mkdir -p 的魔力在于 a) 它会在路径中创建每个缺失的目录,并且 b) 如果目录已经存在,它不会出错。

【讨论】:

  • 当我执行 bash test.sh 时,它可以工作..但是 cron 没有运行脚本..我需要执行 test.py 的更改权限吗 文件?
  • 你要么(1)给予test.sh执行权限,要么(2)在cron中使用bash /path/to/test/sh
【解决方案2】:

您的mkdir 语句中似乎有错误。 -m 参数用于设置您正在创建的目录的模式。您需要摆脱 -m 或为其提供有意义的参数(例如 mkdir -m 755 ...)。

【讨论】:

  • 我添加了 mkdir -m 755,不起作用。我使用了一个测试用例: */2 * * * * mkdir -m 755 /home/ubuntu/aus/test 正在工作,但实际的问题陈述不会
  • 您可能需要考虑添加“-p”开关,以防您尝试创建的目录的某些部分不存在。和/或查看您的 cron.log 日志文件...
  • 但是...如果我尝试在不存在 b、c、d 目录的情况下创建 /a/b/c/d,它将无法工作...
  • 不,mkdir 默认不会创建中间目录。这就是-p 开关的用途。您也可以将 mkdir 的输出重定向到现有位置并检查您遇到的任何错误。
  • 然后添加'-p'来创建中间目录——不仅仅是最后一个
猜你喜欢
  • 1970-01-01
  • 2020-10-09
  • 2014-02-10
  • 2015-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-08
  • 2014-11-19
相关资源
最近更新 更多