【问题标题】:Restrict kill commands when running jar file using a shell script使用 shell 脚本运行 jar 文件时限制终止命令
【发布时间】:2016-04-18 04:34:36
【问题描述】:

我有一个 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

请帮帮我。

【问题讨论】:

  • 你为什么不想写启动和停止脚本?问题是当你在后台启动程序时,你知道哪个进程应该被杀死
  • @Kai Iskratsch:更改必须包含在脚本中,而不是程序中。您标记为重复副本的答案是使用 Java 函数添​​加完全不相关的钩子,在我的情况下它甚至不起作用。请在将其标记为重复之前检查问题和答案。
  • @newuserua_ext:感谢您的回答。您制作启动停止脚本的建议对我不起作用,因为它不是后台进程,它是一个接受用户输入并处理它的程序。限制某些退出命令的唯一目的是确保用户不能退出程序。
  • 您是否要从您编写的用于启动 jar 文件的 shell 脚本中捕获/捕获/限制这些命​​令(Ctrl + z、Ctrl + c、Ctrl + break)?

标签: java linux shell rhel bash-trap


【解决方案1】:

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

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

*这可能不是你的问题的答案,但至少你不需要实现更多。

【讨论】:

  • 感谢您的回答。我会尽力让你知道。
【解决方案2】:

我建议对脚本进行以下更改以达到所需的要求。 似乎您需要某种功能来捕获这些命令而不是让命令执行。 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 脚本中使用陷阱非常简单。希望这对你有用。

【讨论】:

  • 我会对此进行测试并通知您。
猜你喜欢
  • 2010-12-11
  • 2016-01-02
  • 2016-10-01
  • 2013-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多