一、进程的基本介绍
- 在LINUX中,每个执行的**程序(代码)**都称为一个进程。每一个进程都分配一个ID号。
- 每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程。
- 每个进程都可能以两种方式存在的。前台与后台,所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行。
- 一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才才结束。
二、常用命令
ps命令 用来显示进程的状态通常会配合管道符一起使用
ps [选项]
常用选项
-a 显示当前终端的所有进程信息
-u 以用户的格式显示进程信息
-x 显示后台进程运行的参数
-e 显示所有进程
-f 全格式,显示UID,PPIP,C与STIME栏位
# 常用组合
ps -aux
ps -ef
2.1、ps -aux 命令
- USER:用户名称
- PID:进程号
- %CPU:进程占用CPU的百分比
- %MEM:进程占用物理内存的百分比
- VSZ:进程占用的虚拟内存大小(单位:KB)
- RSS:进程占用的物理内存大小(单位:KB)
- TTY:终端名称缩写
- STAT:进程状态,其中S-睡眠,s-表示该进程是会话的先导进程,N-表示进程拥有比普通优先级更低的优先级,R-正在运行,D-短期等待,Z-僵死进程,T-被跟踪或者被停止等等
- START:进程的启动时间
- TIME:CPU时间,即进程使用CPU的总时间
- COMMAND:启动进程所用的命令和参数
2.2、ps -ef命令
ps -ef # 以全格式显示当前所有的进程,查看进程的父进程。
-e 显示所有进程
-f 全格式,显示UID,PPIP,C与STIME栏位
- UID:用户ID
- PID:进程ID
- PPID:父进程ID
- C:CPU用于计算执行优先级的因子。数值越大,表明进程是CPU密集型运算,执行优先级会降低;数值越小,表明进程是I/O密集型运算,执行优先级会提高。
- STIME:进程启动的时间
- TTY:完整的终端名称
- TIME:CPU时间
- CMD:启动进程所用的命令和参数
ps -ef 和ps -aux 的显示是以两种不同的风格,-ef是以BSD风格显示,-aux是以System V风格展示
2.3、终止进程kill与kill all
- kill正如这个单词的意思一样,就是杀死。linux系统中kill命令用来删除执行中的程序或工作。kill命令可将指定的信号发送给相应的进程或工作。 kill命令默认使用信号为15,用于结束进程或工作。如果进程或工作忽略此信号,则可以使用信号9,强制杀死进程或作业。
kill [选项] [进程号] #杀死进程
常用选项
-l 列出系统支持的信号
-s 指定向进程发送的信号
-a 处理当前进程时不限制命令名和进程号的对应关系
-p 指定kill命令只打印相关进程的进程号,而不发送任何信号
# 强制杀死进程
kill -9 [进程号]
- killall命令使用进程的名称来杀死进程,使用此指令可以杀死一组同名进程。
kill [选项] [进程名称]
常用选项
-e 对长名称进行精确匹配
-l 打印所有已知信号列表
-p 杀死进程所属的进程组
-i 交互式杀死进程,杀死进程前需要进行确认
-r 使用正规表达式匹配要杀死的进程名称
-s 用指定的进程号代替默认信号“SIGTERM”
-u 杀死指定用户的进程
-
pstree命令,Linux系统中pstree命令的英文全称是“process tree”,即将所有行程以树状图显示,树状图将会以 pid (如果有指定) 或是以 init 这个基本行程为根 (root),如果有指定使用者 id,则树状图会只显示该使用者所拥有的行程。
#命令 pstree [选项] 常用选项 -p # 显示当前所有进程的进程号和进程id -u # 显示进程的所属用户 -a #显示每个程序的完整指令,包含路径,参数或是常驻服务的标示 -h #列出树状图时,特别标明现在执行的程序
三、top命令 动态查看进程
top [选项]
常用选项
-d # 改变显示的更新速度 或者在交互模式下按s
-c # 显示完整的进程信息
-n # 更新的次数,完成后将会退出 top
-i # 不显示任何闲置 (idle) 或无用 (zombie) 的行程
-p # 通过制定监控ID来仅仅监控某个进程的状态
交互模式操作说明:
u : 查看指定用户的进程
k: 杀死想要杀死的进程
四、netstat查看系统网络情况
netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。从整体上看,netstat的输出结果可以分为两个部分:一个是Active Internet connections,称为有源TCP连接,其中”Recv-Q”和”Send-Q”指%0A的是接收队列和发送队列。这些数字一般都应该是0。如果不是则表示软件包正在队列中堆积。这种情况只能在非常少的情况见到;另一个是Active UNIX domain sockets,称为有源Unix域套接口(和网络套接字一样,但是只能用于本机通信,性能可以提高一倍)。
Active Internet connections
Active UNIX domain sockets
#netstat命令
-a #显示所有连线中的Socket
-p #显示正在使用Socket的程序识别码和程序名称
-u #显示UDP传输协议的连线状况
-i #显示网络界面信息表单
-n #直接使用IP地址,不通过域名服务器
#显示UDP端口号和使用情况
net -apu
# 显示网卡列表
netstat -i
五、服务管理
服务(service) 本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如(mysql , sshd 防火墙等),因此我们又称为守护进程。对于服务管理指令,centos7之前通常使用命令service。在CentOS7.0后 不再使用service ,而是 systemctl。
Centos7之后从init完全换成了systemd的启动方式,systemd 启动服务的机制主要是通过 systemctl 的这个系统服务管理指令来处理。systemctl在用法上也囊括 service / chkconfig / setup / init 的大部分功能。
#命令格式
systemctl [选项] [服务]
常用选项
-start # 启动服务
-stop # 停止服务
-restart # 重启服务
-enable # 使某服务开机自启
-disable # 关闭某服务开机自启
-status # 查看服务状态
systemctl list-units --type=service # 列举所有已启动服务(unit单元)
关于服务的常用命令
# 查看ip地址
ifconfig
# 查看防火墙的状态
systemctl list-unit-files|grep firewalld.service
systemctl status firewalld.service
#关闭防火墙
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
启动一个服务:systemctl start firewalld.service
关闭一个服务:systemctl stop firewalld.service
重启一个服务:systemctl restart firewalld.service
显示一个服务的状态:systemctl status firewalld.service
在开机时启用一个服务:systemctl enable firewalld.service
在开机时禁用一个服务:systemctl disable firewalld.service
查看服务是否开机启动:systemctl is-enabled firewalld.service
查看已经启动的服务:systemctl list-unit-files|grep enabled
查看防火墙开放的端口:firewall-cmd --list-ports
开启端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
命令含义:
–zone #作用域
–add-port=80/tcp #添加端口,格式为:端口/通讯协议
–permanent #永久生效,没有此参数重启后失效