在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设置服务器的自启动状态:

  1. systemctl list-unit-files [| grep 服务名] 查看服务开机启动状态,grep可以进行过滤;
  2. systemctl enable 服务名 设置服务开机启动
  3. systemctl disable 服务名 关闭服务开机启动
  4. systemctl is-enabled 服务名 查询某个服务是否是自启动
    服务的运行级别(runlevel)
    Linux系统有7中运行级别(runlevel):常用的是级别3和5
    运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动;
    运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登录;
    运行级别2:多用户状态(没有NFS),不支持网络;
    运行级别3:完成的多用户状态(有NFS),登录后进入控制台命令行模式;
    运行级别4:系统未使用,保留;
    运行级别5:X11控制台,登录后进入图形GUI模式;
    运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动;
    开机流程说明:
    Linux学习笔记(十一)进程管理 - 图1
    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