Linux 进程管理
1.进程管理
(1)基本概念
- 在 Linux 中,每个执行的程序(代码)都称为一个进程,每一个进程都被分配一个 ID 号;
- 每一个进程都对应一个父进程,而父进程又可以复制多个子进程;
- 每个进程都可能以两种方式存在—— 前台和后台进程(守护进程)。前台进程就是屏幕上可见可操作的,后台进程则是不可见而实际也在操作的,直到关机才结束;
- 一般系统的服务都是以后台进程的方式存在。
(2)查看系统进程 ps
1)ps (process status):查看当前系统进程执行情况,可以不加任何参数。
ps 【选项】
常用选项
-a:显示当前终端所有进程信息
-u:以用户格式显示进程信息
-x:显示后台进程运行的参数(通常 -aux 组合使用)
-ef:查看父进程(PPID 为父进程 ID)
例:
ps -ef | more (分页查看子进程、父进程)
ps -aux | grep sshd (过滤,查看sshd服务)
ps -aux | more (分页查看)
显示内容:
用户名称 进程ID CPU占有率 内存占有率 占虚拟内存大小 占物理内存大小 终端名称 进程状态 进程启动时间 使用CPU时间 启动进程所用的命令和参数
说明(STAT 进程状态):
S — 睡眠
s — 表示该进程是会话的先导进程
N — 表示进程拥有比普通优先级更低的优先级
R — 正在运行
D — 短期等待
Z — 僵死进程
T — 被跟踪或者被停止…
2)pstree (process status):查看进程树,更加直观。
pstree 【选项】
常用选项
-p:显示进程的 PID
-u:显示进程的所属用户
(3)终止进程 kill
1)kill:结束进程(通过进程 ID 号)。
kill [选项} 进程号
常用选项
-9:强迫进程终止
例(如下图):
kill 3945 踢掉 Tom 用户
kill 2501 关掉远程服务(sshd),不能远程登录 Linux
2)killall:结束进程(通过进程名称)。
killall 进程名
2. 服务管理
服务本质就是一个进程,但都是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如mysql、sshd、防火墙等,因此又称之为守护进程。
(1)服务管理(临时)
1)service(CentOS 6)/ systemctl(CentOS 7):服务管理(指令虽然不一样,但用法是差不多的)(临时生效)。
service 服务名 [start | stop | restart | reload | status](启动、停止、重启、重载、状态)
systemctl [start | stop | restart | reload | status] 服务名
例:
service iptables status(查看防火墙状态,CentOS 7 改成了 firewalld —> systemctl status firewalld)
扩展:
telnet:在 Windows 命令窗口下,你可以输入下面指令,查看对方是否开启了某个端口(如果显示无 telnet 指令,直接左下角搜索 “启用或关闭Windows功能” — “Telnet Client”打对勾)。
telnet ip 端口号
例:telnet Linux ip地址 22(查看 Linux 22 端口是否开启)
(2)查看服务
- 方式一:使用 setup 指令 —> 系统服务(按空格可以选中或取消,Tab 键可以切换按钮)
setup
- 方式二:在目录 /etc/init.d/ 下查看服务名
ls -l /etc/init.d/
(3)服务的运行级别
运行级别在之前的博文已经讲得很细致了,可以跳转此链接阅读:CentOS 6 与 CentOS 7 运行级别详解
开机流程说明:
开机 ——> BIOS ——> /boot ——> init 进程1 ——> 运行级别 ——> 运行级别对应的服务
(4)服务管理(永久)
每个服务在不同的运行级别下,自启动是不一样的,可以用 chkconfig 指令来设置。
chkconfig(CentOS 6):给每个服务的各个运行级别设置自启动/关闭
chkconfig --list
chkconfig --list | grep 服务名(过滤,查看想要的服务)
chkconfig 服务名 --list(同上,和grep 作用一样)
指定运行级别服务开启/关闭
chkconfig --level n(n为运行级别) 服务名 on / off
3. 动态监控进程和网络
(1)监控进程
top:top 与 ps 命令很相似,都用来显示正在执行的进程。top 与 ps 最大的不同之处在于 top 在执行一段时间可以更新正在运行的进程,类似于 Windows 的任务管理器。在 top 命令的交互模式当中可以执行的命令如下
top [选项]
常用选项:
-d 秒数:指定 top 命令每隔几秒更新,默认为 3s。
-i:使 top 不显示任何闲置或僵死进程
-p:通过指定监控进程 ID 仅监控某个进程状态
交互操作说明:
P:以 CPU 使用率排序
M:以内存的使用率排序
N:以 PID 排序
d:再输入更新时间,指定刷新频率
u:再输入用户名,可以查看指定用户进程
k:再输入 PID,可以终止指定进程
h:可以查看更多的交互操作指令
q:退出 top
(2)监控网络情况
netstat:查看网络情况。
netstat [选项]
例:netstat -anp | more
常用选项:
-an:按一定顺序排列输出
-p:显示哪个进程在调用