`
SwordShadow
  • 浏览: 271447 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

让linux程序后台运行

阅读更多

最近把java web项目部署到weblogic上,一直通过windows端的F-Secure操作服务器,每次启动weblogic使用./startWebLogic.sh,但是发现退出终端后,weblogic也是自动退出,查了资料,发现Unix/Linux下一般想让某个程序在后台运行,很多都是使用 & 在程序结尾来让程序自动运行。比如我们要运行mysql在后台:

 

         /usr/local/mysql/bin/mysqld_safe --user=mysql &

 

但是我们很多程序并不象mysql一样可以做成守护进程,可能我们的程序只是普通程序而已,一般这种程序即使使用 & 结尾,如果终端关闭,那么程序也会被关闭。为了能够后台运行,我们需要使用nohup这个命令,比如我们有个start.sh需要在后台运行,并且希望在后台能够一直运行,那么就使用nohup:

nohup ./start.sh &

在shell中回车后提示:

 

        [~]$ appending output to nohup.out

        原程序的的标准输出被自动改向到当前目录下的nohup.out文件,起到了log的作用。

 

但是有时候在这一步会有问题,当把终端关闭后,进程会自动被关闭,察看nohup.out可以看到在关闭终端瞬间服务自动关闭

 

在当shell中提示了nohup成功后还需要按终端上键盘任意键退回到shell输入命令窗口,然后通过在shell中输入exit来退出终端(如果每次在nohup执行成功后直接点关闭程序按钮关闭终端.。所以这时候会断掉该命令所对应的session,导致nohup对应的进程被通知需要一起shutdown)

 

       正确启动weblogic服务

       nohup ./startWebLogic.sh &

       

在Linux中,如果要让进程在后台运行,一般情况下,我们在命令后面加上&即可,实际上,这样是将命令放入到一个作业队列中

 

       查看日志

       tail -100f nohup.out 

 

查看后台运行的进程

jobs -l

 

       退出F-secure

       exit

       

        附:nohup命令参考

 

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就是不挂起的意思( nohang up)。

 

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

 

  使用nohup命令提交作业

 

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

 

  nohup command > myout.file 2>&1 &

 

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

 

使用 jobs 查看任务。

 

使用 fg %n 关闭。

 

另外有两个常用的ftp工具ncftpget和ncftpput,可以实现后台的ftp上传和下载,这样就可以利用这些命令在后台上传和下载文件了。

 

附:查看linux系统的几种方法:

  1. uname -a
  2. cat /proc/version
  3. cat /etc/issue
  4. lsb_release -a

 

       参考文章:http://www.einit.com/user1/11/archives/2006/3603.html  

                         http://www.williamlong.info/archives/482.html  

                         http://yakar.iteye.com/blog/687656

分享到:
评论

相关推荐

    screen下载、linux后台运行程序、linux下screen下载

    screen下载、linux后台运行程序非常实用、后台任务、screen linux redhat 、CentOs系统screen下载、linux后台运行程序、screen linux redhat 、CentOs系统screen下载、linux后台运行程序、screen linux redhat 、...

    linux命令在后台运行

    本文将详细介绍如何在Linux中让命令在后台运行,包括使用`&`、`ctrl+z`、`fg`、`jobs`等命令的具体方法,以及如何使用`nohup`命令来确保程序即使在终端关闭后也能继续运行。 #### 二、使用`&`将命令置于后台 在...

    使程序在Linux下后台运行

     2:让程序在后台跑后,不会占据终端,我们可以用终端做别的事情。  二、怎么样使程序在后台执行  方法有很多,这里主要列举两种。假如我们有程序pso.cpp,通过编译后产生可执行文件pso,我们要使pso在linu

    Linux后台运行py服务程序1

    在Linux系统中,后台运行服务程序是常见的需求,特别是对于长时间运行的任务,如Python脚本。在标题和描述中提到的“&”符号和“nohup”命令就是实现这一目标的关键工具。下面我们将深入探讨如何使用这些命令以及...

    在Linux中查看及终止正在运行的后台程序方法

    linux 任务管理-后台运行与终止 fg、bg、jobs、&、ctrl + z命令 一、 & 加在一个命令的最后,可以把这个命令放到后台执行 ,如gftp &, 二、ctrl + z 可以将一个正在前台执行的命令放到后台,并且处于暂停状态,不可...

    Ubuntu下后台持续运行Python程序

    总之,在Ubuntu下后台运行Python程序涉及对Linux系统的深入理解,以及熟悉各种工具和服务管理方式。通过实践和学习,你可以有效地管理后台运行的Python应用程序,确保它们稳定、可靠地执行任务。

    Linux后台运行java的jar包.docx

    - **特点**:在命令结尾添加`&&`可以让程序在后台运行,不会锁定当前的SSH窗口。 - **局限性**:尽管当前窗口不再被锁定,但若窗口关闭,则程序也将随之停止运行。 #### 方式三:使用`nohup`实现更稳定的后台运行 *...

    Linux后台运行Python程序的几种方法讲解

    在Linux操作系统中,有时我们需要在后台运行Python程序,以便在不占用终端的情况下持续执行任务。以下是一些常见的方法: 1. **使用`nohup`命令** `nohup`命令允许程序在用户退出终端后继续运行。要使用`nohup`...

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

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

    Linux查看和关闭后台运行程序的方法

    在Linux操作系统中,管理和操作后台运行的程序是日常运维工作中不可或缺的部分。后台程序是指那些即使在用户退出终端或关闭shell会话后仍能继续运行的进程。本篇将详细介绍如何在Linux系统中查看和关闭这些后台运行...

    Linux启动脚本

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

    linux c++ 守护线程,判断程序是否运行,不存在就启动

    守护线程是一种长期运行的后台进程,它不依赖于终端会话,即使用户注销或者关闭了终端,守护线程依然可以继续工作。 在本场景中,我们要实现的功能是通过守护线程来检查一个程序(假设为`target_program`)是否正在...

    在Linux终端中使用后台运行模式启动程序的方法.docx

    ### 在Linux终端中使用后台运行模式启动程序的方法 #### 一、引言 在Linux操作系统中,终端(Terminal)是一个非常强大的工具,它允许用户通过命令行的方式与系统交互,执行各种任务。本文将详细介绍如何在Linux...

    linux下运行java程序

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

    Linux中进程在后台可靠运行的方法总结

    nohup通过忽略HUP信号实现进程的后台运行,而setsid则通过创建新的会话使得进程不受终端影响。根据具体需求,可以选择合适的方法,或者组合使用,以保证进程的稳定性和持久性。在实际操作中,应根据任务的性质和预期...

    如何在终端下以后台模式运行Linux程序.docx

    在终端下以后的台模式运行 Linux 程序 Linux 终端是一个强大的工具,可以运行各种 Linux 应用程序。但是,如果你想在后台模式下运行程序,如何保证终端仍然可以操作?本文将向你展示如何在终端下以后的台模式运行 ...

    开发Linux操作系统后台服务进程详解

    1. **后台运行**:通过调用`fork()`函数,父进程退出,子进程在后台继续运行,确保进程不会被控制终端挂起。 2. **脱离控制终端、登录会话和进程组**:调用`setsid()`函数,使得进程成为新的会话组长和进程组长,...

    在linux下用Qt编写的一个程序

    在Linux环境下,Qt是一个强大的C++图形用户界面应用程序开发框架,它允许开发者创建美观、功能丰富的桌面和移动应用。这个程序描述的是一个基于Qt的项目,它的主要功能是从某个特定地址获取点数据,并在图形界面上...

Global site tag (gtag.js) - Google Analytics