为啥shell脚本exit后,当前进程没有终止?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥shell脚本exit后,当前进程没有终止?相关的知识,希望对你有一定的参考价值。
在java代码里面调用shell脚本(shell脚本里面有exit语句),通过ps -f | grep 脚本.sh,来查询脚本进程,发现没有终止掉,这时什么原因?
按我的理解,shell脚本执行了exit语句后,其进程应该也会终止的
没有看到你的code,但你的理解没错的,shell 执行exit 会自己退出的。
不成功估计有两个原因:
java 调用shell是否直接跑到后台?有没有设置抓到shell返回值再继续跑?
shell 中exit command没有执行成功,这个细心要debug了。
exit命令
exit命令同于退出shell,并返回给定值。在shell脚本中可以终止当前脚本执行。执行exit可使shell以指定的状态值退出。若不设置状态值参数,则shell以预设值退出。状态值0代表执行成功,其他值代表执行失败。语法
exit(参数)
参数
返回值:指定shell返回值。
实例
退出当前shell:
[[email protected] ~]# exit
logout
在脚本中,进入脚本所在目录,否则退出:
cd $(dirname $0) || exit 1
在脚本中,判断参数数量,不匹配就打印使用方式,退出:
if [ "$#" -ne "2" ]; then
echo "usage: $0 <area> <hours>"
exit 2
fi
在脚本中,退出时删除临时文件:
trap "rm -f tmpfile; echo Bye." EXIT
检查上一命令的退出码:
./mycommand.sh
EXCODE=$?
if [ "$EXCODE" == "0" ]; then
echo "O.K"
fi
以上是关于为啥shell脚本exit后,当前进程没有终止?的主要内容,如果未能解决你的问题,请参考以下文章