1、编写服务脚本/root/bin/testsrv.sh,完成如下要求
(1) 脚本可接受参数:start, stop, restart, status
(2) 如果参数非此四者之一,提示使用格式后报错退出
(3) 如是start:则创建/var/lock/subsys/SCRIPTNAME, 并显示“启动成功” 考虑:如果事先已经启动过一次,该如何处理?
(4) 如是stop:则删除/var/lock/subsys/SCRIPTNAME, 并显示“停止完成” 考虑:如果事先已然停止过了,该如何处理?
(5) 如是restart,则先stop, 再start 考虑:如果本来没有start,如何处理?
(6) 如是status, 则如果/var/lock/subsys/SCRIPTNAME文件存在,则显示“SCRIPTNAMEis running…” 如果/var/lock/subsys/SCRIPTNAME文件不存在,则显示“SCRIPTNAME isstopped…”
其中:SCRIPT_NAME为当前脚本名
[root@localhost shel]# cat testsrv.sh
#!/bin/bash
#
#discription:server test script
cat << EOF
start)start succeed
stop)stop finished
restart)frist stop then start
status)running... or stopped...
==================================
EOF
read -p "input your chose: " n
prog=$(basename $0)
file=/var/lock/subsys/$prog
start(){
if [ -f $file ];then
echo "service is running."
else
touch $file
echo "start succeed."
fi
}
stop(){
if [ -f $file ];then
rm -f $file
echo "stop succeed."
else
echo "stop already."
fi
}
status(){
if [ -f $file ];then
echo "$file is running..."
else
echo "$file is stopping..."
fi
}
other(){
echo "select error."
exit
}
case $n in
start)
start;;
stop)
stop;;
restart)
stop
start;;
status)
status;;
*)
other;;
esac
2、编写脚本/root/bin/copycmd.sh
(1) 提示用户输入一个可执行命令名称;
(2) 获取此命令所依赖到的所有库文件列表
(3) 复制命令至某目标目录(例如/root/testdir)下的对应路径下; 如:/bin/bash ==> /root/testdir/bin/bash /usr/bin/passwd==> /root/testdir/usr/bin/passwd
(4) 复制此命令依赖到的所有库文件至目标目录下的对应路径下: 如:/lib64/ld-linux-x86-64.so.2 ==> /root/testdir/lib64/ld-linux-x86-64.so.2
(5)每次复制完成一个命令后,不要退出,而是提示用户键入新的要复制的命令,并重复完成上述功能;直到用户输入quit退出
[root@localhost shell]# cat copycmd.sh
#!/bin/bash
#
read -p "enter an execute command: " n
load=$(whereis -b $n | cut -d ' ' -f 2)
command(){
dir=$(dirname $load)
mkdir -p /root/testdir$dir
cp -r $load /root/testdir$dir
}
library(){
libload=$(ldd $load | cut -d '>' -f 2 | cut -d '(' -f 1)
dir1=$(dirname $libload)
dir2=$(echo $dir1 | cut -d ' ' -f 1)
mkdir -p /root/testdir$dir2
cp -r $libload /root/testdir$dir2
}
while true;do
command
library
read -p "enter an execute command: " n
if [ "$n" == "quit" ];then
echo "command finish."
exit
fi
done
原创文章,作者:pao,如若转载,请注明出处:http://www.178linux.com/38966

