禁止使用IPV6
sudo gedit /etc/gai.conf
取消注释
继续阅读“树莓派更新卡住 ipv6问题”xuenhua’s 站点
为了更好的理解启动脚本的设置,我们需要先了解下Debian系统中的运行级别。
查看当前系统的运行级别
runlevel |
/etc/rcN.d目录
通常系统启动后先执行/etc/rcS.d/目录下的脚本,然后根据运行级别,执行对应/etc/rcN.d/目录下的脚本(N为系统运行级别)。
下面是/etc/rc5.d目录下的内容
lrwxrwxrwx 1 root root 24 Dec 30 15:56 K02gmediarenderer -> ../init.d/gmediarenderer
lrwxrwxrwx 1 root root 16 Jan 24 23:52 K02mopidy -> ../init.d/mopidy
lrwxrwxrwx 1 root root 18 Jan 24 23:55 K02upmpdcli -> ../init.d/upmpdcli
-rw-r–r– 1 root root 677 Apr 7 2015 README
lrwxrwxrwx 1 root root 18 Sep 24 21:21 S01bootlogs -> ../init.d/bootlogs
lrwxrwxrwx 1 root root 16 Sep 24 22:33 S01dhcpcd -> ../init.d/dhcpcd
lrwxrwxrwx 1 root root 17 Oct 21 13:27 S01hd-idle -> ../init.d/hd-idle
lrwxrwxrwx 1 root root 17 Sep 24 21:33 S01ifplugd -> ../init.d/ifplugd
lrwxrwxrwx 1 root root 14 Jan 14 14:37 S02dbus -> ../init.d/dbus
lrwxrwxrwx 1 root root 21 Mar 3 16:04 S02ddns-dnspod -> ../init.d/ddns-dnspod
我们可以看到有K和S开头的文件,K代表关闭,S代表启动,后面紧跟的数字代表启动顺序,数字越大启动或关闭就越靠后。目录下的每一个文件都指向了/etc/init.d目录中的文件,开机启动脚本就是放在这个目录下的。
文件中代表启动顺序的数字是根据依赖关系自动设置的,在新版的update-rc.d命令中无法手动设置这个数字。查看是否可以手动设置参看man update-rc.d说明。
添加新的启动脚本
在/etc/init.d目录下新建一个文件,并添加执行权限sudo chmod a+x xxx_script。
#!/bin/sh
### BEGIN INIT INFO
# Provides: ddns-dnspod
# 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 ddns-dnspod service
# Description: starts the ddns-dnspod service
### END INIT INFO
case “$1” in
start)
echo “start ddns-dnspod”
sudo /home/pi/work/projects/dnspod_ddns/dnspod_ddns.py -d start
;;
stop)
sudo /home/pi/work/projects/dnspod_ddns/dnspod_ddns.py -d stop
;;
restart)
sudo /home/pi/work/projects/dnspod_ddns/dnspod_ddns.py -d restart
;;
*)
echo “Usage: $0 (start|stop)”
;;
esac
exit 0
上面是一个ddns的开机启动脚本。我们需要在启动脚本的注释中写明启动依赖和在那些运行级别启动。具体的依赖名写法可以参考这里。
当在/etc/init.d目录下添加新的启动脚本后,我们最好先进行下测试,执行下各种选项确保正常运行。
/etc/init.d/xxx_script start
/etc/init.d/xxx_script stop
以git用户运行,后台运行
su – git -c nohup -c /home/git/gitea-1.7-linux-arm-7 web &
update-rc.d命令
在/etc/init.d目录下添加启动脚本后,我们需要使用update-rc.d命令设置脚本开机启动。
update-rc.d xxx_script defaults
执行完上面命令后,查看/etc/rcN.d目录中是否有指向xxx_script文件的启动和关闭文件。另外还会向/run/systemd/generator.late/目录添加一个service,这样我们就可以使用sudo service xxx_script start|stop命令来控制脚本运行。
update-rc.d其他参数用法
# 移除开机启动连接(/etc/rcN.d 目录下的文件)
sudo update-rc.d xxx_script remove
# 启用或者禁用开机启动
sudo update-rc.d xxx_script enable|disable