转自:http://www.einit.com/user1/11/archives/2006/3603.html

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

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

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

nohup /root/start.sh &

在shell中回车后提示:

[~]$ appending output to nohup.out

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

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

咨询红旗Linux工程师后,他也不得其解,在我的终端上执行后,他启动的进程竟然在关闭终端后依然运行。

在第二遍给我演示时,我才发现我和他操作终端时的一个细节不同:他是在当shell中提示了nohup成功后还需要按终端上键盘任意键退回到 shell输入命令窗口,然后通过在shell中输入exit来退出终端;而我是每次在nohup执行成功后直接点关闭程序按钮关闭终端.。所以这时候会 断掉该命令所对应的session,导致nohup对应的进程被通知需要一起shutdown。

这个细节有人和我一样没注意到,所以在这儿记录一下了。

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

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

  使用nohup命令提交作业

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

  nohup command > myout.file 2>&1 &

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

  使用 jobs 查看任务。

  使用 fg %n 关闭。

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

转:用nohup命令让Linux下程序永远在后台执行相关推荐

  1. 【转】用nohup命令让Linux下程序永远在后台执行

     [原文]http://www.einit.com/user1/11/archives/2006/3603.html   Unix/Linux下一般想让某个程序在后台运行,很多都是使用 & 在 ...

  2. nohup命令让Linux程序永远在后台执行

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

  3. linux程序已经在后台运行冻结了_让linux下程序永远后台运行

    今天写了一个后台运行的脚本,发现只要我关终端,脚本也就随之停止了,昨天还不是这样啊?发现,细节之处有所不同,昨天我在运行该脚本之后,在终端shell中用exit命令退出,而今天则是直接关了终端,就这么 ...

  4. Linux下程序时间消耗监控与统计

    良好的计时器可帮助程序开发人员确定程序的性能瓶颈,或对不同算法进行性能比较.但要精确测量程序的运行时间并不容易,因为进程切换.中断.共享的多用户.网络流量.高速缓存访问及转移预测等因素都会对程序计时产 ...

  5. Linux下程序的保护机制(checksec)

    Linux下程序的保护机制 前言 相信很多人,查看程序信息时会用到,checksec这个命令.它会给你返回如下图的结果,但是很多最开始看到的人,很多都看不懂,如果身为小白的我,跟在大佬后面比葫芦画瓢, ...

  6. linux定时执行任务命令,crontab(linux下定时执行任务命令)

    在linux在可以通过在脚本里(列如sh)写如日常需要进行的操作,然后通过crontab定时运行脚本. Linux下的任务调度分为两类,系统任务调度和用户任务调度. 系统任务调度:系统周期性所要执行的 ...

  7. linux下的zz命令,[zz]Linux下压缩命令

    一.Linux下和windows下的压缩文件的几个说明 在Windows下最常见的压缩文件就只有两种,一是,zip,另一个是.rar.可是Linux就不同了,它有.gz..tar.gz.tgz. bz ...

  8. Linux下程序的Profiling工具-性能测试工具GNU gprof

    Linux下程序的Profiling工具 http://blog.chinaunix.net/uid-128922-id-289972.html 我们在写程序,特别是嵌入式程序的时候,通常需要对程序的 ...

  9. Linux下程序崩溃dump时的 core文件的使用方法

    Linux下程序崩溃dump时的 core文件的使用方法 1.在启动程序前执行 ulimit -c unlimited unlimited 表示生成文件的大小限制,也可以修改为自定义的大小,例如: u ...

最新文章

  1. 数据库存储引擎大揭秘,不看不知道这里面的骚操作可真多!
  2. 怎么证明正态分布积分结果为1?I^2是什么意思 (极坐标 分部积分法 雅可比行列式在积分坐标变换中 )
  3. i3wm amxier toggle只关闭不开启问题解决
  4. KubeVela 1.0 :开启可编程式应用平台的未来
  5. linux远程hadoop,远程调试Hadoop
  6. Luogu-P3205-HNOI2010-合唱队
  7. 算法竞赛——归并排序算法
  8. python中魔法函数_02 python中魔法函数
  9. oracle简易数据库搭建,Oracle 10g 手工创建一个最简单的数据库
  10. java 局部变量 for_java-增强的for循环中局部变量的范围
  11. 中专计算机应用基础知识点归纳,《计算机应用基础》各章知识点归纳大全
  12. 使用hue时hive的历史查询记录结果无法下载
  13. 那些到处在说靠信息差、认知差可以挣大钱的人真的能挣很多钱吗?
  14. Mybatis事务失效的几种情况
  15. 服务器XP系统打印机共享设置,windowsxp系统打印机共享设置方法介绍
  16. 麦子学院I2C设备驱动201117
  17. 成果展示 | 大数据应用开发平台DWF
  18. 笔记本加装固态和内存条教程(超详细)
  19. ubuntu服务器pdf文件大小,Ubuntu下的PDF阅读器okular安装使用介绍
  20. 在vue项目中使用阿里云播放器

热门文章

  1. 【django】数据库操作-增 删 改
  2. [How TO]-ubuntu下安装selenium
  3. 查看Linux系统基本信息CPU内存系统负载
  4. 管理系统模板c语言,管理系统c语言
  5. (5)段描述符S位,TYPE域
  6. python windows安装readline
  7. android唤醒屏幕并解锁
  8. 1.5 Map集合:HashMap 和TreeMap 类
  9. Acwing第 3 场周赛【完结】
  10. 实验:交换机生成树协议STP--功能验证