Linux后台运行Java项目世上最详解
目录生成jar包并导入Linux中前台启动后台启动jobs命令和 fg /bg命令:查看进程前台进程的终止后台进程的终止生成jar包并导入Linux中进入D:\Java\Dubbo\dubbo-admin-master\dubbo-admin文件中,含pom文件的文件夹,在输入cmd,弹出cmd窗口。输入命令,会在当前文件夹下的target目录下生成jar包mvn clean install -D
·
生成jar包并导入Linux中
进入D:\Java\Dubbo\dubbo-admin-master\dubbo-admin文件中,含pom文件的文件夹,在
输入cmd,弹出cmd窗口。
输入命令,会在当前文件夹下的target目录下生成jar包
mvn clean install -Dmaven.test.skip=true
进入taget目录、会看到生成的jar包、将其上传到Linux 的/home/jingdong/app中
前台启动
java -jar XXX.jar #特点:当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出
java -jar XXX.jar & #特定:当前ssh窗口不被锁定,但是当窗口关闭时,程序中止运行。
后台启动
nohup java -jar test.jar &
#nohup 意思是不挂断运行命令,当账户退出或终端关闭时,程序仍然运行
#当用 nohup 命令执行作业时,缺省情况下该作业的所有输出被重定向到nohup.out的文件中
#除非另外指定了输出文件。
nohup java -jar test.jar >temp.txt &
#这种方法会把日志文件输入到你指定的文件中,没有则会自动创建
#解释下 >temp.txt
#command >out.file
#command >out.file是将command的输出重定向到out.file文件,即输出内容不打印到屏幕上,而是输出到out.file文件中。
jobs命令和 fg /bg命令:
//jobs
#列出所有后台执行的作业,并且每个作业前面都有个编号。
//fg
#将后台中的命令调至前台继续运行
#如果后台有多个命令,可以用fg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)
//ctrl + z
#可以将一个正在前台执行的命令放到后台,并且处于暂停状态。
//bg
#将一个在后台暂停的命令,变成继续执行(在后台执行)
#如果后台有多个命令,可以用bg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)
#将任务转移到后台运行:先ctrl + z暂停;再bg,这样进程就被移到后台运行,终端还能继续接受命令。
jobs -l选项可显示所有任务的PID,jobs的状态可以是running, stopped, Terminated。但是如果任务被终止了(kill),shell 从当前的shell环境已知的列表中删除任务的进程标识。
查看进程
[root@iZ2ze5lz4uc5ezixqbmvygZ app]# jobs
[1]+ Running nohup java -jar dubbo-admin-0.0.1-SNAPSHOT.jar &
#查看占用线程的pid
[root@iZ2ze5lz4uc5ezixqbmvygZ app]# jobs -l
[1]+ 829 Stopped java -jar dubbo-admin-0.0.1-SNAPSHOT.jar
[root@iZ2ze5lz4uc5ezixqbmvygZ app]# ps
PID TTY TIME CMD
720 pts/0 00:00:00 bash
829 pts/0 00:00:12 java
989 pts/0 00:00:00 ps
[root@iZ2ze5lz4uc5ezixqbmvygZ app]# jps -l
613 org.apache.zookeeper.server.quorum.QuorumPeerMain
892 sun.tools.jps.Jps
829 dubbo-admin-0.0.1-SNAPSHOT.jar
[root@iZ2ze5lz4uc5ezixqbmvygZ app]# ps -ef |grep dubbo
root 829 720 18 21:56 pts/0 00:00:10 java -jar dubbo-admin-0.0.1-SNAPSHOT.jar
root 887 720 0 21:57 pts/0 00:00:00 grep --color=auto dubbo
[root@iZ2ze5lz4uc5ezixqbmvygZ app]# netstat -lutnp |grep 7001
tcp6 0 0 :::7001 :::* LISTEN 829/java
[root@iZ2ze5lz4uc5ezixqbmvygZ app]# netstat -nlp |grep 7001
tcp6 0 0 :::7001 :::* LISTEN 829/java
unix 2 [ ACC ] STREAM LISTENING 70017753 30552/AliYunDun /usr/local/aegis/Aegis-<Guid(5A2C30A2-A87D-490A-9281-6765EDAD7CBA)>
前台进程的终止
ctrl+c
后台进程的终止
- 方法一:
通过jobs命令查看job号(假设为num),然后执行kill %num - 方法二:
通过ps命令查看job的进程号(PID,假设为pid),然后执行kill pid
[root@iZ2ze5lz4uc5ezixqbmvygZ app]# jobs
[1]+ Running nohup java -jar dubbo-admin-0.0.1-SNAPSHOT.jar &
[root@iZ2ze5lz4uc5ezixqbmvygZ app]# kill %1
kill的其他作用:kill除了可以终止进程,还能给进程发送其它信号,使用kill -l可以察看kill支持的信号。
SIGTERM是不带参数时kill发送的信号,意思是要进程终止运行,但执行与否还得看进程是否支持。如果进程还没有终止,可以使用kill -SIGKILL pid,这是由内核来终止进程,进程不能监听这个信号。
更多推荐
已为社区贡献1条内容
所有评论(0)