shell只能用相对路径,绝对路径无法执行

若鱼1919 2016-08-18 05:26:19
写了一个重启tomcat的shell:
#!/bin/bash
basepath=$(cd `dirname $0`; pwd)
echo $basepath
parentPath=$(dirname $basepath)
echo $parentPath
tomcatName=$(basename $parentPath)
echo $tomcatName

pid=$(ps -ef | grep $tomcatName | grep -v grep | awk '{print $2 }')
echo "pid=>>$pid<<<"
echo "old pid $pid"
if [ -n "$pid" ];then
kill -9 $pid
fi
exec "$basepath"/startup.sh

如果使用相对路径:
cd /usr/local/tomcat7/bin
./restart.sh
这样是没有任何问题的。
如果使用:
/usr/local/tomcat7/bin/restart.sh就不行,输出:
/usr/local/tomcat7/bin
/usr/local/tomcat7
tomcat7
pid=>>1465
1483
1489<<<
old pid 1465
1483
1489
Killed

可以看到pid打印出了3行,第一行是tomcat的pid,另外两航不知道是啥玩意。

求助大神!
...全文
2339 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
若鱼1919 2016-08-19
  • 打赏
  • 举报
回复

#!/bin/bash
basepath=$(cd `dirname $0`; pwd)
echo $basepath
parentPath=$(dirname $basepath)
echo $parentPath
tomcatName=$(basename $parentPath)
echo $tomcatName
pid=$(ps -ef | grep $tomcatName | grep -v grep | grep -v "$0" |  awk '{print $2 }')
if [ -n "$pid" ];then
    kill -9 $pid
fi
exec "$basepath"/startup.sh
h2plus0 2016-08-19
  • 打赏
  • 举报
回复
的确比较奇怪, 有点像是bash的一个bug...
yong_f 2016-08-19
  • 打赏
  • 举报
回复
手动执行一下 ps -ef | grep tomcat7 | grep -v grep | awk '{print $2 }' 看看执行结果;
  • 打赏
  • 举报
回复
个人觉得这个重启的程序有点麻烦。 tomcat不是自身就又启动和关闭的脚本 重启可以借用这两个脚本,没必要这么写把0.0
若鱼1919 2016-08-19
  • 打赏
  • 举报
回复
引用 3 楼 yong_f 的回复:
这不是有三个tomcat7进程吗,用ps看一眼不就知道了吗
只有1个tomcat进程
yong_f 2016-08-19
  • 打赏
  • 举报
回复
这不是有三个tomcat7进程吗,用ps看一眼不就知道了吗
若鱼1919 2016-08-19
  • 打赏
  • 举报
回复
引用 1 楼 xuweiwei1860 的回复:
执行路径的问题吧
什么意思?
fly 100% 2016-08-19
  • 打赏
  • 举报
回复
执行路径的问题吧
h2plus0 2016-08-19
  • 打赏
  • 举报
回复
还以为是bash的bug... 原来是因为,如果用绝对路径执行时, 由于路径中存在tomcat, 所以也匹配, 但grep -v grep 并没有过滤... 如果把: pid=$(ps -ef | grep $tomcatName | grep -v grep | grep -v "$0" |  awk '{print $2 }') 改成: pid=$(ps -ef | grep "org.apache.catalina.startup.Bootstrap" | grep -v 'grep' | awk '{print $2}') 应该就可以了

19,612

社区成员

发帖
与我相关
我的任务
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
  • 系统维护与使用区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧