当使用 shell 脚本 运行 jar 文件时限制 kill 命令
Restrict kill commands when running jar file using a shell script
我有一个 jar 文件,它是一个接受用户输入并对其进行处理的程序。我 运行 这个 jar 文件使用下面的 shell 脚本:
PR=`basename [=12=]`
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
请帮助我。
我建议您为您的程序使用简单的启动和停止脚本;
1) 创建名称为 start_myprogram.sh 的 sh 脚本并放入文件 ;
PR=`basename [=10=]`
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 }'`
if [ -n "$PID" ]
then
kill $PID
else
echo MY_PROG is not running.
fi
3) 开始你的程序./start_myprogram.sh &
4) 任何时候你想停止你的程序./stop_myprogram.sh
*这可能不是你问题的答案,但至少你不需要再实施任何东西。
我建议在脚本中进行以下更改以达到所需的要求。
似乎您需要某种函数来捕获这些命令并且不让命令被执行。 Shell 脚本可以通过使用 trap 实现这种功能。
您可以像这样更改脚本:
PR=`basename [=10=]`
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 脚本中使用陷阱非常简单。希望这对你有用。
我有一个 jar 文件,它是一个接受用户输入并对其进行处理的程序。我 运行 这个 jar 文件使用下面的 shell 脚本:
PR=`basename [=12=]`
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
请帮助我。
我建议您为您的程序使用简单的启动和停止脚本;
1) 创建名称为 start_myprogram.sh 的 sh 脚本并放入文件 ;
PR=`basename [=10=]`
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 }'`
if [ -n "$PID" ]
then
kill $PID
else
echo MY_PROG is not running.
fi
3) 开始你的程序./start_myprogram.sh &
4) 任何时候你想停止你的程序./stop_myprogram.sh
*这可能不是你问题的答案,但至少你不需要再实施任何东西。
我建议在脚本中进行以下更改以达到所需的要求。 似乎您需要某种函数来捕获这些命令并且不让命令被执行。 Shell 脚本可以通过使用 trap 实现这种功能。
您可以像这样更改脚本:
PR=`basename [=10=]`
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 脚本中使用陷阱非常简单。希望这对你有用。