如何在Linux系统中很好地配置Spring Boot应用程序打包为可执行jar作为服务?这是推荐的方法,还是应该将此应用程序转换为war并安装到Tomcat中?
目前我可以从screen会话中运行Spring启动应用程序,这很不错,但需要在服务器重启后手动启动.
我正在寻找的是一般建议/方向或示例init.d脚本,如果我使用可执行jar的方法是正确的.
当程序收到kill信号时,你如何处理清理?
例如,我连接的应用程序需要任何第三方应用程序(我的应用程序)finish在注销时发送命令.finish当我的应用程序被摧毁时,发送该命令的最佳发音是kill -9什么?
编辑1:无法捕获kill -9.谢谢你们纠正我.
编辑2:我想这种情况是当一个人调用kill时与ctrl-c相同
Spring boot的首选部署方法是通过一个包含tomcat的可执行jar文件.
它以简单的方式开始java -jar myapp.jar.
现在,我想将该jar部署到我在EC2上的linux服务器上,我是否遗漏了某些东西或者我是否真的需要创建一个init脚本来正确启动应用程序作为守护进程?
如果我java -jar在注销时简单地调用应用程序就死了.
我可以在屏幕或nohup中启动它,但这不是很优雅,我的服务器重启将迫使我登录并手动启动该过程.
那么,春季靴子的任务是否已经存在?
我有一个Java程序,我想在Linux系统上守护进程.换句话说,我想开始在shell中运行它,并在我退出后继续运行它.我也希望能够干净地停止这个程序.
我发现这篇文章使用shell脚本和Java代码的组合来完成这个技巧.它看起来不错,但如果可能的话,我想要更简单的东西.
在Linux系统上守护Java程序的首选方法是什么?
我想按如下方式启动和停止我的jar文件
service myService start
service myService stop
我当前的jar文件运行如下
cd /home/alex/IdeaProjects/myService
java -jar target/myService-SNAPSHOT-1.jar server config.yml
Run Code Online (Sandbox Code Playgroud)
我该怎么办?
我需要从JAVA程序在Fedora 16的终端上运行命令.我试过用
Runtime.getRuntime().exec("xterm");
Run Code Online (Sandbox Code Playgroud)
但这只是打开终端,我无法执行任何命令.
我也试过这个:
OutputStream out = null;
Process proc = new ProcessBuilder("xterm").start();
out = proc.getOutputStream();
out.write("any command".getBytes());
out.flush();
Run Code Online (Sandbox Code Playgroud)
但我仍然只能打开终端,但无法运行命令.关于如何做的任何想法?
在将我的应用程序符号链接到/etc/init.d/myappname 之后。
/etc/init.d/myappname start 给出"Failed to start"
/var/log/appname.log告诉
"start-stop-daemon: unrecognized option '--no-close'"
当我删除--no-closejar 时,jar 已损坏并且无法再运行。我很震惊。
bdw 我的 jar 是完全可执行的 jar。即,当我单独运行 jar 时,它会正常启动 springboot。
这里出了什么问题?
编辑:
do_start() {
working_dir=$(dirname "$jarfile")
pushd "$working_dir" > /dev/null
if [[ -n "$run_user" ]]; then
mkdir "$PID_FOLDER" &> /dev/null
checkPermissions || return $?
chown "$run_user" "$PID_FOLDER"
chown "$run_user" "$pid_file"
chown "$run_user" "$log_file"
if [ $USE_START_STOP_DAEMON = true ] && type start-stop-daemon > /dev/null 2>&1; then
arguments=(-Dsun.misc.URLClassPath.disableJarChecking=true $JAVA_OPTS -jar $jarfile $RUN_ARGS …Run Code Online (Sandbox Code Playgroud) 我遵循了这个教程:
作为init.d服务
可执行jar具有通常的启动,停止,重启和状态命令.它还将在通常的/ var/run目录中设置一个PID文件,并默认登录到通常的/ var/log目录.
你只需将你的jar符号链接到/etc/init.d就像这样
假设您在/ var/myapp中安装了Spring Boot应用程序,要将Spring Boot应用程序安装为init.d服务,只需创建一个符号链接:
Run Code Online (Sandbox Code Playgroud)$ sudo ln -s /var/myapp/myapp.jar /etc/init.d/myapp然后启动服务:
Run Code Online (Sandbox Code Playgroud)/etc/init.d/myapp start
当我这样做时,就像在那里描述的那样,我在Ubuntu 14.04控制台中遇到以下错误:
ubuntu@spring:/var/myapp$ /etc/init.d/myapp start
-bash: /etc/init.d/myapp: cannot execute binary file: Exec format error
Run Code Online (Sandbox Code Playgroud)