文档章节

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

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

码上生花,ECharts 作品展示赛正式启动!>>>

&方式:

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
粉丝 32
博文 455
码字总数 374019
作品 0
海淀
程序员
私信 提问
加载中
请先登录后再评论。
linux后台执行程序相关命令

linux下我们如果想一个任务或者程序还后台执行可以使用&,实际上linux还提供了其他任务调度的命令。 bg 将一个在后台暂停的命令,变成继续执行 fg 将后台中的命令调至前台继续运行 jobs 查看...

osc_0cqshtia
2019/09/24
1
0
nohop以及后台运行的相关集合

本文参考:https://blog.csdn.net/u011095110/article/details/78666833 1. 后台运行一个命令: & tar -czvf /mnt/aa.tar.gz /data/backup &ctrl+d #退出 才可以,如果直接关闭窗口(就是关闭...

osc_xk1o4tx1
2018/09/07
2
0
如何有效处理nohup日志输出过大问题?

概述 有的时候我们为了让某个程序在后台跑,一般都会用nohup ./xxx & 执行让程序后台运行,假设过了一段时间日志就上G了,如果有问题想要查看日志,显然打开文件是一件很麻烦的事,有什么办法...

osc_y8w65yuq
01/14
5
0
Linux中nohup和&的用法和区别

在Linux执行任务时,如果键入Ctrl+C退出进行其他任务或者关闭当前session当前任务就会终止 要想不让进程停止或者让进程在后台运行,就需要一些命令,nohup和&就是一种非常好的方式 首先以执行...

osc_nhwfplmt
2019/09/23
5
0
nohup命令(Linux终端启动后台运行程序)

nohup指令基本概念: nohup: 不挂断的运行,并没有后台运行功能,用nohup运行命令可以使命令永久执行下去,和用户终端没有关系,断开SSH不影响运行,&是后台运行. nohup 命令运行由 Command参...

osc_tj3vajy0
2019/12/02
7
0

没有更多内容

加载失败,请刷新页面

加载更多

Synchronized底层实现

https://blog.csdn.net/qq_35190492/article/details/106180781

JaneRoad
43分钟前
18
0
解决okhttp无法重用连接的问题

解决okhttp无法重用连接的问题 最近在一个程序中使用okhttp调用http接口。开始时一切正常,但是测试运行一段时间后,okhttp就会报告recv失败。同时在调用端机器上,netstat显示很多套接字是T...

tommwq
58分钟前
11
0
入坑Linux-day15(使用DHCP动态管理主机地址)

一、动态主机配置协议(DHCP) #DHCP是一种基于UDP协议且仅限于在局域网内部使用的网路协议,主要用于大型的局域网环境或者存在较多移动办公设备的局域网环境中,其主要用途是为局域网内部的...

宁生写你
今天
6
0
js canvas 旋转90度的整数倍

为了避免出现黑框 效果如下 根据不同的方向,设置宽高和画笔位置等 <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"/> <title>Title</title> <style> .img ......

阿豪boy
今天
16
0
如何生成随机的字母数字字符串? - How to generate a random alpha-numeric string?

问题: I've been looking for a simple Java algorithm to generate a pseudo-random alpha-numeric string. 我一直在寻找一种简单的 Java算法来生成伪随机的字母数字字符串。 In my situat......

技术盛宴
今天
19
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部