LINUX后台运行Java项目

今天在linux部署项目时用的SecureCRT远程连接的,发现在关闭CRT后项目也跟着关闭了,

查了文档发现,要想让项目能够后台运行我们可以使用nohup命令来实现:

> nobup  java -jar xxx.jar &

当我使用这个命令时又出现了另外一个错误:nohup: ignoring input and appending output to ‘nohup.out’

这是因为我们没有写入权限导致的,接着查文档。。。

可以使用linux重定向来解决,

■linux重定向:

0、1和2分别表示标准输入、标准输出和标准错误信息输出,可以用来指定需要重定向的标准输入或输出。

在一般使用时,默认的是标准输出,既1。当我们需要特殊用途时,可以使用其他标号。

例如,将某个程序的错误信息输出到log文件中:./program 2>log。

这样标准输出还是在屏幕上,但是错误信息会输出到log文件中。

 

另外,也可以实现0,1,2之间的重定向。2>&1:将错误信息重定向到标准输出。

Linux下还有一个特殊的文件/dev/null,它就像一个无底洞,所有重定向到它的信息都会消失得无影无踪。

这一点非常有用,当我们不需要回显程序的所有信息时,就可以将输出重定向到/dev/null。

如果想要正常输出和错误信息都不显示,则要把标准输出和标准错误都重定向到/dev/null, 例如:

# ls 1>/dev/null 2>/dev/null

还有一种做法是将错误重定向到标准输出,然后再重定向到 /dev/null,例如:

# ls >/dev/null 2>&1

注意:此处的顺序不能更改,否则达不到想要的效果,此时先将标准输出重定向到 /dev/null,

然后将标准错误重定向到标准输出。

由于标准输出已经重定向到了/dev/null,因此标准错误也会重定向到/dev/null,于是一切静悄悄。

 

■关于nohup

在使用nohup命令的时候,经常由于输出nohup.out的路径没有写入权限,而无法使用nohup。

这是可以使用Linux重定向的方法,将nohup.out重定向至一个有写入权限的路径,或者直接扔到/dev/null中。

nohup ./program >/dev/null 2>/dev/null &

或者

nohup ./program >/dev/null 2>&1 &

 

这样问题就解决了

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要在Linux后台运行Java JAR包,可以使用以下命令: nohup java -jar your_jar_file.jar & 其中,nohup命令可以让程序在后台运行,即使终端关闭也不会停止运行。&符号可以让程序在后台运行,而不占用当前终端。 你需要将your_jar_file.jar替换为你要运行的JAR包的文件名。如果JAR包需要参数,可以在命令后面添加参数。 例如,如果你要运行名为myapp.jar的JAR包,并且需要传递参数arg1和arg2,可以使用以下命令: nohup java -jar myapp.jar arg1 arg2 & 这样,myapp.jar将在后台运行,并且可以接收arg1和arg2参数。 ### 回答2: 在Linux系统中,如果想要运行Java的jar包并且在后台运行,可以使用如下几种方法: 1. 使用nohup命令:nohup命令可以使进程在后台运行,即使关闭终端,进程也能继续运行。具体操作方式如下: ``` nohup java -jar jar包路径 & ``` 说明: nohup:表示使用nohup命令运行程序; java -jar jar包路径:表示运行Java的jar包路径; &:表示将进程转入后台运行。 2. 使用screen命令:screen命令可以创建一个虚拟终端,将进程放到该虚拟终端中运行,并在终端关闭时仍能保持运行。具体操作方式如下: ``` screen -S 进程名 java -jar jar包路径 ``` 说明: screen -S 进程名:表示创建名为进程名的虚拟终端; java -jar jar包路径:表示运行Java的jar包路径。 使用screen命令运行程序后,可以按下“Ctrl+A D”组合键退出虚拟终端,并在后台继续运行程序。 3. 使用后台服务:可以将Java的jar包打包成一个服务,在系统启动时自动运行该服务。具体操作方式如下: 编写服务脚本: 将以下内容保存为一个脚本文件,例如myservice: ``` #!/bin/sh ### BEGIN INIT INFO # Provides: myservice # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start or stop myservice # Description: Start or stop myservice ### END INIT INFO case "$1" in start) nohup java -jar jar包路径 & echo "myservice started." ;; stop) ps -ef | grep java | grep jar包路径 | awk '{print $2}' | xargs kill -9 echo "myservice stopped." ;; *) echo "Usage: /etc/init.d/myservice {start|stop}" exit 1 ;; esac exit 0 ``` 说明: 将java -jar jar包路径替换为实际运行的Java的jar包路径; service脚本中start表示启动服务,stop表示停止服务; 安装服务: 将上述编写好的服务脚本myservice保存到/etc/init.d目录下,然后使用如下命令安装服务: ``` chmod +x /etc/init.d/myservice update-rc.d myservice defaults ``` 说明: chmod +x /etc/init.d/myservice:表示授权脚本执行权限; update-rc.d myservice defaults:表示将该服务添加到启动项,使系统启动时自动运行该服务。 最后,启动和停止服务可以使用如下命令: ``` service myservice start service myservice stop ``` 以上是在Linux系统中运行Java的jar包并在后台运行的几种方法,需要注意的是根据实际情况选择使用哪种方法。 ### 回答3: 在Linux系统下运行Java jar包,可以通过使用命令行或者编写脚本的方式来实现。通常情况下,我们希望将Java应用程序运行在后台,以避免终端关闭或者操作系统的重启等情况导致进程被停止。下面是具体的操作步骤: 1. 开启终端,进入应用程序的目录。一般来说,Java应用程序是打包为jar文件的。所以首先需要切换到jar文件所在的目录。 2. 编写脚本文件。首先需要创建一个脚本文件如start.sh,然后在里面添加如下命令: nohup java -jar filename.jar > log.txt 2>&1 & 其中,nohup是一个常用的命令,它可以让进程在后台运行,即使终端关闭或登出,进程也能够持续运行。以filename.jar代表实际的jar文件名,log.txt是输出日志文件名,2>&1是将错误信息输出到标准输出中。 3. 运行脚本文件。打开终端,进入脚本所在的目录,然后运行如下命令: bash start.sh 这样就能够启动Java应用程序,并在后台运行了。此时可以使用ps命令查看进程的运行状态。 4. 停止Java应用程序。当需要终止Java应用程序时,可以使用kill命令,具体命令如下: ps -ef | grep filename.jar 找到进程号,然后使用kill命令停止程序: kill PID 其中PID代表实际的进程号。 总之,以上这些步骤可以帮助你在Linux系统下后台运行Java应用程序,并且能够方便地进行程序的终止和调试。如果需要更为复杂的操作,可以参考其他Linux相关的文档或者教程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值