`
xushaohui1
  • 浏览: 5875 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

简单而有用的nohup命令

阅读更多
简单而有用的nohup命令在UNIX/LINUX中,普通进程用&符号放到后台运行,如果启动该程序的控制台logout,则该进程随即终止。

要实现守护进程,一种方法是按守护进程的规则去编程(本站有文章介绍过),比较麻烦;另一种方法是仍然用普通方法编程,然后用nohup命令启动程序:
nohup <程序名> &
则控制台logout后,进程仍然继续运行,起到守护进程的作用(虽然它不是严格意义上的守护进程)。
使用nohup命令后,原程序的的标准输出被自动改向到当前目录下的nohup.out文件,起到了log的作用,实现了完整的守护进程功能。

ygwu @ 2005年04月18日 上午10:03

For example:
如何远程启动WebLogic服务?
用telnet远程控制服务器,远程启动WEBLOGIC服务,启动后关闭telnet,WebLogic服务也跟着停止,这是因为使用telnet启动的进程会随着telnet进程的关闭而关闭。所以我们可以使用一些UNIX下的命令来做到不关闭。

使用如下命令:

nohup startWeblogic.sh&

如果想要监控标准输出可以使用:

tail -f nohup.out




访客留言
FreeBSD可以同时运行多个进程,在shell下直接输入命令后,shell将进程放到前台执行。如果要将进程放到后台执行,需要在命令行的结尾加上一个 “&” 符号。下面的命令从后台执行,从ftp.isc.org下载文件。

$ fetch ftp://ftp.isc.org/pub/inn/inn-1.7.2.tar.gz &

当程序已经在前台执行的时候,可以使用^Z将这个程序挂起,暂停执行。然后可以使用bg命令将这个挂起的程序放到后台执行,或者使用fg将某个在后台或挂起的进程放到前台执行。

当在后台运行了程序的时候,可以用jobs命令来查看后台作业的状态。在有多个后台程序时,要使用来参数的fg命令将不同序号的后台作业切换到前台上运行。

$ jobs

[1]+ Running fetch ftp://ftp.isc.org/pub/inn/inn-1.7.2.tar.gz &

$ fg %1

fetch ftp://ftp.isc.org/pub/inn/inn-1.7.2.tar.gz

在启动了多个程序之后,可以使用ps命令来查看这些进程及其状态。

$ ps

PID TT STAT TIME COMMAND

501 p2 Ss 0:00.24 -bash (bash)

988 p2 R+ 0:00.00 ps

765 p3 Is+ 0:00.28 -bash (bash)

230 v0 Is+ 0:00.14 -bash (bash)

显示的结果包括进程的标识号PID,控制终端TT(p0表示控制终端为ttyp0),进程的状态STAT,进程使用的处理器时间TIME和具体的命令。

可以给ps命令加上参数,来获得更多的输出内容,以下命令将输出系统中所有的进程:

$ ps waux

USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND

wb 989 0.0 0.4 400 236 p2 R+ 5:48PM 0:00.00 ps -aux

root 1 0.0 0.1 496 72 ?? Is 10:12PM 0:00.02 /sbin/init --

root 2 0.0 0.0 0 0 ?? DL 10:12PM 0:07.05 (pagedaemon)

root 3 0.0 0.0 0 0 ?? DL 10:12PM 0:00.20 (vmdaemon)

root 4 0.0 0.0 0 0 ?? DL 10:12PM 0:04.27 (syncer)

root 27 0.0 0.0 204 0 ?? IWs - 0:00.00 (adjkerntz)

root 91 0.0 0.5 820 328 ?? Is 2:12PM 0:00.82 syslogd

daemon 100 0.0 0.0 792 0 ?? IWs - 0:00.00 (portmap)

root 131 0.0 0.3 864 164 ?? Is 2:12PM 0:00.06 inetd

root 134 0.0 0.3 980 192 ?? Is 2:12PM 0:00.11 cron

root 138 0.0 0.6 1252 380 ?? Is 2:12PM 0:00.11 sendmail: accepti

wb 230 0.0 1.1 1540 668 v0 Is+ 2:12PM 0:00.14 -bash (bash)

root 231 0.0 0.0 824 0 v1 IWs+ - 0:00.00 (getty)

root 232 0.0 0.0 824 0 v2 IWs+ - 0:00.00 (getty)

root 500 0.0 0.9 876 524 ?? Ss 4:19PM 0:01.78 telnetd

wb 501 0.0 1.4 1540 888 p2 Ss 4:19PM 0:00.24 -bash (bash)

root 698 0.0 1.5 1644 900 ?? Is 4:49PM 0:00.02 /usr/local/sbin/s

root 700 0.0 1.2 1308 748 ?? Ss 4:49PM 0:00.22 /usr/local/sbin/n

root 702 0.0 3.4 2900 2112 ?? S 4:49PM 0:00.32 /usr/local/sbin/s

root 764 0.0 0.9 880 540 ?? Is 5:10PM 0:00.22 telnetd

wb 765 0.0 1.7 1536 1052 p3 Is+ 5:10PM 0:00.28 -bash (bash)

root 0 0.0 0.0 0 0 ?? DLs 10:12PM 0:00.02 (swapper)

当用户启动一个进程的时候,这个进程是运行在前台,使用与相应控制终端相联系的标准输入、输出进行输入和输出。即使将进程的输入输出重定向,并将进程放在后台执行,进程仍然和当前终端设备有关系。正因为如此,在当前的登录会话结束时,控制终端设备将和登录进程相脱离,那么系统就向所有与这个终端相联系的进程发送SIGHUP的信号,通知进程线路已经挂起了,如果程序没有接管这个信号的处理,那么缺省的反应是进程结束。因此普通的程序并不能真正脱离登录会话而运行进程,为了使得在系统登录后还可以正常执行,只有使用命令nohup来启动相应程序。

从上面的ps的输出结果可以看出,有些程序没有控制终端,这些程序通常是一些后台进程。使用命令nohup当然可以启动这样的程序,但nohup启动的程序在进程执行完毕就退出,而常见的一些服务进程通常永久的运行在后台,不向屏幕输出结果。在Unix中这些永久的后台进程称为守护进程(daemon)。守护进程通常从系统启动时自动开始执行,系统关闭时才停止。如果偶然某个守护进程消失了,那么它提供的服务将不再能被使用。

在守护进程中,最重要的一个是超级守护进程inetd,这个进程接管了大部分网络服务,但并不是对每个服务都自己进行处理,而是依据连接请求,启动不同的服务程序与客户机打交道。inetd支持网络服务种类在它的设置文件/etc/inet.conf中定义。inet.conf文件中的每一行就对应一个端口地址,当inetd接受到连接这个端口的连接请求时,就启动相应的进程进行处理。使用inetd的好处是系统不必启动很多守护进程,从而节约了系统资源,然而使用inetd启动守护进程相应反应会迟缓一些,不适合用于被密集访问的服务进程


分享到:
评论

相关推荐

    nohup命令详解.txt

    ### nohup命令详解:确保进程在终端关闭后继续运行 #### 核心知识点解析: **nohup命令概述:** `nohup`是Linux系统中的一个实用工具,其名称源自“No Hang UP”,意为“不断开”。该命令允许用户在终端窗口关闭或...

    通过python 执行 nohup 不生效的解决

    首先,我们来看一个简单的示例,尝试通过paramiko执行`nohup ping localhost &`: ```python import paramiko import time ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()...

    几个好用的Linux命令

    - **nohup 命令**:`nohup` 是一个非常有用的命令,它允许用户运行一个进程,即使用户退出了系统,该进程仍然继续运行。 - 示例命令1:`nohup python -u dm14_name_classfication_lx.py &`。这行命令会在后台运行 `...

    php守护进程 加linux命令nohup实现任务每秒执行一次

    2. nohup命令的使用:nohup命令在Unix系统中非常常见,用于让程序在关闭终端后不被终止。使用nohup时,程序的所有输出默认会被重定向到当前目录下的nohup.out文件中。如果当前目录不可写,输出会被重定向到用户主...

    LINUX下简单的命令

    根据提供的文件信息,本文将详细解释Linux环境下与Web项目部署及应用服务器启动相关的简单命令。这些命令对于初学者来说非常...希望本文能为读者提供有用的信息,并促进大家更好地理解和运用Linux环境下的简单命令。

    采用slf4j+logback输出日志

    SLF4J(Simple Logging Facade for Java)是Java中的一种日志门面,它提供一个简单的接口,允许用户在运行时插入任何日志实现。Logback是SLF4J的一个实现,由著名日志框架Log4j的创始人Ceki Gülcü所创建。Logback...

    linux命令在后台运行

    ### Linux命令在后台运行详解 #### 一、引言 在Linux系统中,有时我们需要运行一些...而`nohup`命令更是为需要长期运行的程序提供了一种可靠的解决方案。掌握这些技巧后,用户能够在使用Linux的过程中更加高效和灵活。

    sell 命令基本学习

    而`xargs`则可以将`find`的结果作为参数传递给其他命令,提高命令执行效率。例如,找到所有最近修改的文本文件并删除它们。 3. **03-后台执行命令.PDF**: 在shell中,使用`&`符号可以将命令放到后台执行,让终端...

    Linux 运行jar包的几种方式

    例如,`nohup java -jar app.jar &gt;log 2&gt;&1 &`将标准输出和错误都定向到`log`文件,而`nohup java -jar app.jar 2&gt;&1 &gt;log &`则会导致标准输出先被重定向到屏幕,然后再将标准错误重定向到屏幕,这不是我们期望的...

    Linux常用命令

    本文主要围绕后台任务的管理展开,详细介绍如何启动、查看、控制和终止后台任务,包括`&`、`ctrl+z`、`jobs`、`fg`、`bg`、`nohup`以及`kill`等命令的使用方法。 #### 一、`&` `&`符号用于将一个命令或脚本放置到...

    linux命令学习-新手入门

    5. **nohup命令**: - 使用`nohup`命令可以在终端关闭后继续运行程序。例如:`nohup find . -name abc -print &gt; myfind &`。 6. **特殊按键**: - `Ctrl+d`:结束当前shell会话或停止键盘输入。 - `Del`:中断...

    SecureCRT的用法和Linux常用命令

    需要注意的是,如果直接关闭SecureCRT窗口或会话,后台运行的进程可能也会被终止,除非使用了`nohup`命令或设置了作业控制。 3. **保持会话**:SecureCRT提供了保持会话的功能,即使在客户端断开连接后,也能维持...

    Linux后台运行命令

    - **nohup**: 使用`nohup`命令可以确保即使在用户退出登录后,命令仍然在后台继续运行。例如:`nohup command &` #### 三、`cron`与`crontab`命令 `cron`是Linux系统中用于定时执行任务的守护进程。而`crontab`则...

    常用 linux 命令手册

    - `nano`:简单易用的文本编辑器,适合初学者。 - `cat`:查看文件内容,`more`和`less`则支持分页查看。 3. 文件搜索: - `grep`:搜索包含特定字符串的行。 - `find`:根据文件名、时间戳、大小等属性查找...

    解决nohup执行python程序log文件写入不及时的问题

    在日常开发工作中,经常会遇到需要在Linux环境下使用`nohup`命令来后台执行Python脚本的情况。这样的操作可以让我们在关闭终端或者断开SSH连接后,依然能够让脚本继续运行。为了监控脚本的运行状态,通常会将标准...

    Linux命令大全包含各种命令,并且分类查找方便

    5. **进程管理**:`ps`列出当前系统中的进程,`kill`发送信号终止进程,`killall`按名字结束所有进程,`nohup`让命令在后台运行不受退出终端影响。 6. **网络和I/O操作**:`ping`测试网络连通性,`netstat`查看网络...

    linux 命令英文全称

    nohup(No Hang UP)命令用于在后台运行命令,即使用户退出也不会受到影响。 #### nroff=NewROFF nroff(New Roff)是一个文本格式化工具(text formatting tool)。 #### od=OctalD od(Octal Dumper)命令用于以多种格式...

    UNIX常用命令

    5. **nohup命令**:为了使命令在终端关闭后仍能继续运行,可以使用`nohup`命令。例如:`nohup find . -name abc -print &gt; myfind &`。这确保程序不受终端关闭的影响。 6. **特殊按键**:在命令行操作中,有一些特殊...

    Linux命令大集合

    - `nohup`: 让命令在后台持续运行,即使用户退出。 6. **网络与文件传输** - `ping`: 测试网络连通性。 - `curl`: 从URL获取数据,可用于下载或发送HTTP请求。 - `wget`: 下载文件,尤其适用于批量或离线下载。...

Global site tag (gtag.js) - Google Analytics