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

本文介绍如何使用nohup命令使Java程序在后台持续运行,即使用户登出也不受影响。通过示例展示了如何启动一个简单的Java应用程序并将其输出重定向到日志文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


======================================================
注:本文源代码点此下载
======================================================

一、预备

命令

: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 aofengblog@163.com

* @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

cnloop.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

100411860 118260 10:53 pts/400: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文件中。


======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值