尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

Linux Shell 命令:nohup、、、bg、fg、jobs 总结 - Binge

Linux Shell 命令:nohup、、、bg、fg、jobs 总结 - Binge
📅 发布时间:2026/6/20 18:21:12

nohup (不挂断,但是前台执行)

nohup 是 no hung up 的缩写,意思是不挂断 。
使用 Xshell 等Linux 客户端工具,远程执行 Linux 脚本时,有时候会由于网络问题,导致客户端失去连接,终端断开,脚本运行一半就意外结束了。这种时候,就可以用nohup 指令来运行指令,即使客户端与服务端断开,服务端的脚本仍可继续运行。

nohup 语法格式:
nohup command [arg...]

说明:

  • 终端不能接收任何输入(比如输入命令、换行、打空格等)
  • 标准输出会输出到当前目录的nohup.out 文件
  • 关闭客户端(当前SSH会话)后,命令仍然会运行,不会挂断

例如:
执行 nohup sh test.sh 脚本命令后,终端不能接收任何输入,标准输出会输出到当前目录的nohup.out 文件。即使关闭 xshell 退出后,当前session依然继续运行。

& (后台执行)

&语法格式:
command [arg...] &

说明:

  • 能进行输入操作(比如输入命令、换行、打空格等),即可进行交互输入和输出的操作
  • 标准输出保存到 nohup.out文件中
  • 关闭客户端(当前SSH会话)后,程序会就马上停止

例如:
执行 sh test.sh & 脚本命令后 ,关闭 xshell,脚本程序也立刻停止。

nohup 和 & 一块使用(不挂断,在后台执行)

语法格式:
nohup command [arg...] &

说明:

  • 能进行输入操作(比如输入命令、换行、打空格等),即可进行交互输入和输出的操作
  • 标准输出保存到 nohup.out 中
  • 关闭客户端(当前SSH会话)后命令仍然会运行

例如:
执行 nohup sh test.sh & 命令后,能进行输入操作,标准输出的日志写入到 nohup.out 文件,即使关闭xshell,退出当前session后,脚本命令依然继续运行。

bg和fg - 命令在前台后台之间切换

有时,您运行一个命令却发现它需要更长的时间才能完成。您可以通过按 Ctrl + Z 键然后使用 bg 命令轻松将此类命令发送到后台。按 Ctrl + Z 会停止正在运行的进程,bg 将其转到后台。

jobs 查看所有后台任务的列表

您可以通过在终端中输入jobs来查看所有后台任务的列表。使用fg命令将后台进程调到前台。

[atguigu@hadoop102 ~]$ sh test.sh > a.log
^Z
[1]+  已停止               sh test.sh > a.log
[atguigu@hadoop102 ~]$ bg
[1]+ sh test.sh > a.log &
[atguigu@hadoop102 ~]$ jobs
[1]+  运行中               sh test.sh > a.log &
[atguigu@hadoop102 ~]$

如果多个作业在后台运行,您可以键入 fg,后跟 %n,其中 n 是作业 ID。例如,要将后台作业 2 移至前台,命令为:fg %2

[atguigu@hadoop102 ~]$ fg
sh test.sh > a.log
^Z
[1]+  已停止               sh test.sh > a.log
[atguigu@hadoop102 ~]$ bg
[1]+ sh test.sh > a.log &
[atguigu@hadoop102 ~]$ jobs
[1]+  运行中               sh test.sh > a.log &
[atguigu@hadoop102 ~]$

同样,要终止后台作业,请在终止命令后使用 % 和作业 ID:

kill %2
[atguigu@hadoop102 ~]$ jobs
[1]+  运行中               sh test.sh > a.log &
[atguigu@hadoop102 ~]$ kill %1
[atguigu@hadoop102 ~]$ jobs
[1]+  已终止               sh test.sh > a.log
[atguigu@hadoop102 ~]$ jobs
[atguigu@hadoop102 ~]$

注意:使用 Ctrl + Z 和 bg 命令能够实现 nohup command & 同样的功能。

重定向

上面提到的nohup的日志文件默认名称是 nohup.out ,如果修改日志文件的名称,则用到 重定向 ,符号是 > ,语法格式是

 > logFile

说明:

  • 是重定向的符号。

  • logFile 是日志文件名称,最好是英文、数字。

此时, nohup、 & 、 > 三者一块使用的 语法格式 :

nohup  command >logFile  &

示例:

nohup  start.sh >aa.log  &

说明:执行上面的命令后,可以进行输入,也能在后台运行,运行的日志输出到 aa.log 日志中。

nohup  command >logFile  &

虽然解决输入输出,后台也能运行问题,但是还有一项是 错误信息 无法输出到 日志文件中,要解决这个问题,需要增加命令 2 > file 。

标准输出和错误信息同时使用,语法格式如下:

>logFile1   2 >logFile2

有人会疑问,2 是什么意思?
Linux 标准输入、输出、错误信息的符号

  • 0 表示 stdin (standard input) 标准信息输入 ;
  • 1 表示 stdout (standard output) 标准信息输出 ;
  • 2 表示 stderr (standard error) 错误信息 ;
  • /dev/null表示空设备文件。 如果不想输出任何的日志时,使用此参数 。

再来回顾上面的示例:

>logFile1   2 >logFile2
  • logFile1 :即 1 >logFile1,1是标准信息输出,是默认的,可以省略,logFile1是 日志文件名字。

  • 2 >logFile2 :2 是错误信息,即将 错误信息 输出 到 logFile2 文件中 。

到这时,明白 2 含义了吧!

错误信息 和 标准输出 输出在同一个文件中

如果想把 错误信息 和 标准输出 在同一个文件中 ,使用 2>&1 。 语法如下:

>logFile   2>&1

说明:

  • logFile 表示 标准信息 输出到 logFile 文件中;

  • 2>&1 表示 把 2(错误信息) 重定向, 输出到 1(标准输出) 中 。

两者的共同使用,表示 把 2(错误信息) 、1(标准输出) 都输出到同一个文件(logFile)中。

思考:不想输出日志信息怎么办 ?
提示:/dev/null表示空设备文件。 如果不想输出任何的日志时,使用此参数 。

综合使用(推荐)

综上所述, 功能最全、推荐语法如下:

nohup  command  >logFile   2>&1  &

示例:

nohup  start.sh > mySysLog.log  2>&1   &

说明: 执行命令后,并且将 标准输出(1)、错误信息(2)写入到 mySysLog.log 文件中。

知识扩展
不停止服务,直接清空nohup.out

如果脚本一直运行下去,nohup.out 日志会一直增长,日志但是硬盘容量有限,怎么把日志文件的大小减少 ? 注意,千万别直接删除日志文件,会造成服务无法输出日志,服务异常直接停止运行,这是最严重生产事故。

不停止服务,直接清空nohup.out文件有两种方法:

# 第1种:
cat /dev/null > nohup.out
​
# 第2种:
cp /dev/null nohup.out
只记录警告级别比较高的日志

输出的日志太多,nohup.out 增长特别快,对于不重要的日记,可以不记录,选择只记录警告级别比较高的日志。

# 只输出错误信息到日志文件,其它日志不输出
nohup ./program > /dev/null   2>error.log  &
不想输出日志

不想输出日志,什么日志都不要,只要服务能正常运行就行了。

# 什么日志也不输出
nohup ./program > /dev/null   2>&1   &

ctrl+c、ctrl+z、ctrl+d 区别

ctrl+c 和 ctrl+z 都是中断命令,但是他们的作用却不一样。

  • ctrl+c是强制中断程序的执行,执行后进程将终止。
  • ctrl+z的是将任务中止(暂停的意思),但是此任务并没有结束,他仍然在进程中他只是维持挂起的状态,用户可以使用fg/bg操作继续前台或后台的任务,fg命令重新启动前台被中断的任务,bg命令把被中断的任务放在后台执行。

例如:当你vi一个文件是,如果需要用shell执行别的操作,但是你又不打算关闭vi,因为你得存盘退出,你可以简单的按下ctrl+z,shell会将vi进程挂起~,当你结束了那个shell操作之后,你可以用fg命令继续vi你的文件。

ctrl+d 不是发送信号,而是表示一个特殊的二进制值,表示 EOF。

注:在 shell 中,ctrl+d表示退出当前shell。

作者:Binge
出处:http://www.cnblogs.com/binbingg/
本文版权归作者和博客园共有,转载必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。

相关新闻

  • 2025年重庆五大结构加固补强公司推荐:靠谱的结构加固工程总
  • 2025年北京口碑好的融资顾问排行榜,新测评精选融资顾问公司
  • 【2025-12-06】连岳摘抄

最新新闻

  • 2026年6月评价高的别墅外墙石材/本地石材厂家推荐泌阳县丰源石业,加厚抗冻板材,北方低温户外不开裂不剥落 - 品牌鉴赏师
  • MAC7200微控制器时钟与复位机制深度解析与实战配置
  • 2026年详尽评测:10款好用的降AIGC软件,部分无限免费降AI!必看干货 - 降AI小能手
  • 2026南京品牌首饰保值白皮书,旧款磨损首饰,均按市场实价变现 - 讯息早知道
  • 2026年湘阴车主换轮胎:佳诚轮胎养护中心如何守护每一次出行安全? - 国麟测评
  • 上班族亚健康自救指南:靠谱中式养生调理到底怎么选? - 国麟测评

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号