我们在日常linux运维工作中,可能会遇到这样的情景,比如有些服务在启动过程中没有任何提示,我们在不查看其进程的情况下无法确认服务是否启动成功。如果要解决这个问题,就需要我们自己编写启动脚本。自己编写服务启动脚本好处有很多,比如可以提高效率、减少错误、易于维护、具有灵活性、自动化、调试和监控等。
1.启动脚本美化代码
- 这段代码是一个用于加载LSB(Linux Standard Base)初始化函数或标准init.d函数的bash shell脚本片段。这段代码可以被用于服务启动脚本的美化。
# [成功] [失败] 颜色函数
lsb_functions="/lib/lsb/init-functions"
if test -f $lsb_functions ; then
. $lsb_functions
else
init_functions="/etc/init.d/functions"
if test -f $init_functions; then
. $init_functions
log_success_msg()
{
echo " SUCCESS! $@"
}
log_failure_msg()
{
echo " ERROR! $@"
}
fi
fi
2.安装lsb
- 如果缺失/lib/lsb/init-functions,美化效果不会生效,需安装lsb,安装命令如下:
yum -y install lsb
3.rsync服务启动脚本案例
- 你可以参考我提供的案例来编写自己的服务启动脚本
#! /bin/bash
lsb_functions="/lib/lsb/init-functions"
if test -f $lsb_functions ; then
. $lsb_functions
else
init_functions="/etc/init.d/functions"
if test -f $init_functions; then
. $init_functions
log_success_msg()
{
echo " SUCCESS! $@"
}
log_failure_msg()
{
echo " ERROR! $@"
}
fi
fi
function usage(){
if [ "$#" -ne 1 ];then
echo "Usage: $0 {start|stop|restart}"
exit 1
fi
}
function start(){
/usr/bin/rsync --daemon
sleep 1
if [ `netstat -tunlp|grep rsync|wc -l` -ge 1 ];then
log_success_msg "Rsync 启动成功!"
else
log_failure_msg "Rsync 启动失败!"
fi
}
function stop(){
killall rsync &>/dev/null
sleep 1
if [ `netstat -tunlp|grep rsync|wc -l` -eq 0 ];then
log_success_msg "Rsync 关闭成功!"
else
log_failure_msg "Rsync 关闭失败!"
fi
}
function main(){
if [ "$#" -ne 1 ];then
usage
fi
if [ "$1" = "start" ];then
start
elif [ "$1" = "stop" ];then
stop
elif [ "$1" = "restart" ];then
stop
sleep 1
start
else
usage
fi
}
#$#表示输入参数,$*表示用户输入的多个参数作为一个整体传给main
main $*