4

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

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'`

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

Ctrl + z 
Ctrl + c 
Ctrl + break

请帮我。

4

2 回答 2

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 &

4) 任何时候只要你想停止你的程序 ./stop_myprogram.sh

*这可能不是您问题的答案,但至少您不需要再实施任何事情。

于 2016-01-13T09:42:33.183 回答
1

我建议在脚本中进行以下更改以达到所需的要求。似乎您需要某种功能来捕获这些命令而不是让这些命令被执行。Shell 脚本可以通过实现陷阱的使用来实现这种功能。

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

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 脚本中使用陷阱非常简单。希望这对你有用。

于 2016-01-18T04:50:34.083 回答