Linux进程管理
1.进程的基本介绍
1)在 LINUX 中, 每个执行的程序(代码) 都称为一个进程。 每一个进程都分配一个 ID 号。
2)每一个进程, 都会对应一个父进程, 而这个父进程可以复制多个子进程。 例如 www 服务器。
3)每个进程都可能以两种方式存在的。 前台与后台, 所谓前台进程就是用户目前的屏幕上可以进行操作的。 后台进程则是实际在操作, 但由于屏幕上无法看到的进程, 通常使用后台方式执行。
4)一般系统的服务都是以后台进程的方式存在, 而且都会常驻在系统中。 直到关机才才结束。
2.显示系统执行的进程-ps
2.1 基本介绍
基本语法:
ps aux | grep xxx (功能描述:查看系统中所有进程)
ps -ef | grep xxx (功能描述:可以查看子父进程之间的关系)
ps命令是用来查看目前系统中,有哪些正在执行,以及它们执行的状况。
- 可以不加任何参数
- 一般来说使用的参数是 ps -aux
参数 | 作用 |
---|---|
ps -a | 显示当前终端所有进程 |
ps -u | 以用户的格式显示信息 |
ps -x | 显示后天进程运行的参数 |
2.2 ps -aux指令:
ps -aux | more (功能描述:分页查看系统进程信息)
ps指令详解
1)指令:
ps –aux | grep xxx
2)进程信息说明
•System V 展示风格
•USER: 用户名称
•PID: 进程号
•%CPU: 进程占用 CPU 的百分比
•%MEM: 进程占用物理内存的百分比
•VSZ: 进程占用的虚拟内存大小(单位: KB)
•RSS: 进程占用的物理内存大小(单位: KB)
•TT: 终端名称,缩写 .
•STAT: 进程状态, 其中
- S-睡眠, s-表示该进程是会话的先导进程,
- N-表示进程拥有比普通优先级更低的优先级,
- R-正在运行,
- D-短期等待,
- Z-僵死进程,
- T-被跟踪或者被停止等等
•STARTED: 进程的启动时间
•TIME: CPU 时间, 即进程使用 CPU 的总时间
•COMMAND: 启动进程所用的命令和参数, 如果过长会被截断显示
2.3 ps -ef 指令
ps -ef 以全格式显示当前所有的进程, 查看进程的父进程
ps -ef | grep xxx
•-e 显示所有进程。
•-f 全格式
•UID: 用户 ID
•PID: 进程 ID
•PPID: 父进程 ID
•C: CPU 用于计算执行优先级的因子。 数值越大, 表明进程是 CPU 密集型运算, 执行优先级会降低; 数值越小, 表明进程是 I/O 密集型运算, 执行优先级会提高
•STIME: 进程启动的时间
•TTY: 完整的终端名称,即该进程是在哪个终端中运行的
- tty1-tty7代表本地控制台终端;tty1-tty6是本地的字符界面终端;tty7是图形终端;pts/0-255代表虚拟终端
•TIME: CPU 时间
•CMD: 启动进程所用的命令和参数
经验技巧
- 如果想查看进程的CPU占用率和内存占用率,可以使用aux;
- 如果想查看进程的父进程ID可以使用ef;
思考题, 如果我们希望查看 sshd 进程的父进程号是多少, 应该怎样查询 ?
3.终止进程-kill \ killall
1.介绍:
若是某个进程执行一半需要停止时, 或是已消了很大的系统资源时, 此时可以考虑停止该进程。使用 kill 命令来完成此项任务。
2.基本语法:
kill [选项] 进程号(功能描述: 通过进程号杀死进程)
killall 进程名称 (功能描述: 通过进程名称杀死进程, 也支持通配符, 这在系统因负载过大而变得很慢时很有用)
3.常用选项:
- -9 :表示强迫进程立即停止
4.最佳实践:
案例 1: 踢掉某个非法登录用户
案例 2: 终止远程登录服务 sshd, 在适当时候再次重启 sshd 服务
案例 3: 终止多个 gedit 编辑器 【killall , 通过进程名称来终止进程】
案例 4: 强制杀掉一个终端
kill -9 4099
4.查看进程树-pstree
1.基本语法:
pstree [选项] (可以更加直观的来看进程信息)
2.常用选项:
- -p :显示进程的 PID
- -u :显示进程的所属用户
3.应用实例:
案例 1: 请你树状的形式显示进程的 pid
- pstree -p
案例 2: 请你树状的形式进程的用户 id
- pstree -u
5.服务管理-service / systemctl
1.介绍:后台进程/守护进程
服务(service) 本质就是进程, 但是是运行在后台的, 通常都会监听某个端口, 等待其它程序的请求, 比如(mysql , sshd 防火墙等), 因此我们又称为守护进程。 【原理图】
临时后台服务管理指令:service / systemctl
1)CentOs 6:
- service 服务名 start (功能描述:开启服务)
- service 服务名 stop (功能描述:关闭服务)
- service 服务名 restart (功能描述:重新启动服务)
- service 服务名 status (功能描述:查看服务状态)
2)在 CentOS7.0 后 不再使用 service ,而是systemctl(system control)
- systemctl start 服务名 (功能描述:开启服务)
- systemctl stop 服务名 (功能描述:关闭服务)
- systemctl restart 服务名 (功能描述:重新启动服务)
- systemctl status 服务名 (功能描述:查看服务状态)
- systemctl --type service (功能描述:查看正在运行的服务)
3.centos6使用案例:
查看当前防火墙的状况, 关闭防火墙和重启防火墙
可以看到:linux的22号端口是打开的
4.centos7使用案例
(1)查看网络服务的状态
- [root@hadoop100 桌面]#systemctl status network
(2)停止网络服务
- [root@hadoop100 桌面]#systemctl stop network
(3)启动网络服务
- [root@hadoop100 桌面]#systemctl start network
(4)重启网络服务
- [root@hadoop100 桌面]#systemctl restart network
4.细节讨论:
1)关闭或者启用防火墙后,立即生效。 [可以在dos下使用telnet 测试某个端口是否打开]
telnet ip地址 端口号
注意:Windows需要启用TelNet客户端服务,参考博客
https://blog.youkuaiyun.com/F_y_C/article/details/80582177
2)这种方式只是临时生效, 当重启系统后, 还是回归以前对服务的设置。
3)如果希望设置某个服务自启动或关闭永久生效,要使用 chkconfig 指令
设置后台服务的自启配置:chkconfig/systemctl
1.基本语法(CentOS 6)
- chkconfig (功能描述:查看所有服务器自启配置)
- chkconfig 服务名 off (功能描述:关掉指定服务的自动启动)
- chkconfig 服务名 on (功能描述:开启指定服务的自动启动)
- chkconfig 服务名 --list (功能描述:查看服务开机启动状态)
2.基本语法(CentOS 7)
- systemctl list-unit-files (功能描述:查看所有服务器自启配置)
- systemctl disable 服务名 (功能描述:关掉指定服务的自动启动)
- systemctl enable 服务名 (功能描述:开启指定服务的自动启动)
- systemctl is-enabled 服务名(功能描述:查看服务开机启动状态)
3.案例实操
(1)关闭防火墙的自动启动
[root@hadoop100 桌面]#systemctl disable firewalld
(2)开启防火墙的自动启动
[root@hadoop100 桌面]#systemctl enable firewalld
(3)查看防火墙状态
[root@hadoop100桌面]#systemctl is-enabled firewalld
6.查看服务名
方式 1: 使用 setup -> 系统服务 就可以看到。
方式 2: /etc/init.d/服务名称
7.服务的运行级别(runlevel)
1.关于系统的运行级别
1)Linux 系统有 7 种运行级别(runlevel): 常用的是级别 3 和 5
- 运行级别 0: 系统停机状态[关机], 系统默认运行级别不能设为 0, 否则不能正常启动
- 运行级别 1: 单用户工作状态, root 权限, 用于系统维护, 禁止远程登陆【找回丢失密码】
- 运行级别 2: 多用户状态(没有 NFS), 不支持网络
- 运行级别 3: 完全的多用户状态(有 NFS), 登陆后进入控制台命令行模式
- 运行级别 4: 系统未使用, 保留
- 运行级别 5: X11 控制台, 登陆后进入图形 GUI 模式
- 运行级别 6: 系统正常关闭并重启, 默认运行级别不能设为 6, 否则不能正常启动
2)查看或者修改默认级别: vi /etc/inittab
2.开机流程
BIOS:运行开机后自检程序和系统自启动程序
/boot:运行系统引导文件
3.服务的运行级别
每个服务都会设置在各个运行级别下是否自启动。服务的运行级别的查看与修改。使用chkconfig 指令。
4.chkconfig 指令
1)介绍
通过 chkconfig 命令可以给每个服务的各个运行级别设置自启动/关闭
2)基本语法
- a)查看服务 chkconfig --list|grep xxx
- b)chkconfig 服务名 --list
- c)chkconfig --level 5 服务名 on/off
3)应用实例:
- 案例 1: 请显示当前系统所有服务的各个运行级别的运行状态
bash> chkconfig --list - 案例 2 : 请查看 sshd 服务的运行状态
bash> service sshd status - 案例 3: 将 sshd 服务在运行级别 5 下设置为不自动启动, 看看有什么效果?
bash> chkconfig --level 5 sshd off - 案例 4: 当运行级别为 5 时, 关闭防火墙。
bash> chkconfig --level 5 iptables off - 案例 5: 在所有运行级别下, 关闭防火墙
bash> chkconfig iptables off - 案例 6: 在所有运行级别下, 开启防火墙
bash> chkconfig iptables on
4)使用细节
- chkconfig 重新设置服务后自启动或关闭, 需要重启机器 reboot 才能生效.
7.动态监控进程
1.介绍:
top 与 ps 命令很相似。 它们都用来显示正在执行的进程。 Top 与 ps 最大的不同之处, 在于 top 在执行一段时间可以更新正在运行的的进程。
2.基本语法:
top [选项]
3.选项说明
选项 | 功能 |
---|---|
-d | 秒数 指定top命令每隔几秒更新。 默认是3秒在top命令的交互模式当中可以执行的命令 |
-i | 使top不显示任何闲置或者僵死进程。 |
-p | 通过指定监控进程ID,来仅仅监控某个进程的状态。 |
4.top命令下的交互操作说明:
操作 | 功能 |
---|---|
P | 以CPU使用率排序, 默认就是此项 |
M | 以内存的使用率排序 |
N | 以PID排序 |
q | 退出top |
5.应用实例
案例 1.监视特定用户
- top: 输入此命令, 按回车键, 查看执行的进程。
- u: 然后输入“u” 回车, 再输入用户名, 即可
案例 2: 终止指定的进程。
- top: 输入此命令, 按回车键, 查看执行的进程。
- k: 然后输入“k” 回车, 再输入要结束的进程 ID 号
案例 3:指定系统状态更新的时间(每隔 10 秒自动更新, 默认是 3 秒):
bash> top -d 10
8.*查看系统网络情况-netstat
1.基本语法
netstat [选项]
netstat -nltp | grep *** (功能描述:查看网络端口号占用情况)
netstat -anp | more (功能描述:查看该进程网络信息)
2.选项说明
- -an 按一定顺序排列输出
- -n 拒绝显示别名,能显示数字的全部转化成数字
- -l 仅列出有在listen(监听)的服务状态
- -p 显示哪个进程在调用
3.应用案例
1)查看系统所有的网络服务
2)请查看服务名为 sshd 的服务的信息。