無法讓 cronjob 執行安裝需要 root 的服務的腳本
我需要在 Ubuntu 18.04 上通過 cron 執行一個腳本,
myscript.sh
其中包含另一個腳本的安裝說明等,pluckeye-linux-0.99.40.installer
我遇到了一個乏味的錯誤:有問題的腳本是Pluckeye一種家長控制應用程序的安裝程序。這需要以 root 身份執行。裡面
myscript.sh
我放了cd "/path/to/pluckeye/" ./pluckeye-linux-0.99.40.installer
- 當我跑到
sudo crontab -e
那裡
* 20 * * * "/path/to/myscript.sh"
然後 Pluckeye 的安裝程序返回一個神秘的錯誤(我將 cron 執行的輸出重定向到一個文件,以便我可以看到出了什麼問題):
0b8e:24: ca151e1e WARNING 32512 0b8e:33: ca151e1e WARNING 0x30b8e019 0b8e:42: ca151e1e WARNING 0x30b8e019 0b8e:78: ca151e1e WARNING 0x30b8e019 0c2c:14: ca151e1e WARNING 0x30b8e019 0b4c:20: ca151e1e WARNING 0x30b8e019 0c70:48: ca151e1e WARNING 0x30b8e019 FAILED TO INSTALL: 6400
- 但是當我在我的shell中正常執行安裝程序時
sudo
(否則它會立即返回並出錯
I need to be invoked by root
FAILED TO INSTALL: 11520
) 它可以正常工作。
我認為這是因為 cron 使用自己的最小環境。我已經嘗試了我在網際網路上找到的各種東西,比如使用而不是上面的
* 20 * * * . $HOME/.profile; "/path/to/myscript.sh"
希望讓安裝程序現在可以工作,但這並沒有改變。我不想
sudo
放在腳本里面,意思是cd "/path/to/pluckeye/" sudo ./pluckeye-linux-0.99.40.installer
正如我所讀到的那樣,這會帶來安全風險。
我需要做什麼才能讓 Pluckeye 通過 cron 自行安裝?
也許你會這樣做:
- 使用 crontab -e
* 20 * * * sh /path/to/myscript.sh
- 使用 /etc/crontab
* 20 * * * root cd /path/to/pluckeye/ && sh ./pluckeye-linux-0.99.40.installer