进程的基本介绍
1)在 LINUX 中, 每个执行的程序(代码) 都称为一个进程, 每一个进程都分配一个 ID 号;
2)每一个进程, 都会对应一个父进程, 而这个父进程可以复制多个子进程, 例如 www 服务器;
3)每个进程都可能以两种方式存在的: 前台与后台. 所谓前台进程就是用户目前的屏幕上可以进行操作的, 后台进程则是实际在操作, 但由于屏幕上无法看到的进程, 通常使用后台方式执行;
4)一般系统的服务都是以后台进程的方式存在, 而且都会常驻在系统中, 直到关机才才结束;
显示系统执行的进程
- 基本语法
ps [选项]
ps指令也可以不带选项,显示如下:
一般使用下面两个选项:
(1)ps -aux
显示说明:
- USER: 用户名称
- PID: 进程号
- %CPU: 进程占用 CPU 的百分比
- %MEM: 进程占用物理内存的百分比
- VSZ: 进程占用的虚拟内存大小(单位: KB)
- RSS: 进程占用的物理内存大小(单位: KB)
- TT: 终端名称,缩写 .
- STAT: 进程状态, 其中 S-睡眠, s-表示该进程是会话的先导进程, N-表示进程拥有比普通优先级更低的优先级, R-正在运行, D-短期等待, Z-僵死进程, T-被跟踪或者被停止等等
- STARTED: 进程的启动时间
- TIME: CPU 时间, 即进程使用 CPU 的总时间
- COMMAND: 启动进程所用的命令和参数, 如果过长会被截断显示
(2)ps -ef
显示说明:
- UID: 用户 ID
- PID: 进程 ID
- PPID: 父进程 ID
- C: CPU 用于计算执行优先级的因子。 数值越大, 表明进程是 CPU 密集型运算, 执行优先级会降低; 数值越小, 表明进程是 I/O 密集型运算, 执行优先级会提高
- STIME: 进程启动的时间
- TTY: 完整的终端名称
- TIME: CPU 时间
- CMD: 启动进程所用的命令和参数
思考题, 如果我们希望查看 sshd 进程的父进程号是多少, 应该怎样查询 ?
终止进程 kill 和 killall
若是某个进程执行一半需要停止时, 或是已消了很大的系统资源时, 此时可以考虑停止该进程,使用 kill 命令来完成此项任务;
- 基本语法
kill [选项] 进程号 (功能描述: 通过进程号杀死进程)
killall 进程名称 (功能描述: 通过进程名称杀死进程, 也支持通配符, 这在系统因负载过大而变得很慢时很有用)
- 常用选项:
-9 :表示强迫进程立即停止
例子:踢掉某个非法登录用户
查看进程树
- 基本语法
pstree [选项]
- 常用选项
-p 显示进程的 PID
-u 显示进程的所属用户
服务(Service)管理
服务(service) 本质就是进程, 但是是运行在后台的, 通常都会监听某个端口, 等待其它程序的请求, 比如(mysql , sshd 防火墙等), 因此又称为守护进程;
服务管理指令
service 服务名 [start | stop | restart | reload | status]
在 CentOS7.0 后 不再使用 service ,而是 systemctl
例子如下:查看当前防火墙的状况, 关闭防火墙和重启防火墙
这种方式只是临时生效, 当重启系统后, 还是回归以前对服务的设置;如果希望设置某个服务自启动或关闭永久生效, 要使用 chkconfig 指令;
chkconfig 指令
通过 chkconfig 命令可以给每个服务的各个运行级别设置自启动/关闭;
- 基本语法
1) 查看服务 chkconfig --list|grep xxx
2) chkconfig 服务名 --list
3)修改某个服务在某个运行级别下是否自启动
chkconfig --level 5 服务名 on/off
例子如下:
在所有运行级别下, 关闭防火墙
chkconfig iptables off
在所有运行级别下, 开启防火墙
bash> chkconfig iptables on
使用细节:chkconfig 重新设置服务后自启动或关闭, 需要重启机器 reboot 才能生效
动态监控进程
- 基本语法
top [选项]
top 与 ps 命令很相似。 它们都用来显示正在执行的进程。 Top 与 ps 最大的不同之处, 在于 top 在执行一段时间可以更新正在运行的的进程;
- 选项说明
- 交互操作说明
例子:监视特定用户
top:输入此命令,按回车键,查看执行的进程。
u:然后输入“u”回车,再输入用户名,即可