[英]how to run a shell script on startup raspberry pi?
您好,我需要幫助來弄清楚如何在啟動時運行 shell 腳本。 我知道 magicmirror.sh 腳本有效,而且我知道它走在正確的道路上。 當我重新啟動我的樹莓派時,它不會運行腳本。 我已使用sudo crontab -e
將代碼行添加到 crontab 的末尾。 代碼如下。
@reboot sleep 60 && /home/pi/magicmirror.sh
我認為這是權限的問題。 嘗試使用不帶 sudo 的 crontab -e。
問題可能是您在腳本中調用命令的方式。 由於 crontab 從非常小的 shell 運行,因此並非所有環境變量都被加載。 因此,可能$PATH
變量丟失/未完全加載,因此找不到您從腳本內部調用的某些二進制文件。
我猜你的腳本以#!/bin/bash
開頭。 如果我的猜測是正確的,請嘗試使用#!/bin/env /bin/bash
啟動腳本(這意味着“使用完整環境啟動 bash”)或將腳本中的所有調用/命令替換為完整路徑。 例如/usr/local/bin/myprog dosomething
而不是myprog dosomething
。
編輯:正如@shv 提到的,這也可能是權限問題。 但也許以不同的方式。 如果您運行sudo crontab -e
您正在編輯root
的 crontab,而不是您的pi
用戶。 這有兩個效果:
root
必須以不同於 pi 用戶的方式與 GPIO 交互。 (胡亂猜測)magicmirror.sh
並在其中寫入任何內容。 因此,例如,有權訪問該 pi 用戶的人(因為他“入侵”了系統,或者只是您授予訪問權限的人)可以編寫例如rm -rf --no-preserve-root /
並重新啟動設備, 清理文件系統。 你不想那樣做,是嗎? 要解決此問題,您可以使用crontab -e
(不帶 sudo)編輯您自己的 crontab,或者將該腳本放在只有 root 可以訪問的地方(如果您需要 root 權限),例如/root/magicmirror.sh
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.