ubuntu启动脚本的一些笔记
2014-12-17 12:59
211 查看
了解ubuntu启动的过程,是为了解决一个小小问题。这篇文章只讲一下自己所总结的笔记。
首先我疑惑的是系统运行等级runlevel,ubuntu系统和以前搞用busybox做出来的系统有点不一样,没那么明显看到是什么等级,一开始修改脚本时没注意先确认这个问题,花了一点时间。要查看runlevel,要命令直接输入runlevel即可,比如:
# runlevel
N 2
查找到底在哪里设置了这个等级,用grep命令,如下:
# grep -iR runlevel /etc/
/etc/init/rc-sysinit.conf:# Default runlevel, this may be overriden on the kernel command-line
/etc/init/rc-sysinit.conf:env DEFAULT_RUNLEVEL=2
可以看到,在/etc/init/rc-sysinit.conf文件中设置的:
# Default runlevel, this may be overriden on the kernel command-line
env DEFAULT_RUNLEVEL=3
注释里说可以用启动参数去改,不过我觉得还是直接写一个默认值比如好。上面我改成了等级3。启动时,就会运行 /etc/rc3.d目录下的脚本。
下面是添加自定义的脚本。直接以已有的脚本为模板,改为自己想要执行的操作即可。比如,我添加一个xscript的脚本。内容如下:
cat /etc/init.d/xscript
#! /bin/sh
### BEGIN INIT INFO
# Provides: start or reboot,etc...
# Required-Start:
# Required-Stop:
# Default-Start: 2 3
# Default-Stop: 0 1 6
# Short-Description:
# Description:
### END INIT INFO
PATH=/sbin:/usr/sbin:/bin:/usr/bin
. /lib/lsb/init-functions
# other things to do before dying...
do_stop () {
echo "Stop in my script and clean net.rules...."
echo "" > /etc/udev/rules.d/70-persistent-net.rules
}
case "$1" in
start)
echo "Will START Running...."
cd /home/latelee
chmod +x my_run.sh
./my_run.sh
;;
restart|reload|force-reload)
echo "Error: argument '$1' not supported" >&2
exit 3
;;
stop)
do_stop
;;
*)
echo "Usage: $0 start|stop" >&2
exit 3
;;
esac
这个脚本定义了启动、重启时所执行的操作。
起初,我直接在我想要运行的runlevel目录做链接文件到xscript,后来发现不要这样做也可以。下面用update-rc.d命令添加到每个runlevel中,其中99是指定执行顺序,/etc/rcX.d目录脚本以S和K脚本开头,分别表示启动时执行和关机(重启)时执行。数字小的脚本先启动,由于这个脚本是用户级的,所以放到最后面。命令执行结果:
# update-rc.d xscript defaults 99
update-rc.d: warning: default start runlevel arguments (2 3 4 5) do not match xscript Default-Start values (2 3)
Adding system startup for /etc/init.d/xscript ...
/etc/rc0.d/K99xscript -> ../init.d/xscript
/etc/rc1.d/K99xscript -> ../init.d/xscript
/etc/rc6.d/K99xscript -> ../init.d/xscript
/etc/rc2.d/S99xscript -> ../init.d/xscript
/etc/rc3.d/S99xscript -> ../init.d/xscript
/etc/rc4.d/S99xscript -> ../init.d/xscript
/etc/rc5.d/S99xscript -> ../init.d/xscript
重启系统:
root@localhost:~# reboot
Broadcast message from root@localhost
(/dev/ttyS2) at 17:09 ...
The system is going down for reboot NOW!
root@localhost:~# wait-for-state stop/waiting
*
Stop in my script and clean net.rules....
* Asking all remaining processes to terminate... [ OK ]
* All processes ended within 1 seconds... [ OK ]
可以看到有Stop in my script and clean net.rules....打印,在reboot后,已经执行了我们自己写的命令了。
李迟,2014年12月17日,中午
首先我疑惑的是系统运行等级runlevel,ubuntu系统和以前搞用busybox做出来的系统有点不一样,没那么明显看到是什么等级,一开始修改脚本时没注意先确认这个问题,花了一点时间。要查看runlevel,要命令直接输入runlevel即可,比如:
# runlevel
N 2
查找到底在哪里设置了这个等级,用grep命令,如下:
# grep -iR runlevel /etc/
/etc/init/rc-sysinit.conf:# Default runlevel, this may be overriden on the kernel command-line
/etc/init/rc-sysinit.conf:env DEFAULT_RUNLEVEL=2
可以看到,在/etc/init/rc-sysinit.conf文件中设置的:
# Default runlevel, this may be overriden on the kernel command-line
env DEFAULT_RUNLEVEL=3
注释里说可以用启动参数去改,不过我觉得还是直接写一个默认值比如好。上面我改成了等级3。启动时,就会运行 /etc/rc3.d目录下的脚本。
下面是添加自定义的脚本。直接以已有的脚本为模板,改为自己想要执行的操作即可。比如,我添加一个xscript的脚本。内容如下:
cat /etc/init.d/xscript
#! /bin/sh
### BEGIN INIT INFO
# Provides: start or reboot,etc...
# Required-Start:
# Required-Stop:
# Default-Start: 2 3
# Default-Stop: 0 1 6
# Short-Description:
# Description:
### END INIT INFO
PATH=/sbin:/usr/sbin:/bin:/usr/bin
. /lib/lsb/init-functions
# other things to do before dying...
do_stop () {
echo "Stop in my script and clean net.rules...."
echo "" > /etc/udev/rules.d/70-persistent-net.rules
}
case "$1" in
start)
echo "Will START Running...."
cd /home/latelee
chmod +x my_run.sh
./my_run.sh
;;
restart|reload|force-reload)
echo "Error: argument '$1' not supported" >&2
exit 3
;;
stop)
do_stop
;;
*)
echo "Usage: $0 start|stop" >&2
exit 3
;;
esac
这个脚本定义了启动、重启时所执行的操作。
起初,我直接在我想要运行的runlevel目录做链接文件到xscript,后来发现不要这样做也可以。下面用update-rc.d命令添加到每个runlevel中,其中99是指定执行顺序,/etc/rcX.d目录脚本以S和K脚本开头,分别表示启动时执行和关机(重启)时执行。数字小的脚本先启动,由于这个脚本是用户级的,所以放到最后面。命令执行结果:
# update-rc.d xscript defaults 99
update-rc.d: warning: default start runlevel arguments (2 3 4 5) do not match xscript Default-Start values (2 3)
Adding system startup for /etc/init.d/xscript ...
/etc/rc0.d/K99xscript -> ../init.d/xscript
/etc/rc1.d/K99xscript -> ../init.d/xscript
/etc/rc6.d/K99xscript -> ../init.d/xscript
/etc/rc2.d/S99xscript -> ../init.d/xscript
/etc/rc3.d/S99xscript -> ../init.d/xscript
/etc/rc4.d/S99xscript -> ../init.d/xscript
/etc/rc5.d/S99xscript -> ../init.d/xscript
重启系统:
root@localhost:~# reboot
Broadcast message from root@localhost
(/dev/ttyS2) at 17:09 ...
The system is going down for reboot NOW!
root@localhost:~# wait-for-state stop/waiting
*
Stop in my script and clean net.rules....
* Asking all remaining processes to terminate... [ OK ]
* All processes ended within 1 seconds... [ OK ]
可以看到有Stop in my script and clean net.rules....打印,在reboot后,已经执行了我们自己写的命令了。
李迟,2014年12月17日,中午
相关文章推荐
- Ubuntu笔记--添加启动脚本
- 一些常用的MySQL命令脚本笔记
- Ubuntu启动流程学习笔记(Upstart事件机制)
- ubuntu脚本笔记
- ubuntu编写开机自启动shell脚本
- ubuntu一些笔记
- Beginning Ubuntu Linux From Novice To Professional一些翻译笔记
- Java7 一些新特性及脚本语言支持API--笔记
- ubuntu启动流程及开机执行shell脚本
- Ubuntu启动自动运行脚本的方法
- ubuntu增加启动运行脚本
- 在vb中调用执行VBScript, JScript, 或者其他一些合适的脚本语言,也许ruby之类的。仅仅作为下一步工作的笔记。
- 【转载】Ubuntu下添加开机启动脚本
- Ubuntu/Debian与REDHAT系统启动脚本之对照
- 为ubuntu创建开机启动脚本
- ubuntu系统启动脚本
- Ubuntu下添加开机启动脚本
- 关于Windows 7与Ubuntu启动的一些注记(win7屏蔽ubuntu的启动项)
- ubuntu 下 init.d 服务启动脚本编写
- shell脚本的一些用法笔记