在Linux中的后台进程【JAVA教程】

!
也想出现在这里? 联系我们
信息

在Linux中的后台进程,第1张

概述在Linux中的后台进程

我开发了一个Java套接字服务器连接,工作正常。

从terminal启动时,从客户端收听。 但是当我closuresterminal时,它会停止收听。

即使用户从jar文件的启动位置closures了terminal,我也需要继续。

如何在linux中运行Java服务器套接字应用程序作为后台进程

套接字可视化工具

当客户端套接字被服务器closures,然后由同一端口上的客户端打开新套接字时,出现JVM_Bind错误

TCP套接字从错误的端口接收

避免RDNS查找http请求

在windows中,如何找出哪个进程位于本地networking套接字的另一端?

如何强制在linux上closures套接字?

在连接失败时重新使用套接字描述符

如何在另一个线程的超时时间内唤醒select()

Winsock2如何侦听()块?

如何处理linux套接字revellent PolLERR,PolLHUP和PolLNVAL?

有几种方法可以实现这样的事情:

nohup java -server myApplication.jar > /log.txt – 这非常简单。 它只会把应用程序放在后台。 这会起作用,但这不是一个很好的方法。

使用shell包装器和上面的OR 守护程序。 这种方法被许多开源项目所使用,对于大多数场景来说都是相当不错的。 此外,它可以包含在init.d和所需的运行级别中,并具有常规的启动,停止和状态命令。 如果需要,我可以提供一个例子。

使用Java Service Wrapper或Apache Jakarta Commons Daemon构建自己的守护进程服务器。 再次 – 都是非常受欢迎,经过充分测试和可靠。 并可用于linux和windows! Tomcat服务器使用Apache Commons中的一个! 另外还有Akuma 。

就个人而言,如果您将来需要使用此服务器并/或将其分发给客户端,最终用户等,我将采用解决方案2或3。如果您需要运行某些内容而没有时间开发更复杂的解决方案,则nohup会很好为了这个问题。

广告2:

许多项目使用的最好的脚本可以在这里找到。

对于Debian / Ubuntu,可以使用基于start-stop-daemon的非常简单的脚本。 如果有疑问,可以修改/etc/init.d/skeleton 。

#!/bin/sh DESC=\”Description\” name=YOUR_name PIDfile=/var/run/$name.pID RUN_AS=USER_TO_RUN COMMAND=/usr/bin/java — -jar YOUR_JAR d_start() { start-stop-daemon –start –quIEt –background –make-pIDfile –pIDfile $PIDfile –chuID $RUN_AS –exec $COMMAND } d_stop() { start-stop-daemon –stop –quIEt –pIDfile $PIDfile if [ -e $PIDfile ] then rm $PIDfile fi } case $1 in start) echo -n \”Starting $DESC: $name\” d_start echo \”.\” ;; stop) echo -n \”StopPing $DESC: $name\” d_stop echo \”.\” ;; restart) echo -n \”Restarting $DESC: $name\” d_stop sleep 1 d_start echo \”.\” ;; *) echo \”usage: $name {start|stop|restart}\” exit 1 ;; esac exit 0

在命令结尾处添加&后,您需要执行一项至关重要的事情。 该过程仍然与终端相连。 运行java命令后需要运行disown 。

java -jar yourApp.jar > log.txt & disown

现在,你可以关闭终端。

你需要的关键词是“守护进程”。 有没有想过为什么系统服务器进程通常在linux / Unix上以\’d\’结尾? 由于历史原因,“d”代表“守护进程”。

因此,分离并成为一个真正的服务器进程的过程被称为“守护进程”。

这是完全一般的,而不仅限于Java进程。

为了成为一个真正独立的守护进程,您需要完成几项任务。 他们在维基百科页面上列出。

你需要担心的两件事情是:

从父进程分离

从创建该进程的tty分离

如果你Google一句“守护进程”,你会发现一堆方法来完成这一点,以及一些为什么它是必要的更多的细节。

大多数人只是使用一个小小的脚本来启动java进程,然后使用\’&\’完成java命令以后台模式启动。 然后,当启动脚本进程退出时,java进程仍在运行,并将从现在已死的脚本进程中分离出来。

尝试,

java -jar yourApp.jar &

&将启动新的进程线程,我还没有测试过这个,但如果仍然不起作用,然后把它在脚本文件中,并开始与我&

你有没有尝试在命令行结束? 例如:

java -jar mySocketApp.jar &

您还可以使用bg和fg命令将进程发送到后台和前台。 您可以通过CTRL + Z暂停正在运行的进程。

看看这篇文章: http : //lowfatlinux.com/linux-processes.HTML

总结

以上是内存溢出为你收集整理的在Linux中的后台进程全部内容,希望文章能够帮你解决在Linux中的后台进程所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

© 版权声明
THE END
喜欢就支持一下吧
点赞200 分享
评论 抢沙发

请登录后发表评论

    请登录后查看评论内容