网上有不少关于如何让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] 树莓派开机启动程序及启动脚本的制作

Logo

更多推荐