前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Mac】Mac上终端执行Control-C/Control-D/Control-Z的区别

【Mac】Mac上终端执行Control-C/Control-D/Control-Z的区别

作者头像
DDGarfield
发布2022-06-23 19:49:46
1.5K0
发布2022-06-23 19:49:46
举报
文章被收录于专栏:加菲的博客

利用air实现Go程序的实时热更新,在键入air命令后,无意之间按下了ctrl+Z,发现程序好像从终端退出了,但是air的临时文件tmp没有被删除,通过活动监视器也发现进程仍然存活,这是为什么呢?

1.引言

macOS 底层是Darwin ,而这是一种Unix-like的操作系统。在这样的类 Unix 系统中,在前台运行一个长时间的任务的时候,用户就会失去对shell的控制权。这时可以通过 Control-C、Control-D、Control-Z 这几个命令重新拿回 Shell 控制权。但是它们是有差别的。

2.Control-C

中止当前任务,进程被 Kill 掉。

3.Control-D

对于需要从 stdin 输入的应用,如:catmd5,当完成输入的内容之后,使用 Control-D 输入 EOF 标记。

4.Control-Z

将当前任务挂起,放到后台。是吧,只是挂起了,并没有退出。当任务被挂起后,可以在当前终端使用:

代码语言:javascript
复制
jobs
[1] + suspended  air

查看当前shell中所有**挂起(suspended)后台运行(running)**任务。

4.1 bg命令

挂起→后台运行

bg 命令,后面跟 %n,n 是 jobs 命令返回内容的 Job 列的数字。

代码语言:javascript
复制
bg %1
[1] + continued  air
jobs
[1] + running air

4.2 fg命令

进入挂起或者后台运行的进程

fg命令,后面跟 %n,n 是同样是 jobs 命令返回内容的 Job 列的数字。

代码语言:javascript
复制
fg %1
[1] + running air

这时执行ctrl+C

代码语言:javascript
复制
^C

就会杀死这个挂起或者后台运行的进程。

4.3 kill命令

接上

代码语言:javascript
复制
kill %1
  • 如果进程是挂起的:
    • 第一次执行,挂起的进程会变成后台运行
    • 再执行一次命令,才会kill杀掉进程
  • 如果进程已然是后台运行:则会直接kill杀掉进程

------------------- End -------------------

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-06-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 加菲的博客 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.引言
  • 2.Control-C
  • 3.Control-D
  • 4.Control-Z
    • 4.1 bg命令
      • 4.2 fg命令
        • 4.3 kill命令
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档