【原文】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上传和下载,这样就可以利用这些命令在后台上传和下载文件了。

转载于:https://www.cnblogs.com/ungshow/archive/2009/02/13/1389628.html

【转】用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. SAP PM入门系列27 - IW29 Display Notifications
  2. php short_open_tag asp_tags
  3. ASP.NET MVC 重写RazorViewEngine实现多主题切换
  4. 非线性回归模型(part3)--K近邻
  5. python协程等待执行完成_当循环运行时,如何运行协同程序并等待同步函数的结果?...
  6. java exif 语言编码_Java读取图片EXIF信息的代码
  7. 240多个jquery插件
  8. agile java_《Agile Java》阅读笔记
  9. 程序猿必备的数电知识,快来看看你掌握多少!(建议收藏)
  10. 思科防火墙 ASA 5525-X 双机热备配置
  11. Build-dep linux 知乎,apt-get安装和apt-get build-dep有什么区别?
  12. python zxing 识别条码_Python zxing 库解析(条形码二维码识别)
  13. 无人机斜影(倾斜摄影)数据(OSGB)转 Cesium 3dtile 数据归纳总结以及亲测可用示例
  14. ①编写一个程序,从键盘接收一个字符串,然后按照字符顺序从小到大进行排序,并删除重复的字符。②集合A、B的差集③对分行输入的若干字符串按字典序(由小到大)进行排序并输出。
  15. 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java场地预定平台55nqh
  16. 数据库系统概论实验三——创建及管理数据表
  17. 【个人经历】22届-cs保研历程
  18. “即玩即赚”“从玩到赚”类游戏所面临的问题及方案
  19. 阿里云支持Windows Server 2008操作系统镜像
  20. 根据出生日期计算年龄,精确到日(C++实现)

热门文章

  1. 记sentinel里防止多并发下读取脏数据的操作
  2. SendInput代替了keybd_event
  3. 选择排序(C++版)
  4. linux服务器cuda,cudnn的安装与卸载
  5. xhtml代码 中<pre>元素简单介绍
  6. STL库容器vector at函数
  7. html格式文档结构保存数据库6,freeCAD文档结构
  8. oracle的rank,over partition 使用 和lead
  9. vue路由切换和用location切换url的区别
  10. git add.后回退 代码丢失