`
onelark
  • 浏览: 32385 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

(转)Java程序以后台方式在Linux上运行(nohup命令)

 
阅读更多

一、预备


命令

:nohup java cn.aofeng.LoopApplication >Loop.log &
说明
    1)将cn.aofeng.LoopApplication设置成后台运行,并且将标准输出的日志重定向至文件Loop.log。
    2)nohup 表示不挂断运行,&表示以后台方式运行。

源代码:

 

 

package cn.aofeng;

 

import java.text.Format;

import java.text.SimpleDateFormat;

import java.util.Date;

 

/**

 *

 * @author aofeng <a href="mailto:aofengblog@163.com">aofengblog@163.com</a>

 * @version 1.0.0

 * @since 1.0.0

 */

public class LoopApplication {

 

   public static void main(String[] args) {

      Format format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

 

      while(true) {

        String date = format.format(new Date());

        System.out.println("Current Time:" + date);

 

        try {

           Thread.sleep(1000);

        } catch (InterruptedException e) {

           e.printStackTrace(System.out);

        }

      }

   }

}



二、实践


1、telnet 登陆到Linux,执行命令
aofeng@suse9t90:~/aofeng/app> nohup java cn.aofeng.LoopApplication >Loop.log &
[1] 11860

系统返回作业号(1)和进程号(11860)。

2、退出telnet,再重新telnet登陆到Linux。

3、查看当前目录
aofeng@suse9t90:~/aofeng/app> ls
cn  Loop.log

结果显示已经在当前目录(app)下生成了日志文件Loop.log。

4、查看日志内容
aofeng@suse9t90:~/aofeng/app> tail -f Loop.log
Current Time:2008-11-14 10:59:03
Current Time:2008-11-14 10:59:04
Current Time:2008-11-14 10:59:05
Current Time:2008-11-14 10:59:06
Current Time:2008-11-14 10:59:07
Current Time:2008-11-14 10:59:08
Current Time:2008-11-14 10:59:09

日志显示程序正在运行,每秒向日志写入一行数据。

5、查看进程信息
aofeng@suse9t90:~/aofeng/app> ps -ef | grep java
1004     11860 11826  0 10:53 pts/4    00:00:00 java cn.aofeng.LoopApplication


三、附:nohup 命令


  用途:不挂断地运行命令。

  语法:nohup Command [ Arg ... ] [ & ]

   描述:nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 & ( 表示“and”的符号)到命令的尾部。

   无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中。如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。如果没有文件能创建或打开以用于追加,那么 Command 参数指定的命令不可调用。如果标准错误是一个终端,那么把指定的命令写给标准错误的所有输出作为标准输出重定向到相同的文件描述符。

  退出状态:该命令返回下列出口值:

  126 可以查找但不能调用 Command 参数指定的命令。

  127 nohup 命令发生错误或不能查找由 Command 参数指定的命令。

  否则,nohup 命令的退出状态是 Command 参数指定命令的退出状态。

  nohup命令及其输出文件

  nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。nohup就是不挂起的意思( n ohang up)。

  该命令的一般形式为:nohup command &

  使用nohup命令提交作业

  如果使用nohup命令提交作业,那么在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中,除非另外指定了输出文件:

  nohup command > myout.file 2>&1 &

  在上面的例子中,输出被重定向到myout.file文件中。

来源:http://www.cnblogs.com/Bob-FD/archive/2011/10/20/Bob.html

分享到:
评论

相关推荐

    Linux nohup实现后台运行程序及查看(nohup与&)

    一般运行linux上的程序都是执行 .sh 文件(./sh文件),那如果不影响当前CMD窗口的操作,需要后台运行怎么办呢? 这时就需要借助 nohup 和 & 命令来实现。 nohup java -server -Xms128M -Xmx512M -XX:MetaspaceSize...

    linux下运行java程序

    除了命令行方式,你还可以编写shell脚本或使用工具如`nohup`或`screen`来后台运行Java程序,使其在用户退出终端后继续运行。例如: ```bash nohup java -jar myapp.jar & ``` 对于大型项目,通常会使用如`start-...

    Eclipse打包Java应用程序及在Linux系统上的部署运行[归纳].pdf

    Eclipse打包Java应用程序及在Linux系统上的部署运行 本文主要介绍了使用Eclipse将Java应用程序打包成JAR文件,并在Linux系统上部署和运行的步骤。下面是知识点的详细说明: 一、Eclipse打包Java应用程序 1. 在...

    linux下nohup日志输出过大问题的解决方法

    Linux 是一个功能强大且广泛使用的操作系统,nohup 命令是 Linux 中的一个常用命令,用于在后台运行程序并将输出重定向到文件中。但是在使用 nohup 命令时,经常会遇到日志输出文件过大的问题,导致日志文件变得非常...

    Linux 运行jar包的几种方式

    在Linux系统中,运行Java应用程序通常涉及到jar包的执行。本文将详细介绍在Linux环境下运行jar包的多种方式,以及相关的命令格式和原理。 首先,最常见的命令是`java -jar xxx.jar`,这种方式使得SSH终端被锁定,...

    linux上通过sh方式启动java jar程序并做为守护进程

    在Linux系统中,Java应用程序通常以两种主要方式运行:直接通过命令行或作为守护进程(daemon)。本篇文章将深入探讨如何使用`sh`脚本来启动Java的JAR程序,并将其设置为守护进程,以便在后台持续运行,即使用户注销...

    Linux后台运行java的jar包.docx

    - **特点**:`nohup`(No Hang Up)命令可以确保即使在用户退出或者终端关闭的情况下,程序依然能够持续运行。 - **输出管理**:默认情况下,使用`nohup`命令执行的任务输出会被重定向到一个名为`nohup.out`的文件中...

    linux后台执行命令&和nohup的具体使用方法

    总结起来,`&` 和 `nohup` 提供了在Linux环境下后台执行命令的能力,使得你可以同时处理多个任务,而不会被单个长时间运行的命令所束缚。了解如何正确使用它们,能够极大地提升你的工作效率和系统的资源利用效率。在...

    Eclipse打包Java应用程序及在Linux系统上的部署运行.pdf

    之后,可以通过`./sms`命令直接运行程序,或者使用`nohup ./sms`使其在后台运行。 - **设置环境变量**:将`/dibin`添加到系统的`PATH`环境变量中,这样可以在任何终端下直接运行`sms`或`nohup sms`。这需要在`/etc/...

    Linux nohup命令原理及实例解析

    Linux中的`nohup`命令是系统管理员和开发者在日常工作中经常会用到的一个工具,它允许用户在退出终端或者注销系统后,仍然让一个程序在后台持续运行。这个命令非常实用,尤其对于那些需要长时间运行的服务或者脚本,...

    linux 通过脚本执行java程序

    在Linux环境中,通过脚本执行Java程序是一种常见的实践,尤其对于服务器端应用或者自动化任务来说。这使得我们能够更方便地管理和控制Java应用程序的启动、停止以及监控。下面将详细介绍如何编写一个简单的bash脚本...

    详解linux下nohup日志输出过大问题解决方案

    最近在一hadoop测试集群运行一个spark streaming程序,然后使用nohup ./execute.sh & 执行让程序后台运行,才几天日志就上G了,如果有问题想要查看日志,显然打开文件是一件很麻烦的事,于是我想办法通过减小文件...

    java程序写入服务

    Java程序写入服务,顾名思义,是指将Java应用程序设计为系统服务,使其能够在后台持续运行,即使没有用户交互也能自动启动或恢复。这种方式在服务器环境和需要长期运行的任务中非常常见,如数据处理、定时任务、Web...

    Linux下启动JAVA

    Java的可移植性使得它能在各种操作系统上运行,而Linux作为服务器平台的广泛使用,使得了解如何在该平台上启动Java变得至关重要。本文将详细讲解Linux下启动Java的相关知识点。 1. **Java安装** 在Linux上使用Java...

    Linux下独立执行Java程序.docx

    使用`nohup`命令执行Java程序,`nohup`使得程序在终端关闭后仍能继续运行。`/dev/null`是一个空设备文件,用于丢弃程序的输出,避免在终端中产生大量日志。 程序启动后,可以通过`ps -ef | grep JobService`来查找...

    Linux运行jar包执行文件

    首先,`Linux运行jar包执行文件`这个标题暗示我们需要在Linux操作系统上启动一个Java程序,该程序被打包成了JAR格式。JAR文件是Java平台特有的归档格式,它包含了编译后的类文件、资源文件以及其他元数据。要运行一...

    Linux启动脚本

    如果未运行,则使用`nohup`命令后台启动Java程序,并重定向标准输出和错误输出至`/dev/null`,防止输出干扰。 ##### 3. 停止Java程序 脚本同样支持停止Java程序: ``` stop() { checkpid if [ "$psid" -ne 0 ]; ...

    springboot 在linux后台运行的方法

    在生产环境中,使用 nohup 命令来让 Spring Boot 项目在 Linux 后台运行是一个非常常见的做法。这可以确保 Spring Boot 项目长时间运行,不会因为用户退出控制台或重启服务器而停止服务。 本文详细介绍了 Spring ...

Global site tag (gtag.js) - Google Analytics