Bash
cronjob 中的 bash 腳本無法執行 /sbin/fake-hwclock
我已經編輯了我的根
crontab
以定期執行腳本:sudo crontab -e
它應該以root身份執行以下腳本,該腳本位於已安裝的 USB 上:
* * * * * /mnt/usb0/fake-hwclock-cron.sh
腳本 (1)
fake-hwclock-cron.sh
然後執行腳本 (2)fake-hwclock
以保存目前時間:#!/bin/sh echo "$(fake-hwclock save)"
腳本 (2)
fake-hwclock
(位於*"/sbin/fake-hwclock"*)然後將時間保存到fake-hwclock.data
已安裝 USB 上的文件 (3) 中。使用以下選項自動安裝 USB:
PARTUUID=1c921a37-01 /mnt/usb0 ext4 defaults,auto,users,rw,nofail 0 0
文件權限:
(1) -rwxrwxrwx 1 pi pi /mnt/usb0/fake-hwclock-cron.sh (2) -rwxr-xr-x 1 root root /sbin/fake-hwclock (3) -rwxrwxrwx 1 pi pi /mnt/usb0/fake-hwclock.data
如果我理解正確,對於文件 (1)
fake-hwclock-cron.sh
和 (3)fake-hwclock.data
,每個使用者都可以讀/寫/執行。對於文件 (2)fake-hwclock
,每個使用者都可以讀取/執行。.. 但是暫時忽略這些權限,作為 sudo 執行的cron 作業
fake-hwclock-cron.sh
不是也以su權限執行腳本 (1) 嗎?更令人困惑的是:我可以在 shell 中沒有su權限的情況下執行兩個腳本 (1) / (2),但我不能使用su權限作為 cron 作業執行它們。
那麼,誰能向我解釋為什麼我收到*“權限被拒絕”*錯誤?
/bin/sh: 1: /mnt/usb0/fake-hwclock-cron.sh: Permission denied
PS我希望我已經設法解釋得足夠好;否則請告訴我
根據它的輸出,
mount |grep usb0
它顯示掛載點是由noexec
選項掛載的,它會阻止你只執行腳本,但你可以直接使用 shell 解釋器執行它,例如:* * * * * sh /path/to/script.sh
對於後面的錯誤*
fake-hwclock: not found
*,您需要提供完整的fake-hwclock
命令。查看更多關於noexec的資訊。