樹莓派程序開機啓動設置。python
關於開機啓動,我在網上找的一個教程,而後照着作了一次。bash
須要開機啓動的程序是本身寫的 個人是一個數據傳輸的程序,名字爲 trans.pyide
開機啓動腳本,保存在/etc/init.d目錄下面:測試
#!/bin/bashui
# /etc/init.d/transspa
### BEGIN INIT INFO.net
# Provides: xiaofeng命令行
# Required-Start: $remote_fs $syslogorm
# Required-Stop: $remote_fs $syslog教程
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: trans initscript
# Description: transform data
### END INIT INFO
case "$1" in
start)
echo "Starting trans"
/scream/trans.py &
;;
stop)
echo "Stopping trans"
#kill all trans.py
kill $(ps aux | grep -m 1 'python /scream/trans.py' | awk '{ print $2 }')
;;
*)
echo "Usage: service ledblink start|stop"
exit 1
;;
esac
exit 0
這個是原來的腳本。我把紅色標記的地方換成了個人程序的信息,而後就OK了。我腳本 的保存的名字是trans
修改權限:sudo chmod +x /etc/init.d/trans
能夠經過service命令測試一下
sudo service trans start#啓動
sudo service trans stop#中止
我開始時測試service命令出錯,說找不到文件,應該是權限的問題,後來我又從新作了一邊,莫名其妙得好了。
最後設置開機啓動:sudo update-rc.d trans defaults
刪除開機啓動:update-rc.d -f trans remove
參照文章的出處:
https://www.embbnux.com/2015/04/12/raspberry_pi_setting_python_script_start_on_boot/
Update-rc.d 命令的用法 http://www.52pi.net/?p=255
關於腳本語言的case的用法:
case 字符串 in
模式1) command;;
模式2) command;;
......
Esac
Case語句是多分支語句,它按照「)」左邊的模式對字符串值的匹配來執行相應的命令,匹配是由上而下地進行,老是執行首先匹配到的模式對應的命令表。若是,模式中的每個都匹配不到,則什麼也不執行,一邊後再後面放一個*),表示以上都不匹配的任意字符串。「;;」表示該模式對應的命令部分的程序。
$#:表示保存程序命令行參數的數目。
$?:表示保存前一個命令的返回值。
$0:表示列出當前的程序名
$*:表示以「$1 $2...」的形式保存全部輸入的命令行參數
$@:表示以「$1」「$2」...的形式保存全部輸入的命令行參數。
$n:$1爲命令行的第一個參數,$2爲命令行的第二個攢書,一次類推。
權限設置:
chmod u+x name 表示只有本身能夠執行
chmod ug+x name 表示本身以及同一羣能夠執行。
chmod +x 表示全部人均可以執行