文章目录

  • 1. 任务放入后台执行
  • 2. ctrl+z、ctrl+c和ctrl+d,exit
    • 2.1 基本认识
    • 2.2 Unix的Signal
    • 2.3 ctrl+D和exit
  • 3. 其他

1. 任务放入后台执行

  • ctrl+z 挂起进程并放入后台
  • jobs 显示当前暂停的进程
  • bg %N 使第N个任务在后台运行(%前有空格)
  • fg %N 使第N个任务在前台运行
      
    默认bg,fg不带%N时表示对最后一个进程操作!

参考: 在LINUX中 用Ctrl+z挂起的命令怎么切回到原任务的命令窗口

2. ctrl+z、ctrl+c和ctrl+d,exit

2.1 基本认识

  • Ctrl+Z通过向进程发送SIGSTOP信号来暂停进程,这个信号不能被程序打断
  • Ctrl+C通过向进程SIGINT信号杀死进程,是可以被程序打断的,所以可以在exiting之前完成本程序的一些清理工作,或者就不退出了。
    • 比如,对jupyter lab执行ctrl+c的时候,还会提示很多关闭kernel的信息,就是在自我清理。
  • 如果暂停一个进程,那么会显示以下信息,提示你,该程序已经被暂停了
    [1]+  Stopped                 yes
    
  • 但是如果kill一个进程,那么除了回到shell的提示之外,不会看到其他别的信息。
  • 暂停一个进程的话,还可以做一些别的事情,比如:
    fg
    

    这个命令会把被暂停的第一个进程再放到前台

  • 如果运行以下命令,则程序暂停后会被放入后台运行,同时程序的输出会被放在TTY中,(关于TTY,我也不太了解,看了一些博客也没看懂:终端、Shell、tty 和控制台(console)有什么区别?)
    bg
    
  • 如果想要杀死一个暂停的程序,不需要先把它调到前台,只需要:
    kill %1  # PID号
    

2.2 Unix的Signal

  • Ctrl-C(在较旧的 Unix 中,DEL)发送一个 INT 信号(“中断”,SIGINT); 默认情况下,这会导致进程终止。
  • Ctrl-Z 发送 TSTP 信号(“终端停止”,SIGTSTP); 默认情况下,这会导致进程暂停执行。 [3]
  • Ctrl-\ 发送退出信号(SIGQUIT); 默认情况下,这会导致进程终止并转储核心。
  • Ctrl-T(并非所有 UNIX 都支持)发送 INFO 信号 (SIGINFO); 默认情况下,如果命令支持,这会导致操作系统显示有关正在运行的命令的信息

参考:

  • What’s different between Ctrl+Z and Ctrl+C in Unix command line?
  • How can I terminate a background process with ctrlz in C?
  • Linux中ctrl-c, ctrl-z, ctrl-d 区别
  • wiki百科:Job control (Unix)
  • wiki百科:C signal handling
  • wiki百科:Signal (IPC)

2.3 ctrl+D和exit

  • Ctrl+D字符(在Unicode编码里,被作为END OF TRANSMISSION。也可以表示为\040x4)是是内核中终端或伪终端驱动程序的 eof 特殊控制字符参数的默认值(更准确地说是附加的 tty 行规则到串行或伪 tty 设备),作用相当于在终端中输入exit后回车。
  • End-of-Transmission character 传输结束字符,(C语言,从命令行接收参数时,默认最后其实应该有一个eof字符,但是后来回车就默认会添加这个eof字符)

参考:

  • Why does Ctrl-D (EOF) exit the shell?

3. 其他

还有一些其他的控制字符组合:

  • ctrl-s 中断控制台输出
  • ctrl-q 恢复控制台输出
  • ctrl-l 清屏

控制字符都是可以通过stty命令更改的,可在终端中输入命令"stty -a"查看终端配置

(base) ~ > stty -a
speed 38400 baud; rows 21; columns 166; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = M-^?; eol2 = M-^?; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V;
discard = ^O; min = 1; time = 0;
-parenb -parodd -cmspar cs8 hupcl -cstopb cread -clocal -crtscts
-ignbrk brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc ixany imaxbel iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke -flusho -extproc

注意,这个是bash中的操作,和python等的其他的CLI区分开,例如:python中断程序执行(不抛出异常)

linux中的ctrl+z和ctrl+c以及exit相关推荐

  1. Linux系统中ctrl+c、 ctrl+z、 ctrl+\ 产生的信号名称

    Linux系统中ctrl+c. ctrl+z. ctrl+\ 产生的信号名称: ctrl+c - SIGINT ctrl+z - SIGTSTP ctrl+\ - SIGQUIT

  2. 如何在Adobe Acrobat中实现像Word/Excel中的Ctrl+Z和Ctrl+Y的撤回还原功能(涉及搜狗输入法热键冲突)

    如何在Adobe Acrobat中实现像Word/Excel中的Ctrl+Z和Ctrl+Y的撤回还原功能(涉及搜狗输入法热键冲突) 在用来看PDF的Adobe Acrobat里面的Ctrl+Z确实是和 ...

  3. linux ctrl z 的区别,linux中ctrl+z和ctrl+c的区别

    在Linux系统中,Ctrl+c和ctrl+z都是中断命令,但是他们的作用却不一样. Ctrl+c是强制中断程序的执行,,进程已经终止 Ctrl+z是将任务中止(暂停的意思). 在这一点上,任务还没有 ...

  4. linux中ctrl加c命令什么意思,Linux命令中Ctrl+z、Ctrl+c和Ctrl+d的区别和使用详解

    Ctrl+c,Ctrl+d,Ctrl+z在Linux中意义 Ctrl+c和ctrl+z都是中断命令,但是他们的作用却不一样. Ctrl+c是强制中断程序的执行. Ctrl+z的是将任务中断,但是此任务 ...

  5. linux中ctrl+z和ctrl+c的区别

    ctrl+c和ctrl+z都是中断命令,但是他们的作用却不一样. ctrl+c强制中断程序 ctrl+z的是将任务中断,挂起的状态, ctrl+c是强制中断程序的执行,而ctrl+z的是将任务中断. ...

  6. linux中ctrl+z 、ctrl+c、 ctrl+d区别

    ctrl+c和ctrl+z都是中断命令,但是他们的作用却不一样.   ctrl+c是强制中断程序的执行,,进程已经终止.   ctrl+z的是将任务中止(暂停的意思),但是此任务并没有结束,他仍然在进 ...

  7. linux 后台任务 前台任务 查看切换终止开始命令 bg、fg、ctrl+z、ctrl+d和ctrl+c 简介

    fg.bg.jobs.&.ctrl + z都是跟系统任务有关的,虽然现在基本上不怎么需要用到这些命令,但学会了也是很实用的 一.& 最经常被用到 这个用在一个命令的最后,可以把这个命令 ...

  8. linux 前后台任务命令 bg、fg、ctrl+z、ctrl+d和ctrl+c 使用

    一.& (常用) & 用在一个命令的最后,使用之后可以把这个命令放到后台执行 例: 二.ctrl + z 将一个前台执行的命令挂起 三.jobs 查看当前有多少在后台运行的命令 job ...

  9. 撤销、反撤销快捷键(Ctrl + z,Ctrl + y)

    撤销.反撤销快捷键 撤销: Ctrl + z 反撤销: Ctrl + y

最新文章

  1. Image Super-Resolution Using Deep Convolutional Networks
  2. Spring Boot 核心知识,深入剖析!
  3. C++快速排序(二)
  4. Apache2.2与Tomcat7集成方案详解
  5. cmake vs qmake
  6. 雷军微博抽奖送的那台蔚来ES6 时隔10个月终于提到车了
  7. Linux(3)--防火墙
  8. qq如何用其他进制登录
  9. Halcon形态学操作、区域处理相关常用API
  10. 关于Mysql修改密码的方法汇总
  11. 洛谷P2280 [HNOI2003] 激光炸弹 [前缀和]
  12. 基于JAVA_JSP电子书下载系统
  13. 快速去除PDF的打开密码和限制(四种方法)
  14. jupyter怎么安装jieba_记录 anaconda安装jieba
  15. Java爬取酷狗音乐歌单
  16. Swift 数组遍历 ForEach .enumerated() makeIterator() indices
  17. 快速幂算法(qwe)
  18. Buuctf rar
  19. 多线程批量检测未注册域名
  20. 点击化学(Click chemistry) 叠氮-PEG4-NHS/Biotin-PEG-N3/Azid/DBCO-EPG-NHS/DBCO-NH2

热门文章

  1. python闰月计算_Python实现150年公历农历换算
  2. 二维条码 QR Code
  3. 从零构建u盘linux,从零开始构建自己的U盘Linux.doc
  4. 第一次穿睡衣直播。。。
  5. 上海银行公积金查询需求
  6. 数字时代下网络安全的重要性
  7. 5 大分区管理器 - 最好的硬盘分区软件
  8. 应聘时被问到「你的期望薪资是多少」,怎样回答才是最合理的呢?
  9. python编程(kivy入门)
  10. 微信小程序----分包