您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
bash脚本编程之十二(Linux系统裁减之二) 系统函数库-实现mini系统开关机时每项服务启动或关机状态
发布时间:2018-10-13 14:23:40编辑:雪饮阅读()
(1)建立functions脚本
[root@localhost ~]# vi /mount/sysroot/etc/rc.d/init.d/functions
[root@localhost ~]# cat /mount/sysroot/etc/rc.d/init.d/functions
#获取控制台大小并将命令执行的标准错误扔到空设备去,2>:标准错误重定向
SCREEN=`stty -F /dev/console size 2>/dev/null`
#以空格作为分隔符,截取其列数
COLUMNS=${SCREEN#* }
#若列数不存在,则按一个默认列数值进行计算,[ -z STRING ] “STRING” 的长度为零则为真。
[ -z $COLUMNS ] && COLUMNS=80
SPA_COL=$[$COLUMNS-14]
RED='\033[31m'
GREEN='\033[32m'
YELLOW='\033[33m'
BLUE='\033[34m'
NORMAL='\033[0m'
success() {
string=$1
#获取处左边字符串以外的长度
RT_SPA=$[$SPA_COL-${#string}]
#-n:不换行输出
echo -n "$string"
for I in `seq 1 $RT_SPA`;do
echo -n " "
done
echo -e "[ ${GREEN}OK${NORMAL} ]"
}
failure(){
string=$1
RT_SPA=$[$SPA_COL-${#string}]
echo -n "$string"
for I in `seq 1 $RT_SPA`;do
echo -n " "
done
echo -e "[ ${RED}FAILED${NORMAL} ]"
}
(2)修改tserver脚本
[root@localhost ~]# vi /mount/sysroot/etc/rc.d/init.d/tserver
[root@localhost ~]# cat /mount/sysroot/etc/rc.d/init.d/tserver
#!/bin/bash
#
# chkconfig: 35 66 33
# description: test service script
#载入我们上面的functions脚本
. /etc/rc.d/init.d/functions
#修改prog值为我们固定的tserver
prog=tserver
lockfile=/var/lock/subsys/$prog
start(){
touch $lockfile
#调用我们functions中的方法
[ $? -eq 0 ] && success "Starting $prog" || failure "Staring $prog"
}
stop(){
rm -rf $lockfile
[ $? -eq 0 ] && success "Stopping $prog" || failure "Stopping $prog"
}
status(){
if [ -f $lockfile ]; then
echo "Running ..."
else
echo "Stopped..."
fi
}
usage(){
echo "Usage:$prog {start|stop|status|restart}"
}
case $1 in
start)
start ;;
stop)
stop ;;
restart)
stop
start
;;
status)
status
;;
*)
usage
exit 1
;;
esac
(3)建立rc0级别K、S开头脚本
K:
[root@localhost rc0.d]# cd /mount/sysroot/etc/rc.d/rc0.d/
[root@localhost rc0.d]# ln -sv ../init.d/tserver K33tserver
create symbolic link `K33tserver' to `../init.d/tserver'
S:
S开头脚本必须要建立至少一个,否则在inti 0或halt时候不会完成关机,这里就拷贝原宿主系统中的了。
cd /mount/sysroot/etc/rc.d/rc0.d/
cp /etc/rc.d/rc0.d/* ./
[root@localhost rc0.d]# rm -rf ./K*
[root@localhost rc0.d]# ln -sv ../init.d/tserver K33tserver
create symbolic link `K33tserver' to `../init.d/tserver'
(3)移植相关命令
stty:
[root@localhost ~]# which stty
/bin/stty
[root@localhost ~]# ldd /bin/stty
linux-vdso.so.1 => (0x00007fff92dfd000)
libc.so.6 => /lib64/libc.so.6 (0x00000039f4e00000)
/lib64/ld-linux-x86-64.so.2 (0x00000039f4a00000)
[root@localhost ~]# cp /bin/stty /mount/sysroot/bin/
seq:
[root@localhost ~]# which seq
/usr/bin/seq
[root@localhost ~]# ldd /usr/bin/seq
linux-vdso.so.1 => (0x00007fff27ffd000)
libm.so.6 => /lib64/libm.so.6 (0x00000039f5200000)
libc.so.6 => /lib64/libc.so.6 (0x00000039f4e00000)
/lib64/ld-linux-x86-64.so.2 (0x00000039f4a00000)
[root@localhost ~]# cp /lib64/libm.so.6 /mount/sysroot/lib64/
[root@localhost ~]# cp /usr/bin/seq /mount/sysroot/usr/bin/
rm:
[root@localhost ~]# which rm
alias rm='rm -i'
/bin/rm
[root@localhost ~]# ldd /bin/rm
linux-vdso.so.1 => (0x00007fff75f4f000)
libc.so.6 => /lib64/libc.so.6 (0x00000039f4e00000)
/lib64/ld-linux-x86-64.so.2 (0x00000039f4a00000)
[root@localhost ~]# cp /bin/rm /mount/sysroot/bin
(4)开关机测试
开机
关机:
用init 0也可以
关键字词:linux,内核,编译
相关文章
- bash脚本编程之十二(Linux系统裁减之二) 系统函数库-
- bash脚本编程之十二(Linux系统裁减之二) 系统函数库-
- bash脚本编程之十二(Linux系统裁减之二) 系统函数库-
- bash脚本编程之十二(Linux系统裁减之二) 系统函数库-
- bash脚本编程之十二(Linux系统裁减之二) 系统函数库-
- bash脚本编程之十二(Linux系统裁减之二) 系统函数库-
- bash脚本编程之十二(Linux系统裁减之二) 系统函数库-
- 马哥linux运维学习笔记-Linux内核编译及系统裁减之一
- 马哥linux运维学习笔记-Linux系统启动流程之二 内核及
- 马哥linux运维学习笔记-Linux系统启动流程详解之一 运