一:基本介绍
- 在 LINUX中,每个执行的程序都称为一个进程。每一个进程都分配一个 ID号 ( pid,进程号)。=>windows => linux
- 每个进程都可能以两种方式存在的。前台与后台,所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行。
- 一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才才结束。
二:显示系统执行的进程
1:ps详解
ps 命令是用来查看目前系统中,有哪些正在执行,以及它们执行的状况。可以不加任何参数.
基本语法:**ps -aux**
基本选项:
-a : 显示当前终端的所有进程
-u : 以用户的格式显示进程信息
-x : 显示后台进程运行的参数
一般使用时可以配合管道指令: ps -aux | more 分页查看 ps -aux | grep xxx 过滤,单独查看某个进程
2:指令说明
- USER:进程执行用户
- PID:进程号
- %CPU:进程占用 CPU的百分比
- %MEM:进程占用物理内存的百分比
- VSZ:进程占用的虚拟内存大小(单位:KB)
- RSS:进程占用的物理内存大小(单位:KB)
- TT:终端名称,缩写 .
- STAT:进程状态,其中 S-睡眠,s-表示该进程是会话的先导进程,N-表示进程拥有比普通优先级更低的优先级,R正在运行,D-短期等待,Z-僵死进程,T-被跟踪或者被停止等等
- STARTED:进程的启动时间
- COMMAND:启动进程所用的命令和参数,如果过长会被截断显示
3:应用实例
要求:以全格式显示当前所有的进程,查看进程的父进程。 查看 sshd 的父进程信息
**ps -ef **
以全格式显示当前素有的进程 -e 显示所有进程(-a是运行中的所有进程) -f 全格式
UID:用户 ID
PID:进程 ID
PPID:父进程 ID
C:CPU用于计算执行优先级的因子。数值越大,表明进程是 CPU密集型运算,执行优先级会降低;数值越小,表 明进程是 I/O密集型运算,执行优先级会提高
三:终止进程kill和killall
1:介绍
若是某个进程执行一半需要停止时,或是已消了很大的系统资源时,此时可以考虑停止该进程。使用 kill 命令来完 成此项任务。
2:基本语法
**kill [选项] 进程号**
(功能描述:通过进程号杀死/终止进程)**killall 进程名称**
(功能描述:通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用)
3:常用选项
4:最佳实践
首先需要查询进程号,如果直接带进程名,会连带子进程一起终止
- 案例一:踢掉某个非法登录用户
- ps -ef | grep sshd (查询该用户的进程号)
- kill 进程号
案例二:终止远程登录服务sshd,在适当时候再次重启sshd服务
- ps -ef | grep sshd (查询远程登录的进程号)
- kill 进程号
重启服务 service sshd restart systemctl start sshd.service
案例三:终止多个gedit(文本编辑器)
- killall gedit
案例四:强制终止一个cmd终端
案例 1:请你树状的形式显示进程的 pid
- pstree -p
- 案例 2:请你树状的形式进程的用户
2:service 管理指令
**service 服务名 [start | stop | restart | reload | status]**
在Centos7,0之后,很多服务不再使用service,而是systemctl service 指令管理的服务在 /etc/init.d查看
3:service 管理指令案例
使用service指令,查看,关闭,启动 network
方式一:使用setup -> 系统服务 就可以看到全部
带星号的为开机自启动,按空格添加星号和取消星号
方式二:
**ls -l /etc/init.d**
/etc/init.d 看到 service 指令管理的服务
5:服务的运行级别
运行级别 0:系统停机状态,系统默认运行级别不能设为 0,否则不能正常启动
运行级别 1:单用户工作状态,root 权限,用于系统维护,禁止远程登陆
运行级别 2:多用户状态(没有NFS),不支持网络
运行级别 3:完全的多用户状态(有NFS),无界面,登陆后进入控制台命令行模式
运行级别 4:系统未使用,保留
运行级别 5:X11 控制台,登陆后进入图形GUI 模式
运行级别 6:系统正常关闭并重启,默认运行级别不能设为 6,否则不能正常启动开机流程说明:
在 /etc/initab 进行了简化 multi-user.target : analogous to runlevel 3 graphical.target : analogous to runlevel 5
To view current default target, run:
systemctl get-default
To set a default target, run:
systemctl set-default TARGET.target
6:chkconfig指令
介绍
- 通过过 chkconfig 命令可以给服务的各个运行级别设置自 启动/关闭
- chkconfig 指令管理的服务在 /etc/init.d 查看
注意: Centos7.0 后,很多服务使用 systemctl 管理
chkconfig 基本语法
1:查看服务 chkconfig —list [ | grep xxx]
2:**chkconfig 服务名 --list**
3:**chkconfig --level 5 服务名 on/off**
设置某个服务在某个运行级别的自启动 开 / 关
案例演示 :
- _对_network 服务 进行各种操作, 把 network 在 3 运行级别,关闭自启动
9:systemctl设置服务的自启动状态
**systemctl list-unit-files [ | grep 服务名]**
(查看服务开机启动状态, grep 可以进行过滤)**systemctl enable 服务名**
(设置服务开机启动)**systemctl disable 服务名**
(关闭服务开机启动)**systemctl is-enabled 服务名**
(查询某个服务是否是自启动的)
10:应用举例
- 查看当前防火墙的状况,关闭防火墙和重启防火墙。=> firewalld.service
- systemctl status firewalld
- systemctl stop firewalld
- systemctl start firewalld
11:细节讨论
关闭或者启用防火墙后,立即生效。[telnet 测试 某个端口即可]
(关了防火墙之后就能访问了)
这种方式只是临时生效,当重启系统后,还是回归以前对服务的设置。如果希望设置某个服务自启动或关闭永久生效,要使用 systemctl [enable|disable] 服务名 。
12:打开或者关闭指定端口
在真正的生产环境,往往需要将防火墙打开,但问题来了,如果我们把防火墙打开,那么外部请求数据包就不能跟 服务器监听端口通讯。这时,需要打开指定的端口。
13:firewall指令
- 打开端口 :
**firewall-cmd --permanent --add-port=端口号/协议**
- 关闭端口 :
**firewall-cmd --permanent --remove-port=端口号/协议**
- 重新载入,才能生效 :
** firewall-cmd --reload**
- 查询端口是否开放 :
**firewall-cmd --query-port=端口/协议**
:::info 查询端口号及协议:**netstat -anp | more**
:::14:应用案例
- 启动防火墙,测试111端口是否能telnet,不行
- 开放111端口
- firewall-cmd —permanent —add-port=111/tcp ;
- firewall-cmd —reload (重新载入)
- 再次关闭111端口
- firewall-cmd —permanent —remove-port=111/tcp ;
- firewall-cmd —reload
六:动态监控进程
1:介绍
top 与 ps 命令很相似。它们都用来显示正在执行的进程。Top 与 ps 最大的不同之处,在于 top 在执行一段时间可以 更新正在运行的的进程。 :::info 僵死进程:这个进程已经结束了,但是内存还是没有释放。 :::2:基本语法
**top [选项]**
3:选项说明
-d 秒数 : 指定top命令每隔几秒更新,默认是3秒
-i:使top不显示任何闲置或者僵死进程
-p;通过指定监控进程ID来仅仅监控某个进程的状态
4:交互操作说明
| 操作 | 功能 | | —- | —- | | P | 以CPU使用率,默认就是此项 | | M | 以内存的使用率排序 | | N | 以PID排除 | | Q | 退出top |
5:应用实例
- 案例一:监视特定用户, 比如我们监控 tom用户
- top:输入此命令,按回车键,查看执行的进程
- u:输入此命令,按回车键,查看执行的进程
- 案例 2:终止指定的进程, 比如我们要结束 tom登录
- top:输入此命令,按回车键,查看执行的进程。
- k:然后输入“k”回车,再输入要结束的进程 ID号
案例 3:指定系统状态更新的时间(每隔 10 秒自动更新), 默认是 3 秒
请查看服务名为sshd的服务的信息
- netstat -anp | grep sshd
:::info 发送端的端口号是随机的,接收端的端口号是固定的。 :::
2:检测主机连接命令ping
是一种网络检测工具,它主要是用检测远程主机是否正常,或是两部主机间的网线或网卡故障。
如: ping 对方 ip 地址