树莓派开机启动程序以及启动脚本制作

网上有不少关于如何让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的系统。

以svn为例:

1.制作开机启动脚本svn_serve

#!/bin/sh
### BEGIN INIT INFO
# Provides: svn_serve
# Required-Start: $remote_fs
# Required-Stop: $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start or stop the HTTP Proxy.
### END INIT INFO
case $1 in
 start)
 svnserve -d -r /home/pi/svn_repository
 ;;
 stop)
 killall svnserve
 ;;
*)
echo "Usage: $0 (start|stop)"
;;
esac

如果不加上面的注释,执行下面步骤3时,update-rc.d会报如下的警告信息

update-rc.d: warning: /etc/init.d/proxy missing LSB information
update-rc.d: see http://wiki.debian.org/LSBInitScripts
2.启动关闭服务

sudo service svn_serve start
sudo service svn_serve stop

3.让svn_serve开机启动

sudo update-rc.d svn_serve defaults

4.取消svn_serve的开机自动启动

sudo update-rc.d -f svn_serve remove

开机启动autossh脚本没写stop

#!/bin/sh

### BEGIN INIT INFO
# Provides: ngrok
# 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 ngrok web server
# Description: starts nginx using start-stop-daemon
### END INIT INFO

case $1 in
start)
autossh -M 5678 -fN -R 45.62.118.157:9999:localhost:22 -p 99999 ivo@45.62.118.157
;;
stop)
killall autossh
;;
*)
echo “Usage: $0 (start|stop)”
;;
esac
上一篇
下一篇