文档章节

后台运行程序:nohup 与 & 区别

SibylY
 SibylY
发布于 2016/04/20 18:35
字数 983
阅读 207
收藏 18

&方式:

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

nohup方式:

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

         nohup /root/start.sh & 

          在shell中回车后提示: 

          [~]$ appending output to nohup.out 

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

nohup问题:

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

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

附:nohup命令参考 

nohup 命令 

  用途:不挂断地运行命令,Run COMMAND, ignoring hangup signals.。 

The SIGHUP (“hang-up”) signal is used to report that the user’s terminal is disconnected, perhaps because a network or telephone connection was broken. 

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

© 著作权归作者所有

共有 人打赏支持
SibylY
粉丝 29
博文 433
码字总数 353654
作品 0
海淀
程序员
私信 提问
ssh 关闭后仍保持当前运行的进程

ssh 关闭后仍保持当前运行的进程 由于各种原因,需要通过ssh登录linux或者unix主机,很多时候我们需要通过ssh的终端启动一 些服务或者运行一些程序,但是默认情况下,当我们关闭ssh终端连接,...

今幕明
2014/11/06
0
1
nohup和&的区别

nohup是永久执行 &是指在后台运行 运行 nohup --help Run COMMAND, ignoring hangup signals. 可以看到是“运行命令,忽略挂起信号” 就是指,用nohup运行命令可以使命令永久的执行下去,和用...

akongo
2017/09/13
0
0
nohup和&的区别

nohup是永久执行 &是指在后台运行 运行 nohup --help Run COMMAND, ignoring hangup signals. 可以看到是“运行命令,忽略挂起信号” 就是指,用nohup运行命令可以使命令永久的执行下去,和用...

akongo
2017/09/13
0
0
Solaris系统中将进程转入后台运行的方法

Solaris系统中将进程转入后台运行的方法 问题描述: 在solaris系统中将进程转入后台运行 解决方法: 在solaris中将进程转入后台运行分两种情况,一种是进程尚未运行,在初始运行进程时就转入...

Adairs
2016/03/10
11
0
使用putty远程连接linux防止关闭putty程序就停止

如题: 有时候我们使用putty连接linux的时候执行某个命令运行程序的时候,关闭putty就会出现应用程序也关闭的情况;这里建议就使用如下命令 nohup youcommand &(&可加可不加) 这个时候默认会...

零度的魚
2016/12/06
19
0

没有更多内容

加载失败,请刷新页面

加载更多

MySQL学习笔记之二

数据库的操作总结就是:增删改查(CURD),今天记录一下基础的检索查询工作。 检索MySQL 1.查询表中所有的记录 mysql> select * from apps;+----+------------+-----------------------+------...

凌宇之蓝
23分钟前
0
0
PaddlePaddle-GitHub的正确打开姿势

GitHub是一个面向开源及私有软件项目的托管平台、也是项目版本管理工具,会使用它是程序员入门的必备技能。PaddlePaddle也不例外,所有的源码及项目进展都在GitHub上开源公布。但对于刚入门写...

深度学习之路
23分钟前
0
0
最强NLP模型BERT可视化学习

摘要: 最强NLP模型谷歌BERT狂破11项纪录,全面超越人类,本文通过可视化带你直观了解它。 2018年是自然语言处理(Natural Language Processing, NLP)领域的转折点,一系列深度学习模型在智...

阿里云官方博客
30分钟前
1
0
导出功能

public void downloadD(HttpServletRequest request, HttpServletResponse res,String contractName, String contractPath) throws IOException {// FileAttach fileAttach = fileA......

卖星星的小矮人
34分钟前
0
0
gradle 打包可执行jar包

group 'android.com'version '1.0-SNAPSHOT'apply plugin: 'java'sourceCompatibility = 1.8repositories { mavenCentral()}jar { manifest { attributes ('Main-......

zdglf
45分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部