book_suppanda007 2010-03-22 23:13
浏览 477
已采纳

远程连接Linux运行jar程序自动停止问题?

我有一个runOcr.sh脚本,运行一个Jar程序,这个程序的任务是每隔5秒钟扫描指定目录,扫描新增图片信息,然后将获取的结果放到数据库,脚本如下:
java -jar -Xms256m -Xmx1024m OCRClient.jar &
运行环境是在SUSE 9企业版下。

我通过xmanger连接到suse上,执行sh命令。用以下几种方式。
方法一:nohup ./runOcr.sh & 会在命令所在文件夹生成一个nohup.out记录命令运行情况
方法二:setsid ./runOcr.sh &
方法三:新开一个screen来运行命令

这几种方式在断开xmanger终端连接后一样在运行。但是当我新增图片到指定目录,这个程序就一直卡在哪里,不读新增图片信息。如果我通过xmanger重新登录系统,只是登录,什么都不做,程序也不卡了,继续开始读取新增的图片信息。感觉是这个进程睡眠了,需要重新登录激活这个程序一样。

我的问题:如何解决上面的现象,远程登录后运行服务在断开,后台进程一直运行不卡呢?tomcat的startup.sh是如何做的呢?

  • 写回答

5条回答 默认 最新

  • qwe_rt 2010-03-23 07:50
    关注

    lz看看这篇文章,里面提到了一点,是关于xmanager进程的级别问题
    [quote]检查 /etc/inittab 修改运行级别为5 (X11) ,如果为3的话,你看到的将不是桌面,而是命令行窗口。

    init 0(halt,不要将其设置为系统的initdefault)
    init 1(single user mode,单使用者模式)
    init 2(multiuser,without nfs,多用户模式,不带NFS)
    init 3(Full multiuser mode,多用户模式,带NFS)
    init 4(unused,保留)
    init 5(X11,图形界面多用户模式)
    init 6(reboot,不要将其设置为系统的initdefault)
    id:5:initdefault:[/quote]

    上面显示x11(xmanager进程名)的进程运行的级别为5。
    关于xmanager的xdmcp原理的资料太少,所以只能根据上面,所查的资料以及结合linux系统进程知识,做出下面的推断:
    1、用xmanager连接上linux,在linux系统中会产生一个进程,而这个进程将会是一个父进程,它负责创建为了运行其他“xmanager与linux交互”的命令而需要的子进程。
    2、当通过xmanager操作linux时,比如你
    [quote]执行sh命令,让你的java程序不断的检测文件系统新增的文件[/quote]
    第一步中父进程将创建子进程,这个子进程负责管理你执行的任务。
    3、现在搞清楚了,父进程与子进程之间来龙去脉。分析一下断开xmanager时,可以肯定一点:父进程原来的“运行(running)”状态肯定发生了变化。至于变成什么状态,推断是终止了,当然父进程终止,子进程也终止运行。
    4、在xmanager断开连接时,xmanager做了一件事:应该是记录被迫终止的子进程的所有状态以及内存信息。
    5、下次再连接时,将继续执行上次未完成的任务。
    讲到这里,应该够详细吧~

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?