在Linux中,每个执行的程序都称为一个进程,每一个进程都分配一个ID号(PID:进程号)。
每个进程都可能以两种方式存在:前台与后台,所谓前台进程就是用户目前的屏幕上可以进行操作的;后台进程则是实际在操作,屏幕上无法看到的进程,通常使用后台方式执行。
一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中,直到关机才结束。
1、显示系统执行的进程
ps命令是用来查看目前系统中,有哪些正在执行,以及它们执行的状况,可以不加任何参数。
ps -a:显示当前终端的所有进程信息;
ps -u:以用户的格式显示进程信息;
ps -x:显示后台进程运行的参数;
以上三个参数命令可以合并一条,ps -aux | grep xxx
ps显示的信息:
字段 | 说明 |
---|---|
USER | 用户名称 |
PID | 进程识别号 |
%CPU | 进程占用CPU的百分比 |
%MEM | 进程占用物理内存的百分比 |
VSZ | 进程占用的虚拟内存大小(单位:KB) |
RSS | 进程占用的物理内存大小(单位:KB) |
TTY | 终端名称 |
STAT | 进程状态,S-睡眠,s-表示该进程是会话的先导进程,N-表示进程拥有比普通优先级更低的优先级,R-正在运行,D-短期等待,Z-僵死进程,T-被跟踪或被停止 |
STARTED | 进程的启动时间 |
TIME | CPU时间,即此进程所使用CPU的时间 |
COMMAND | 启动进程所用的命令和参数,如果过长会被截断显示 |
ps -ef | grep xxx 以全格式显示当前所有的进程;
-e:显示所有进程;
-f:全格式
例如:查看sshd 的所有进程信息:ps -ef | grep sshd
2、终止进程kill和killall
若是某个进程执行一半需要停止时,或是已消耗很大的系统资源时,可以考虑停止该进程,可用kill命令来完成此项任务。
kill [选项] 进程号 通过进程号杀死/终止进程;
killall 进程名称 通过进程名杀死/终止进程,包括子进程,也支持通配符,在系统因负载过大而变得很慢时很有用;
-9:表示强迫进程立即停止;
3、查看进程树pstree
pstree [选项] 可以更加直观的来查看进程信息;
-p:显示进程的PID;
-u:显示进程的所属用户;
4、服务(service)管理
服务(service)本质就是进程,是运行在后台的,通常会监听某个端口,等待其它程序的请求,比如(mysqld、sshd、防火墙等),我们又称为守护进程。
service 服务名 [start | stop | restart | reload | status];
在CentOS7.0后,很多服务不再使用service,而改为systemctl;
service命令管理的服务在/etc/init.d中查看;
ls -l /etc/init.d 显示有限的服务
setup 显示所有的服务
systemctl管理命令
systemctl [start | stop | restart | status] 服务名
systemctl命令管理的服务在/usr/lib/systemd/system中查看;
systemctl设置服务器的自启动状态:
- systemctl list-unit-files [| grep 服务名] 查看服务开机启动状态,grep可以进行过滤;
- systemctl enable 服务名 设置服务开机启动
- systemctl disable 服务名 关闭服务开机启动
- systemctl is-enabled 服务名 查询某个服务是否是自启动
服务的运行级别(runlevel)
Linux系统有7中运行级别(runlevel):常用的是级别3和5
运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动;
运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登录;
运行级别2:多用户状态(没有NFS),不支持网络;
运行级别3:完成的多用户状态(有NFS),登录后进入控制台命令行模式;
运行级别4:系统未使用,保留;
运行级别5:X11控制台,登录后进入图形GUI模式;
运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动;
开机流程说明:
CentOS7以后运行级别说明:
在/etc/initab进行了简化:
multi-user.target:analogous to runlevel 3 运行级别3
graphical.target:analogous torunlevel 5 运行级别5
systemctl get-default 查看当前运行级别
systemctl set-default xxx.target 设置运行级别
chkconfig命令——通过chkconfig命令,可以给服务的各个运行级别设置自启动/关闭,chkconfig命令管理的服务在/etc/init.d中查看;注意:CentOS7.0后,很多服务使用systemctl管理;
chkconfig —list [| grep xxx] 查看chkconfig命令管理的服务;
chkconfig 服务名 —list 查看指定服务;
chkconfig —level 5 服务名 on/off 将某个服务在运行级别5中设置自启动或者关闭自启动;
注意:chkconfig新设置服务自启动或关闭,需要重启机器生效。打开或关闭指定端口
在生产环境,需要将服务器的防火墙打开,如果防火墙打开,那么外部请求数据报就不能跟服务器监听端口通信,这时,需要打开指定的端口;比如80、22、8080等。
firewall命令
打开端口:firewall-cmd —permanent —add-port=端口号/协议
关闭端口:firewall-cmd —permanent —remove-port=端口号/协议
重新载入才能生效:firewall-cmd —reload
查询端口是否开发:firewall-cmd —query-port=端口号/协议5、动态监控进程
top命令与ps命令相似,都是用来显示正在执行的进程;top与ps最大的不同之处在于top在执行一般时间可以更新正在运行的进程。
top [选项]
-d 秒数:指定top命令每隔几秒更新,默认是3秒;
-i:使top不显示任何闲置或者僵死进程;
-p:通过指定监控进程ID来指定监控某个进程的状态;
交互操作说明:
P 以CPU使用率排序,默认就是此项;
M 以内存使用率排序;
N 以PID排序;
q 退出top;
u 监控指定的用户;输入top——回车,查看执行的进程——输入u——回车,输入用户名,即可监控指定用户名的进程;
k 终止指定的进程;输入top——回车,查看执行的进程——输入k——回车,输入要结束的进程ID号,即终止指定的进程;6、监控网络状态
查看系统网络状态命令:netstat [选项]
-an 按一定顺序排列输出;
-p 显示哪个进程在调用;
例:查看服务名为sshd的服务信息:netstat -anp | grep sshd