文档章节

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

SibylY
 SibylY
发布于 2016/04/20 18:35
字数 983
阅读 198
收藏 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
博文 437
码字总数 344084
作品 0
海淀
程序员
私信 提问
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
ssh 关闭后仍保持当前运行的进程

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

今幕明
2014/11/06
0
1
使用nohup让程序在远程主机后台运行

因为我购买的一个国外主机居然开放了Telnet权限,因此我也使用Telnet登录上去玩玩Linux,但发现一关闭窗口就自动和主机断开了,和Windows的终端不一样,所以就上网找啊找,找到了一个从后台一...

laymanxia
2015/06/28
0
0
Linux下使Shell 命令脱离终端在后台运行

你是否遇到过这样的情况:从终端软件登录远程的Linux主机,将一堆很大的文件压缩为一个.tar.gz文件,连续压缩了半个小时还没有完成,这时,突然你断网了,你登录不上远程Linux主机了,那么前...

WolfX
2016/04/08
143
0

没有更多内容

加载失败,请刷新页面

加载更多

MariaDB 服务器在 MySQL Workbench 备份数据的时候出错如何解决

服务器是运行在 MariaDB 10.2 上面的,在使用 MySQL Workbench 出现错误: mysqldump: Couldn't execute 'SELECT COLUMN_NAME, JSON_EXTRACT(HISTOGRAM, '$."number-of-buckets-specified"'......

honeymose
今天
2
0
apache顶级项目(二) - B~C

apache顶级项目(二) - B~C https://www.apache.org/ Bahir Apache Bahir provides extensions to multiple distributed analytic platforms, extending their reach with a diversity of s......

晨猫
今天
6
0
day152-2018-11-19-英语流利阅读

“超级食物”竟然是营销噱头? Daniel 2018-11-19 1.今日导读 近几年来,超级食物 superfoods 开始逐渐走红。不难发现,越来越多的轻食餐厅也在不断推出以超级食物为主打食材的健康料理,像是...

飞鱼说编程
今天
12
0
SpringBoot源码:启动过程分析(二)

接着上篇继续分析 SpringBoot 的启动过程。 SpringBoot的版本为:2.1.0 release,最新版本。 一.时序图 一样的,我们先把时序图贴上来,方便理解: 二.源码分析 回顾一下,前面我们分析到了下...

Jacktanger
昨天
4
0
Apache防盗链配置,Directory访问控制,FilesMatch进行访问控制

防盗链配置 通过限制referer来实现防盗链的功能 配置前,使用curl -e 指定referer [root@test-a test-webroot]# curl -e "http://www.test.com/1.html" -x127.0.0.1:80 "www.test.com/1.jpg......

野雪球
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部