.sh 在终端上运行但不在 cronjob 上运行

.sh 在终端上运行但不在 cronjob 上运行

我创建了一个 shell 文件来从 .7z 中提取档案。该 shell 在终端中运行良好,但在 cronjob 中却出现错误。

命令是:

7z x /path/to/file.7z -aoa

我收到的错误是:

/path/to/script.sh: line 2: 7z: command not found

我正在使用 .7z 文件的完整路径,并且检查了我的权限,因此我绞尽脑汁想找出我做错了什么。

我把脚本改成

#!/bin/bash
/usr/local/bin/7z x /path/to/file.7z -aoa

我现在明白了

/bin/sh: /path/to/script.sh: Permission denied

我已检查脚本、文件和 7z 文件,所有权限均设置为读/写

好的..所以我通过在脚本上使用 chmod +x 修复了权限问题。

答案1

问题不在于.7z文件的路径,而在于可执行文件的路径7z

我猜它7z来自 HomeBrew 之类的东西,因此不在默认路径上,并且您的用户有一个.profile或类似的条目,可将目录添加到 PATH 环境变量。

使用which 7z命令找到完整路径7z并编辑脚本以使用该路径。

答案2

在命令上输入完整路径7z。您遇到的问题是 cronjob 没有与您的 shell 相同的 PATH。您可以找到7zwithcommand -v 7z命令的完整路径。

相关内容