使用shell脚本运行jar文件时限制kill命令

时间:2016-01-13 09:20:16

标签: java linux shell rhel bash-trap

我有一个jar文件,它是一个接受用户输入并处理它的程序。我使用下面的shell脚本运行这个jar文件:

task releaseMyApp1{
finalizedBy ':MyApp1:assembleDebug'
// clean the projects, change version name, number etc
}

我面临的问题是,我想限制用户使用以下命令的任何组合退出应用程序。 例如:

PR=`basename $0`    
cdt=`date +'%H:%M:%S %d/%m/%Y'`
cd $HOME/myprogram
java -cp $HOME/myprogram/ifxjdbc.jar:$HOME/myprogram/jarprogram.jar:. MyProgram $@
cdt=`date +'%H:%M:%S %d/%m/%Y'`

请帮帮我。

2 个答案:

答案 0 :(得分:3)

我建议你为你的程序使用简单的启动和停止脚本;

1)创建名为start_myprogram.sh的sh脚本并将其放入文件中;

PR=`basename $0`    
cdt=`date +'%H:%M:%S %d/%m/%Y'`
cd $HOME/myprogram
nohup java -DMY_PROG -cp $HOME/myprogram/ifxjdbc.jar:$HOME/myprogram/jarprogram.jar:. MyProgram $@
cdt=`date +'%H:%M:%S %d/%m/%Y'`

2)创建名为stop_myprogram.sh的sh脚本并放入文件中;

#!/usr/bin/sh
USER=`whoami`
PID=`ps -xfu $USER|  grep java | grep MY_PROG | grep -v grep | awk '{ print $2 }'`

if [ -n "$PID" ]
then
kill $PID
else
echo MY_PROG is not running.
fi

3)启动你的程序./start_myprogram.sh& amp;

4)随时随地停止你的程序./stop_myprogram.sh

*这可能不是你问题的答案,但至少你不需要再实施任何东西了。

答案 1 :(得分:1)

我建议在脚本中进行以下更改以达到所需要求。 看起来你需要某种函数来捕获这些命令,而不是让命令执行。 Shell脚本可以通过实现trap的使用来实现这种功能。

您可以在脚本中进行更改:

PR=`basename $0`    
cdt=`date +'%H:%M:%S %d/%m/%Y'`
cd $HOME/myprogram

#Add these two lines in the code for catching exit commands
trap '' 20 
trap ' ' INT

java -cp $HOME/myprogram/ifxjdbc.jar:$HOME/myprogram/jarprogram.jar:. MyProgram $@
cdt=`date +'%H:%M:%S %d/%m/%Y'`

在shell脚本中使用陷阱非常简单。希望这对你有用。