Linux如何从命令行卡死的进程中退出?
Linux如何从命令行卡死的进程中退出?
不知道大家在使用Linux的时候,会不会遇到一些命令,有可能卡顿,有可能执行时间过长(比如使用 find 查找某个文件),这个时候我不想继续执行这个命令了,说来惭愧,我之前一直使用Ctrl+Z去终止这个命令,今天才知道,这样有很大的问题!
信号简介
一个进程在运行的时候,是能够接受内核发送的信号的,并且对这个信号做出自己的默认行为(没有被修改的话),我列举一下常见的信号列表:
先看一下信号9,我们熟知的kill -9 <进程号>,就是让内核发送给进程终止信号,进程接收以后就会终止。
同理,我们也可以使用键盘发送信号 ,Ctrl + Z发送的信号只是挂起这个进程,Ctrl + C才是终止。这意味着,使用Ctrl + Z从终端退出的进程,并没有被释放
实验
接下来通过两个实验,看看Ctrl + Z(挂起)和Ctrl + C(停止)的区别。
find 查找文件
我们使用find命令从home目录查找某个文件,然后分别使用Ctrl + Z(挂起)和Ctrl + C(停止),看看他们的区别。
Ctrl + Z
运行find命令后,使用ctrl +Z 退出

此时使用
ps -t显示当前正在运行的进程的信息:
可以发现进程还存在着。
Ctrl + C
运行find命令后,使用ctrl +C

此时可以发现进程被彻底关闭了。
其实这种情况还是好的一种情况,因为本质上shell终端也是一个进程,在shell终端里使用命令,相当于创建终端的子进程,当终端(父进程)被关闭时,其子进程也会被关闭(大部分时候)。对于上面的情况,当我们关闭shell命令行时,find进程也会被关闭。
但是,这也只是大部分情况,也可能有一些子进程即使在父进程被关闭之后也不会被关闭,而是一直被挂起!
端口占用
在系统开启一个进程,这个进程会监听某个端口:

Ctrl + Z
在这之后,即使关闭终端,56868进程也没有被释放。

上图是在一个新的终端里使用sudo lsof -i :801查看端口的占用,发现这个进程并没有被释放,因此需 要使用kiil -9 56868释放进程。
Ctrl + C

进程被释放,端口也被释放。
所以大家如果不打算继续使用这个被退出的进程,记得使用Ctrl + C退出哦。
更多与Linux信号相关的知识,感兴趣的可以移步:https://www.cnblogs.com/curiositywang/p/17994774
Linux如何从命令行卡死的进程中退出?的更多相关文章
- Docker命令行与守护进程如何交互?
译者按: Docker是典型的C/S架构,其守护进程(daemon)与命令行(CLI)是通过REST API进行交互的. 原文: Understanding how the Docker Daemon ...
- Linux(CentOS 7)命令行模式安装VMware Tools 详解
本篇文章主要介绍了如何在Linux(CentOS 7)命令行模式安装VMware Tools,具有一定的参考价值,感兴趣的小伙伴们可以参考一下. 本例中为在Linux(以CentOS 7为例)安装VM ...
- 在CMD命令行下关闭进程的命令
转载: [重要]在CMD命令行下关闭进程的命令━━━━━━━━━━━━━━━━━━━━━━━━━━ 方法一: 在"运行"中输入:ntsd -c q -pn 程序名字(在MS-Dos ...
- mysql命令行的导入导出sql,txt,excel(都在linux或windows命令行操作)(转自筑梦悠然)
原文链接https://blog.csdn.net/wuhuagu_wuhuaguo/article/details/73805962 Mysql导入导出sql,txt,excel 首先我们通过命令行 ...
- 【转载】Linux系统下命令行连接蓝牙设备 查看查找 蓝牙
Linux系统下命令行连接蓝牙设备 2018年11月26日 10:47:27 Zz笑对一切 阅读数:741 1.打开系统蓝牙 sudo service bluetooth start 1 进入bl ...
- 在linux下用命令行编译 java的eclipse项目
由于jdk的版本问题导致在windows上编译打包好的jar包放在linux服务器上运行的时候出现一点小异常,所以决定在linux上进行一次项目编译,这有两个选择1.在相同的linux环境下安装lin ...
- Mac OSX系统、Linux、Windows命令行教程
目录 Mac OSX系统.Linux.Windows命令行教程 一.各系统终端的使用方法 二.各系统命令的功能 Mac OSX系统.Linux.Windows命令行教程 用你的终端做一些事情 (com ...
- 在Linux主机使用命令行批量删除harbor镜像
在Linux主机使用命令行批量删除harbor镜像 脚本使用说明: 此脚本不是万能脚本,根据自身环境要调整很多 能用harbor的域名就不要用IP 脚本前半部分可以套用,后半部分需一步一步试错,结合 ...
- [转帖]如何在Linux上使用命令行查看硬件信息
如何在Linux上使用命令行查看硬件信息 时间:2016-01-13 作者:admin 分类:新手入门 阅读:126次 http://embeddedlinux.org.cn/emb-linux/ ...
- 在Linux下使用命令行打印文件
近期需要将数学笔记打印出来复习,才发现Linux KDE环境下的默认PDF软件Okular根本无法将我在GoodNotes B5大小的页面写下的内容自适应地放大到A4纸上,只能以页面的原始尺寸打印.然 ...
随机推荐
- 优化永不止步:TinyVue v3.20.0 正式发布,更美观的官网UI,更友好的文档搜索,更强大的主题配置能力~
你好,我是 Kagol,个人公众号:前端开源星球. 我们非常高兴地宣布,2024年12月4日,TinyVue 发布了 v3.20.0 . 本次 3.20.0 版本主要有以下重大变更: OpenTiny ...
- JVM:java虚拟机栈
- oracle使用存储过程返回游标实现报表查询
最近在oracle中通过存储过程实现一个报表查询,查询涉及到数据计算这里使用了临时表和存储过程实现输出查询,java接受游标变量返回结果集 第一步.创建统计使用的临时表 CREATE GLOBAL T ...
- Nodify学习 三:连接器
前置 连接概述 连接是由两个点之间创建的.Source和Target依赖属性是Point类型,通常绑定到连接器的Anchor点. 基本连接 库中所有连接的基类是BaseConnection,它派生自S ...
- 数据库中的WITH temp_a 类似临时表的使用-CTE表达式
个人随笔记录 当一个表的数据量过大时,在字段没有索引的情况下,查询的效率通常都会比较慢,如何能在不改变当前表结构的情况下让查询效率提升呢? 在一次偶然的巧合中看见同事使用了一个未见过语句,后面通过百度 ...
- Recent 做题记录(重写)
重构. 2023.9 CF922D 考虑交换法即可.Livshits-Kladov 定理. CF1528C 第一棵树上是一条链:第二棵树上使用数据结构维护贪心(小的区间比大的更优:树上具有包含/无交性 ...
- Mac安装Prometheus + Grafana
一.安装Prometheus 1.下载安装 brew install prometheus 2.安装路径 /opt/homebrew/Cellar/prometheus/3.1.0 3.修改配置文件 ...
- Iceberg v2表写入和微批治理冲突,如何保证治理准确性
一.背景 微批治理任务分多个job治理一张表,还有一个Flink程序每5分钟一次写入iceberg表,如治理任务划分了20个job治理一张表,在治理期间存在新的数据更新,如何保证治理准确性 二.治理时 ...
- 一文掌握DeepSeek本地部署+Page Assist浏览器插件+C#接口调用+局域网访问!全攻略来了!
大家好,我是编程乐趣. DeepSeek大火,网络上也看到很多人分享本地部署心得.但想要更细了解,还是要自己本地部署一次. 我这次部署目标,就是在局域网服务器部署,并让局域网其他电脑可以直接访问. 选 ...
- [CF1981E] Turtle and Intersected Segments 题解
好题好题. 难点在建图,因为图的边数将会决定最小生成树的时间复杂度.我们肯定希望能够只建 \(O(n)\) 级别的边,这样时间复杂度就可以做到 \(O(n\log n)\). 观察到当 \(i,j,k ...