gpt4 book ai didi

linux - cron 权限有什么问题?

转载 作者:太空宇宙 更新时间:2023-11-04 04:42:01 28 4
gpt4 key购买 nike

当我从命令行运行 BASH 脚本时,它会被执行。当我尝试将其作为 cron 任务运行时,它失败了。通过异常的方法,我发现了一个问题。它在于“which iptables”命令返回一个空字符串。我尝试在“/sbin”目录中查找的所有程序都会发生这种情况。示例:

# crontab -e
* * * * * /root/test.sh >> /root/test.log 2>&1

测试.sh

#!/bin/bash
IPT=$(which iptables);
echo ${IPT} >> /root/test.log

但是在test.log中写入了空字符串。在 Ubuntu 16.04 和 Debian 8 上测试。

最佳答案

与权限无关。

which$PATH 中查找命令。 cron 脚本的路径有限,不包括 iptables,因此找不到它。

 $ /usr/bin/which iptables
/sbin/iptables
$ PATH=/bin:/usr/bin /usr/bin/which iptables
$ echo $?
1

当你的路径有限时,它将返回一个空字符串(在我的另一台机器上,它报告(/usr/bin:/bin)中没有 iptables,所以 YMMV)并以非零代码退出。

如果你执行类似 echo $PATH >>/root/test.log 的操作,你会看到 cron 的路径只有 /usr/bin/bin

您必须设置 $PATH 以包含 iptables 位置,或者在调用 iptables 时使用完整路径

关于linux - cron 权限有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60205232/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com