raspberry pi (linux pi) 如何設定開機自動執行 sell script 呢?
要在 /etc/init.d資料下撰寫一個shell script檔,去執行你要執行的指令
我用shell script去啟動另一個shell script,並且執行java程式,以達到開機時,啟動程式。
假設我在/etc/init.d下,擺放run_start.sh
run_start.sh 的檔案內容如下
===============================
#! /bin/sh
sh /var/java/checker.sh
===============================
而檔案擺好之後,
要去下指令,才能夠奏效。
則需要下
update-rc.d run_start.sh defaults 99 1
而網路上文章,將defaults寫成為default,或忘記defaults 後面的 99 1
如果出錯了就會出現以下的文字內容
usage: update-rc.d [-n] [-f] <basename> remove
update-rc.d [-n] <basename> defaults [NN | SS KK]
update-rc.d [-n] <basename> start|stop NN runlvl [runlvl] [...] .
update-rc.d [-n] <basename> disable|enable [S|2|3|4|5]
-n: not really
-f: force
可見,他已經教你如何去下指令了。
而因為之前可能下錯,而導致不能再下指令的可能性。
所以先移除原本的,再重新下指令
執行
update-rc.d -f run_start.sh remove
而重開機測試,結果還是沒執行,為什麼
網路文章又教錯你的另一件事,就是剛剛那個run_start.sh,必須設為執行檔,才有效果。
若為執行檔,他的檔案會顯示為綠色,若為捷徑,則為藍色。
因此,將run_start.sh ,設為可執行檔
則下以下指令
sudo chmod +x /etc/init.d/run_start.sh*
接著重開機做測試
使用
sudo reboot
開機後,登入,檢查程式是否有執行到。
則下
ps -ef
來檢查程式是否執行
以上在 raspberry pi 的作法有些不太一樣,raspberry pi 系統採用 debian 架構會出現錯誤訊息修改命令如下
insserv: warning: script 'K02startserver' missing LSB tags and overrides
#!/bin/bash
### BEGIN INIT INFO
# Provides: startserver.sh
# Required-Start: $local_fs $remote_fs $network $syslog
# Required-Stop: $local_fs $remote_fs $network $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: starts the startserver daemon
# Description: starts startserver using start-stop-daemon
### END INIT INFO
python /home/pi/server.py
整理於網路上相關資訊
2016.06.19 執行 shell scripts
1.開啟autostart設定檔,位於pi使用者下的 ~/.config/lxsession/LXDE-pi/autostart。視你目前操作情況,選用適當的編輯器開啟即可(例vi, nano, lefapad)。
2.在設定檔最下方填入以下指令。請將demo.py替換為你的python程式所在路徑。
@/usr/bin/python demo.py
3.若設定無誤,重新啟動後應會看到 demo.py 已被執行。
4.若不想重啟,可直接下 startx 指令。
留言
張貼留言