模糊查询文件名
编写 shell 脚本,模糊查询指定文件夹内的 文件名,提取出来赋值到变量 file
file=$(find ./lib/${name}-*.jar | sed 's#.*/##')
echo file=$file
应用场景:
服务名带有版本号,但是不需要每个版本写一个新的启动脚本。
可以用文件名模糊查询得到完整文件名,然后进行脚本开发
应用实例:
获取进程 jar 的id, 判断是否已经启动
如果已经启动
提示判断提示输入 y/n
输入 y 执行重启(先kill掉再启动)
输入 n 或者直接回车则不作任何操作
如果没有启动
启动服务
#!/bin/sh
name="服务简单名称"
file=$(find ./lib/${name}-*.jar | sed 's#.*/##')
echo file=$file
pid=`ps -ef | grep ${file} | grep -v grep |awk '{print $2}'`
if [ $pid ]; then
echo ${name} is running pid = $pid
read -r -p "restart the server? [y/n] " input
case $input in
[yY][eE][sS]|[yY])
kill -9 $pid
echo restart ${name}......
sleep 3
# 启动服务
;;
[nN][oO]|[nN])
echo "No"
exit 1
;;
*)
echo "Invalid input..."
exit 1
;;
esac
else
echo start ${name}......
# 启动服务
fi