什么是进程
在linux中每个执行的程序都称为一个进程,每个进程都分配一个ID号(pid进程号)。每个进程都可能以两种方式存在,即前台和后天。前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作,但屏幕上无法看到的进程,通常使用后台的方式执行。
一帮系统的服务都是以后台进程的方式存在的,而且都会常驻在系统中,直到关机才结束。
ps 显示系统执行的进程
ps -aux
System v显示风格
- USER:用户名称
- PID:进程号
- %CPU:进程占用CPU的百分比
- %MEN:进程占用物理内存的百分比
- VSZ:进程占用的虚拟内存大小(KB)
- RSS:进程占用的物理内存大小(KB)
- TTY:终端名称,缩写
- STAT:进程状态,其中S-表示睡眠,s-表示该进程是会话的先导进程,N-表示进程拥有比普通优先级更低的优先级,R-表示正在运行,D-表示短期等待,T-被跟踪或者被停止
- STARTED:进程的启动时间
- TIME:CPU时间,即进程使用CPU 的总时间
- COMMAND:启动进程所用的命令和参数,如果过长会被截断显示
ps指令常配合grep使用,如查看sshd服务
ps -ef
以全格式显示当前的所有进程,BSD显示风格
- UID:用户ID
- PID:进程ID
- PPID:父进程ID
- C:CPU用于计算执行优先级的因子,数值越大,表明进程是CPU密集型运算,执行优先级会越低;数值越小,表示进程是I/O密集型运算,执行优先级会越高。
- STIME:进程启动的时间
- TTY:完整的终端名称
- TIME:CPU时间
- CMD:启动进程所用的命令和参数
这两个命令都可以查看进程列表,不同点如下:
- 风格不同。ps -ef是System v显示风格,而ps aux是BSD显示风格。
- ps -ef和ps aux显示内容不一样。
- COMMADN列如果过长,aux会截断显示,而ef不会。
终止进程kill和killall
若是某个进程执行一般需要停止时,或是已消耗了很大的系统资源时,此时可以考虑停止该进程。使用kill命令来完成此项任务。
kill [选项] 进程号(通过进程号杀死进程)
killall 进程名称 (通过进程名称杀死进程,支持通配符,这在系统负载过大而变得很慢时很有用)
常用选项:-9,表示强迫进程立即停止
查看进程树pstree
pstree [选项]
常用选项:
- -p:显示进程PID
- -u:显示进程所属用户
服务(service)管理
service管理指令
服务(service)的本质就是进程,运行在后台,通常都会监听某个端口,等待其他程序的请求,比如(mysqld,sshd,firewall),因此我们又称之为守护进程。
service 服务名 [start | stop | restart | reload | status]
service指令管理的服务可以在/et/init.d
查看
查看服务名
使用setup
查看【系统服务】就可以看到全部。
服务的运行级别
linux系统有7种运行级别,常用的是3和5。centos7以后对运行级别简化成3和5.
- 运行级别3:完全的多用户状态,命令行模式
- 运行级别5:也是多用户,登入后进入图形化模式
chkconfig指令
通过chkconfig命令可以给服务的各个运行级别设置自启动/关闭。chkconfig
指令管理的服务在/etc/init.d查看
chkconfig基本语法
chkconfig --list [ | grep xxx]
chkconfig 服务名 --list
chkconfig --level 5 服务名 on/off
chkconfig重新设置服务后自启动/关闭,需要重启机器reboot才能生效
systemctl管理服务
在centos7以后,很多服务不再使用service
,而是使用systemctl
。
systemctl [start | stop | restart | status] 服务名
systemctl指令管理的服务在/usr/lib/systemd/system
查看
systemctl设置服务的自启动状态
systemctl list-unit-files [ | grep 服务名] (查看服务开机启动状态)
systemctl enable 服务名 (设置服务开机启动)
systemctl disable 服务名 (关闭服务开机启动)
systemctl is-enabled 服务名 (查询某个服务是否是自启动)
打开/关闭指定端口
在生产环境下往往需要打开防火墙,但是如果把防火墙打开,外部请求数据包就不能跟服务器监听端口通讯了。需要我们打开指定端口,比如8080,3306,22.
firewall指令
- 打开端口:
firewall-cmd --permanent --add-port=端口号/协议
- 关闭端口:
firewall-cmd --permanent --remove-port=端口号/协议
- 重新载入,才能生效:
firewall-cmd --reload
- 查询端口是否开放:
firewall-cmd --query-port=端口/协议
动态监控进程-top
top和ps命令类似,都是用来显示正在执行的进程。top和ps最大的不同在于top在执行一段时间可以更新正在运行的进程。
top [选项]
选项说明:
- -d 秒数:指定top命令每隔几秒更新,默认3s
- -i:top不显示闲置或者僵死进程
- -p:通过指定监控进程ID来仅仅监控某个进程状态
交互操作说明:
补充:
- 监控特定用户:输入top按回车,再输入u,最后输入用户名即可
- 终止指定进程:输入top按回车,再输入k,最后输入进程号
监控网络状态
查看系统网络情况-netstat
netstat [选项]
选项说明:
- -an:按一定顺序排列输出
- -p:显示哪个进程在调用