2016年1月14日 星期四

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 指令。

沒有留言:

張貼留言