【问题标题】:crontab suggested error :/bin/sh .backup.sh no such file or directorycrontab提示错误:/bin/sh .backup.sh no such file or directory
【发布时间】:2017-04-12 06:08:00
【问题描述】:

我使用命令crontab -e定期执行一个shell脚本。

但它有问题。

shell脚本位于/opt/oneinstack/oneinstack,所以我的crontab是:

0 1 * * * cd /opt/oneinstack/oneinstack;./backup.sh >> /data/back.log 2>&1 &

backup.sh 文件的权限为 755。

使用crontab -e 命令的用户是root

/data/back.log 中的消息是/bin/sh no such file or directory .就像标题一样。

手动执行backup.sh没问题。

它有什么问题?我该如何解决?

希望有人帮助我。非常感谢!

【问题讨论】:

  • 为什么要更改目录 btw。您可以通过完整路径执行脚本/opt/oneinstack/oneinstack/backup.sh
  • @Ugur 我试过了,还是不行,backup.sh加载了一些外部配置文件
  • 还有一件事。尝试将 backup.sh 文件顶部的 #!/bin/sh 更改为 #!/bin/bash。当你正常运行时,/bin/sh 行实际上可以被忽略,脚本是用你的 SHELL 执行的。当然要确保 /bin/sh 和 /bin/bash 存在。
  • @biocyberman,谢谢!还有#comment73786598。我大意的原因

标签: linux shell crontab


【解决方案1】:

尝试在 crontab 列表之前设置以下内容。例如,如果这一行在顶部:

0 1 * * * cd /opt/oneinstack/oneinstack;./backup.sh >> /data/back.log 2>&1 &

然后它看起来像这样:

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
0 1 * * * cd /opt/oneinstack/oneinstack;./backup.sh >> /data/back.log 2>&1 &

此外: 就像@Ugur 提到的那样,如果您正确处理 backup.sh 中的路径,则无需 cd。例如:

ROOTPATH="/path/to/data"
TARTGETPATH="/path/to/target"
FileToBackup="${ROOTPATH}/myfile"

rsync $FileToBackup $TARGETPATH/ 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-06-21
    • 1970-01-01
    • 2023-04-03
    • 2016-11-01
    • 1970-01-01
    • 2020-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多