網上有不少關於如何讓Linux自動運行自己編寫的腳本或者程序的方法,但是大多數都是把命令寫到/etc/rc.local裏,這樣雖然能夠實現隨機運行,但是並不夠靈活。不能像mysql,apache等服務一樣能夠使用service命令或者調用init.d下的腳本啓動、關閉或者重啓進程。例如,
service mysql restart service apache2 stop
或者
/etc/init.d/mysql restart /etc/init.d/apache2 stop
因爲不同的Linux發行版本,對後臺服務的處理方式不大一樣,如redhat使用chkconfig來管理開機程序。所以下面的方法以debian類系統爲例,如何寫一個簡單的開機啓動腳本。所以,此方法適用於raspbian pi的系統。
1 #!/bin/sh
2 ### BEGIN INIT INFO
3 # Provides: grabjpg
4 # Required-Start: $remote_fs
5 # Required-Stop: $remote_fs
6 # Default-Start: 2 3 4 5
7 # Default-Stop: 0 1 6
8 # Short-Description: Start or stop the /dev/video0
9 ### END INIT INFO
10 case $1 in
11 start)
12 echo "starting grabjpg...."
13 sudo /home/pi/bii/video/v4l2_jpg/grabjpg > /dev/null 2>&1 &
14 ;;
15 stop)
16 echo "stoping grabjpg...."
17 killall grabjpg
18 ;;
19 *)
20 echo "Usage: $0 (start|stop)"
21 ;;
22
23 esac
讓程 grabjpg開機啓動
sudo update-rc.d grabjpg defaults
讓grabjpg取消開機啓動
sudo update-rc.d grabjpg remove
注意:只有執行正 sudo update-rc.d grajpg defaults 才能用以service 命令啓停腳本(這個讓我試了好久)
啓動關閉grabjpg
sudo service grabjpg start
sudo service grabjpg stop
參考文獻:
[1] 開機自動執行腳本 與 update-rc.d
[2] Debian init 開機啓動管理
[3] 樹莓派開機啓動程序及啓動腳本的製作