【问题标题】:Cronjob returns an error when runningcronjob 运行时返回错误
【发布时间】:2012-05-25 17:38:30
【问题描述】:

我的任务是从 cron 运行脚本,所以我为脚本编写了以下 cronjob,它输出了以下提到的错误消息。

定时任务

#BE housekeeper.sh
* * * * * /product/tools/housekeeper.sh -t BE > /tmp/fileset.out 2>&1

fileset.out 包含错误消息。这是错误信息。

/bin/sh: /product/tools/housekeeper.sh: Permission denied

为什么它说权限被拒绝。 user1可以执行管家脚本如下

$sh housekeeper.sh -t BE

然后我检查了是否允许 user1 运行 cronjob。这个检查也通过了。允许 user1 运行 crontab。那么在这种情况下可能出现的错误是什么。

root      4181     1  0  2011 ?        00:00:00 crond
user1    7648  7564  0 06:18 pts/0    00:00:00 grep cron

我检查了应用程序的执行权限

$ls -ltr

-rw-r----- 1 user1 aapp 11732 May 17 08:55 housekeeper.sh

它是否说这个应用程序是可执行的

提前感谢您的帮助

【问题讨论】:

    标签: linux shell unix cron crontab


    【解决方案1】:

    您需要更改housekeeper.sh 以拥有755 权限(可执行)

    chmod 755 housekeeper.sh
    

    运行sh housekeeper.sh/product/tools/housekeeper.sh 的方式略有不同,执行sh 调用在$PATH 中找到的名为sh 的可执行文件并将housekeeper.sh 输入其中,因此您只需要读取权限在housekeeper.sh 上,但通过/product/tools/housekeeper.sh 直接运行它需要您具有执行权限(因此755

    编辑

    我看到你有-rw-r-----权限,很简单610,让我解释一下

    一个文件有 3 组权限,以 3 组 3 位表示。第一位表示读取权限,如在您的输出中,您看到r,第二位是写入权限w,第三位(未设置,是x,可执行位)。你有 3 组,第一组是所有者,组,然后是其他,因此你有 9 位

     111 111 111
     VVV VVV VVV
      |   |   |
    Owner |   |
        Group |
            Other
    

    所以rw-r-----表示所有者有读写位,组有读位,其他人无权对该文件做任何事情。

    设置 755 将产生 rwxr-xr-x,我会让你思考为什么:D

    【讨论】:

    • 在为 housekeeper.sh 输入 ls -ltr 后,我取消了问题的日期。我无法翻译输出以检查它是否具有可执行权限。你能帮我吗
    • 顺便说一句:恕我直言 0700(甚至 0100( ...) 可能就足够了。Cron 在实际尝试执行文件之前更改用户。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-04
    • 1970-01-01
    • 2015-03-08
    • 1970-01-01
    • 1970-01-01
    • 2020-05-26
    相关资源
    最近更新 更多