小编fre*_*ces的帖子

为什么 root cron 作业脚本需要“sudo”才能正常运行?

我正在我的 Raspberry Pi 上运行这个简单的脚本来自动更新,这样我就可以忘记它了。它还保留一个日志,说明更新是否成功。脚本是update.sh:

#!/bin/bash
echo "Update starts on: $(date)" >> /home/pi/update.log
 if apt-get update && apt-get upgrade -y; then
    echo "update successful $(date)"  >> /home/pi/update.log
 else
    echo "Couldn't update $(date)" >> /home/pi/update.log
 fi
Run Code Online (Sandbox Code Playgroud)

我通过使用将此脚本添加到根 crontabsudo crontab -e并将 cronjob 设置为每天早上 6 点运行

0 6 * * * /home/pi/update.sh
Run Code Online (Sandbox Code Playgroud)

我知道它在某种程度上有效,因为sudo ./update.sh在 shell 中运行手动运行命令并在日志中留下“成功”条目。另一方面,当从 crontab 运行时,我总是得到“无法更新”条目。万一重要,“update.sh”脚本是由“pi”用户创建的,我从未更改过权限,除了给它执行权限。

我读了另一个关于同一问题的问题,那个人通过sudo在命令前面放了一个来解决它。他承认这很奇怪,因为它已经被 root 执行了,但说它有效。我尝试添加sudo并验证它现在确实有效。

有谁知道为什么会这样?sudo如果它已经是root,为什么还需要它?

linux bash shell cron raspberry-pi

6
推荐指数
2
解决办法
2万
查看次数

标签 统计

bash ×1

cron ×1

linux ×1

raspberry-pi ×1

shell ×1