【问题标题】:crontab - conditional task execution [duplicate]crontab - 有条件的任务执行
【发布时间】:2020-08-29 11:54:32
【问题描述】:

我正在尝试从 cron 运行以下命令:

[[ -d some_folder_path ]] && [[ $(date +%u) -lt 6 ]] && touch ~/testOK

不幸的是,它无法正常工作,尽管当我在 cron 外部运行它时,它可以正常工作。

请求帮助解决问题。

【问题讨论】:

  • 您是否尝试将其放入脚本中并在 cron 中运行该脚本?
  • 是的,我做到了 - 它有效,但我需要在 crontab 中完成
  • cron 默认为sh,因此如果系统中的sh 指向其他内容而不是bash,则将shell 设置为bash,或者不要使用[[ ]],也% 被 cron 解释,转义它。
  • shell 由 SHELL=/bin/bash 设置为 bash 我应该通过添加 \ 符号来转义 % 吗?
  • @Jetchisel,感谢通过 \ 转义 % 工作!

标签: linux bash cron


【解决方案1】:

首先你必须确保你的 SHELL 变量设置为 Bash。 crontab 对 % 有特殊含义,所以你必须使用 "\" 来转义它

所以我测试了你的 cronjob 它应该是这样的

* * * * * [[ -d /Users/mkhade/Downloads ]] && [[ $(date +\%u) -lt 6 ]] && touch ~/testOK

【讨论】:

    猜你喜欢
    • 2014-09-28
    • 2022-11-09
    • 2020-03-02
    • 1970-01-01
    • 2019-05-18
    • 1970-01-01
    • 1970-01-01
    • 2011-09-17
    • 2020-10-08
    相关资源
    最近更新 更多