每日一题:如何查看端口占用及相关命令介绍
今天来讲一个小编实际遇到过的一个面试题,涉及知识点如下: 1、如何查看端口占用情况? 2、如果根据进程号杀死进程? 3、kill 命令详解?-9 有什么作用
实际面试题讲解
面试题回答
首页来解答第一个问题:如何查看端口占用情况,常见的命令有:
ps aux | grep 端口号
lsof -i:端口号
netstat | grep 端口号
接着来说下第二个问题:如何根据进程号杀死进程?命令如下:
kill -9 进程号
最后第三个问题,kill 命令中的 -9 有什么作用?答案要点如下: 1、当执行 kill 命令时,实际上是发送一个信号给操作系统,这里的 9 就是一个信号,它表示强制进程立刻停止运行。程序不能忽略此信号,而未保存的进度将会丢失。 2、我们还可以使用 kill -l 命令查看可使用的信号
知识点分析
首页我们先来说下 kill 命令,当我们执行 kill 命令时,实际上是发送一个信号给操作系统。kill 命令格式:
kill [信号] PIDs
[]表示可选
我们使用:
kill -l
可以列出所有可使用用的信号列表,我们重点要掌握 SIGTERM (15) 和 SIGKILL (9) 这两个信号即可。这两个信号表示含义如下:
SIGTERM (15):它请求当前进程停止运行,但它是可以被忽略的,也就是说它有时间来保存进程并释放资源,简单来说,进程不是被强制停止的,是以一种较为优雅的方式关闭掉的。它是 kill 命令默认的信号,即当我们不传参数时
SIGKILL (9):显然,它是与上面那个信号相反的,它是不能被忽略的,会强制进程关闭。
需要注意的是,我们既可以使用 SIGKILL 这种规定的字符来操作命令,也可以使用数字。即下面两个命令是等价的:
kill SIGKILL 进程号
kill -9 进程号
其他常见的几种信号如下:
信号符号 |
对应数字 |
含义 |
---|---|---|
HUB |
1 |
终端断线 |
INT |
2 |
中断(同 Ctrl + C) |
QUIT |
3 |
退出(同 Ctrl + ) |
TERM |
15 |
终止 |
KILL |
9 |
强制终止 |
CONT |
18 |
继续(与 STOP 相反,fg/bg命令) |
STOP |
19 |
暂停(同 Ctrl + Z) |
由上面我们知道,kill 命令需要接一个进程号,那什么命令可以看到进程号呢?通常 kill 命令会搭配 ps 命令。下面我们来简单说下 ps 命令。
ps 是进程查看器命令,它是 Process Status(并非 PhotoShop)的简称,ps命令用来列出系统中当前运行的那些进程。ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信息,就可以使用top命令。
需要注意的是:ps 命令是当前那个时刻进程状态的快照,并不是实时的,如果想要实时的,可使用 top 命令。
linux上进程有5种状态(重点,也是面试考点):
运行(正在运行或在运行队列中等待) 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号) 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生) 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放) 停止(进程收到SIGSTOP, SIGTSTP, SIGTTIN, SIGTTOU信号后停止运行运行)
ps工具标识进程的5种状态码:
D 不可中断 uninterruptible sleep (usually IO) R 运行 runnable (on run queue) S 中断 sleeping T 停止 traced or stopped Z 僵死 a defunct (”zombie”) process
ps 可以接受很多参数,我们常用的有:
ps -ef
ps aux
通常还会搭配 grep 命令来使用
对于 ps 命令详细介绍,可参考:https://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/ps.html
你点的每个赞,我都认真当成了喜欢
- rpc框架之 avro 学习 2 - 高效的序列化
- rpc框架之HA/负载均衡构架设计
- 使用Docker-Docker for Web Developers(2)
- 打造高效前端工作环境-tmuxinator
- 在Linux Mint上安装node.js和npm
- JS魔法堂:再识Number type
- (cljs/run-at (JSVM. :browser) "搭建刚好可用的开发环境!")
- (cljs/run-at (->JSVM :browser) "语言基础")
- 微博爬虫
- 电话域名受欢迎,微语言融资3000万
- 前端魔法堂——异常不仅仅是try/catch
- (cljs/run-at (JSVM. :all) "一起实现柯里化")
- (cljs/run-at (JSVM. :browser) "简单类型可不简单啊~")
- 前端魔法堂:解秘FOUC
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法