练习19:写一个脚本:可以接受一个参数,其使用形式如下:
script.sh {start|stop|restart|status}
如果参数为start,创建空文件/var/lock/subsys/script,并显示“Starting script successfully.”;
如果参数为stop,则删除文件/var/lock/subsys/script,并显示“Stop script finished.”;
如果参数为restart,则删除文件/var/lock/subsys/script后重新创建,并显示“Restarting script successfully.”;
如果参数为status,那么:
如果/var/lock/subsys/script文件存在,则显示为“script is running.”
否则,则显示为“script is stopped.”
其它任何参数:则显示“script.sh {start|stop|restart|status}”
#!/bin/bash
# Date: 2015-04-06
# Author: ArvinLau
# Description:
# Version: 1.0
FileName=`basename $0`
FilePath="/var/lock/subsys/$FileName" #变量替换,使用双引号
if [ $# -lt 1 ]; then
echo "Usage:$0 {start | restart | stop | status}"
exit 5
fi
if [ $1 == start ]; then
touch $FilePath
echo "Starting $FileName successfully."
elif [ $1 == stop ]; then
rm -f $FilePath
echo "Stop script finished."
elif [ $1 == restart ]; then
rm -f $FilePath
touch $FilePath
echo "Restarting script successfully."
elif [ $1 == status ]; then
if [ -e $FilePath ]; then
echo "Script is running."
elif [ ! -e $FilePath ]; then
echo "Script is stopped."
fi
else
echo "Usage:$0 {start | restart | stop | status}"
exit 7
fi
#虽然目前知识所写的脚本,功能简单,但可以尽可能的针对实际情况进行完善,下面这个脚本,就文件是否存在进行判断,补充脚本的不足。
#!/bin/bash
# Date: 2015-04-06
# Author: ArvinLau
# Description:
# Version: 1.0
FileName=`basename $0`
FilePath="/var/lock/subsys/$FileName" #变量替换,使用双引号
if [ $# -lt 1 ]; then
echo "Usage:$0 {start | restart | stop | status}"
exit 5
fi
if [ $1 == start ]; then
if [ -e $FilePath ]; then #判断文件是否存在
echo "$FilePath is running."
else
touch $FilePath
echo "Starting $FileName successfully."
fi
elif [ $1 == stop ]; then
if [ -e $FilePath ]; then #判断文件是否存在
rm -f $FilePath
echo "Stop script finished."
else
echo "$FilePath is stopped."
fi
elif [ $1 == restart ]; then
if [ ! -e $FilePath ]; then #如果文件不存在
echo "$FilePath is stopped."
else
rm -f $FilePath
touch $FilePath
echo "Restarting script successfully."
fi
elif [ $1 == status ]; then
if [ -e $FilePath ]; then
echo "Script is running."
elif [ ! -e $FilePath ]; then
echo "Script is stopped."
fi
else
echo "Usage:$0 {start | restart | stop | status}"
exit 7
fi
以上的脚本就是sysv风格的服务脚本
Redhat系列可以用以下方式执行这些服务脚本
# service network start
# /etc/rc.d/init.d/network start
# /etc/init.d/network start
转载于:https://blog.51cto.com/64314491/1629219