![.sh 在终端上运行但不在 cronjob 上运行](https://linux22.com/image/757485/.sh%20%E5%9C%A8%E7%BB%88%E7%AB%AF%E4%B8%8A%E8%BF%90%E8%A1%8C%E4%BD%86%E4%B8%8D%E5%9C%A8%20cronjob%20%E4%B8%8A%E8%BF%90%E8%A1%8C.png)
我创建了一个 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。您可以找到7z
withcommand -v 7z
命令的完整路径。