当前位置: 首页 > news >正文

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

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。

http://www.jsqmd.com/news/68004/

相关文章:

  • 2025年跨境电商服务商权威推荐榜单:东南亚跨境电商/海外电商/电商开店培训服务商精选
  • 2025年度传感器生产制造商TOP5推荐,勒振传感器口碑出众
  • 2025年重庆五大结构加固补强公司推荐:靠谱的结构加固工程总
  • 2025年北京口碑好的融资顾问排行榜,新测评精选融资顾问公司
  • 【中间件:Redis】2、单线程Redis高并发原理:I/O多路复用+3大优化点(附多线程对比) - 详解
  • 【2025-12-06】连岳摘抄
  • 隆化县都有哪些特产
  • 【2025-12-07】连岳摘抄
  • python3 datetime模块
  • 2025年宁波厂房装修公司综合排名及解析,看哪家实力强
  • 2025年度中国抖音外卖服务商TOP5推荐:斯创全域外卖的售
  • 2025年无机纳米硅磨石厂家权威推荐榜单:现浇磨石‌/无机磨石‌/磨石施工‌‌源头厂家精选
  • 2025年中国五大玻璃钢格栅正规厂家推荐:靠谱厂家有哪些?
  • 剑指offer-47、求1+2+3...+n
  • 2025年北京银行灵活贷款服务五大推荐机构排行榜,看哪家口碑
  • 推荐一个html富文本转成unity富文本的js
  • shell sort排序
  • 阁下 AI 多模型协同能力全解析
  • 2025年热门的铸铁电加热器实力与信誉双榜(权威推荐)
  • 2025年浙江热镀锌钢格板厂家权威推荐榜单:钢格栅板/常规钢格板/热镀锌钢格板源头厂家精选
  • 2025年质量好的真空净油机电加热器厂家最新用户好评榜
  • 2025年比较好的云母绕包电线/硅胶电线厂家推荐及采购指南
  • 2025年比较好的车载点烟器转换器/车载点烟器延长线高口碑厂家推荐(评价高)
  • 2025年比较好的车载点烟器转换器/车载点烟器延长线高口碑厂家推荐(评价高)
  • CG-85C 振弦式土压力计 岩土压力变化及埋设地温度同时监测
  • 详细介绍:Java-泛型
  • 完整教程:徕卡RTC360三维激光扫描仪摔坏故障维修方案
  • 2025年口碑好的车载点烟器/车载点烟器充电线厂家选购全指南(完整版)
  • 2025粗纱头开松机TOP5权威推荐:诚迈科技深度测评指南
  • 2025塑料制袋机品牌TOP5权威推荐:华裕超大号制袋机性能