现在的位置: 首页 > 综合 > 正文

使用nohup让程序永远后台运行

2014年09月05日 ⁄ 综合 ⁄ 共 1864字 ⁄ 字号 评论关闭

 

Unix/Linux下一般比如想让某个程序在后台运行,很多都是使用 & 在程序结尾来让程序自动运行。比如我们要运行mysql在后台:

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

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

nohup /root/test.php &

提示:

[1] 54470
[~]$ appending output to nohup.out

嗯,证明运行成功,同时把程序运行的输出信息放到当前目录的 nohup.out 文件中去。

 

附:(nohup命令参考,from: http://www16.boulder.ibm.com/pseries/zh_CN/cmds/aixcmds4/nohup.htm

------------------------------------------------------------------------------------------------------------------------------------------------

nohup 命令

用途

不挂断地运行命令。

语法

nohup CommandArg ... ] [  ]

描述

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

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

退出状态

该命令返回下列出口值:

126 可以查找但不能调用 Command 参数指定的命令。
127 nohup 命令发生错误或不能查找由 Command 参数指定的命令。

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

示例

  1. 要运行注销后后台中的命令,请输入:

     

    $ nohup find / -print &

    输入该命令后,显示如下:

    670
    $ 输出发送到 nohup.out

    进程 ID 号更改为 & (表示“and”的符号)启动的后台进程的 ID 号。消息 输出发送到 nohup.out 通知您来自 find / -print 命令的输出在 nohup.out 文件中。查看这些消息后可以注销,即使 find 命令仍在运行。

  2. 要运行后台中的命令并且把标准输出重定向到一个不同的文件,请输入:

     

    $ nohup find / -print >filenames &

    本例运行 find / -print 命令并且把输出存储到命名为 filenames 的文件中。现在只显示进程 ID 和提示:

    677
    $

    因为 nohup 命令需要片刻时间来启动 Command 参数指定的命令,在注销前请等待。如果太快注销,Command 参数指定的命令可能根本没运行。一旦 Command 参数指定的命令启动,注销就不会对其产生影响。

  3. 要运行不止一条命令,请使用 shell 过程。例如,如果写 shell 过程:

     

    neqn math1 | nroff > fmath1

    且命名它为  nnfmath1 文件,那么可以为 nnfmath1 文件中所有命令运行 nohup 命令,命令为:

    nohup sh nnfmath1
  4. 如果给 nnfmath1 文件分配执行许可权,那么可以通过发出如下命令得到相同的结果:

     

    nohup nnfmath1
  5. 要在后台中运行 nnfmath1 文件,请输入:
    nohup nnfmath1  &
  6. 要在 Korn shell 中运行 nnfmath1 文件,请输入:

     

    nohup ksh nnfmath1

------------------------------------------------------------------------------------------------------------------------------------------------

 

抱歉!评论已关闭.