一:基本介绍

  1. 在 LINUX中,每个执行的程序都称为一个进程。每一个进程都分配一个 ID号 ( pid,进程号)。=>windows => linux
  2. 每个进程都可能以两种方式存在的。前台与后台所谓前台进程就是用户目前的屏幕上可以进行操作的后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行。
  3. 般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才才结束。

image.png

二:显示系统执行的进程

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:启动进程所用的命令和参数,如果过长会被截断显示

image.png

3:应用实例

要求:以全格式显示当前所有的进程,查看进程的父进程。 查看 sshd 的父进程信息 **ps -ef ** 以全格式显示当前素有的进程 -e 显示所有进程(-a是运行中的所有进程) -f 全格式

image.png
image.png
UID:用户 ID
PID:进程 ID
PPID:父进程 ID
C:CPU用于计算执行优先级的因子。数值越大,表明进程是 CPU密集型运算,执行优先级会降低;数值越小,表 明进程是 I/O密集型运算,执行优先级会提高

三:终止进程kill和killall

1:介绍

若是某个进程执行一半需要停止时,或是已消了很大的系统资源时,此时可以考虑停止该进程。使用 kill 命令来完 成此项任务。

2:基本语法

**kill [选项] 进程号** (功能描述:通过进程号杀死/终止进程)
**killall 进程名称** (功能描述:通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用)

3:常用选项

-9 :表示强迫进程like停止

4:最佳实践

首先需要查询进程号,如果直接带进程名,会连带子进程一起终止

  • 案例一:踢掉某个非法登录用户
    • ps -ef | grep sshd (查询该用户的进程号)
    • kill 进程号
  • 案例二:终止远程登录服务sshd,在适当时候再次重启sshd服务

    • ps -ef | grep sshd (查询远程登录的进程号)
    • kill 进程号

      重启服务 service sshd restart systemctl start sshd.service

  • 案例三:终止多个gedit(文本编辑器)

    • killall gedit
  • 案例四:强制终止一个cmd终端

    • kill -9 bash 对应的进程号

      四:查看进程树pstree

      1:基本语法

      **pstree [选项] ** 可以更加直观的来看进程信息

      2:常用选项

      -p : 显示进程的 PID
      -u : 显示进程的所属用户

      3:应用举例

  • 案例 1:请你树状的形式显示进程的 pid

    • pstree -p
  • 案例 2:请你树状的形式进程的用户
    • pstree -u

      五:服务(service)管理

      1:介绍

      服务(service) 本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如(mysqld , sshd 防火墙等),因此我们又称为守护进程,是 Linux 中非常重要的知识点。
      image.png

      找某一个端口,本质就是找端口监听的那一个服务/守护进程

2:service 管理指令

**service 服务名 [start | stop | restart | reload | status]**

在Centos7,0之后,很多服务不再使用service,而是systemctl service 指令管理的服务在 /etc/init.d查看

image.png

3:service 管理指令案例

  • 使用service指令,查看,关闭,启动 network

    • service network stop
    • service network start /restart

      4:查看服务名

  • 方式一:使用setup -> 系统服务 就可以看到全部

image.png

带星号的为开机自启动,按空格添加星号和取消星号

  • 方式二:

    • **ls -l /etc/init.d**

    /etc/init.d 看到 service 指令管理的服务

    5:服务的运行级别

    运行级别 0:系统停机状态,系统默认运行级别不能设为 0,否则不能正常启动
    运行级别 1:单用户工作状态,root 权限,用于系统维护,禁止远程登陆
    运行级别 2:多用户状态(没有NFS),不支持网络
    运行级别 3:完全的多用户状态(有NFS),无界面,登陆后进入控制台命令行模式
    运行级别 4:系统未使用,保留
    运行级别 5:X11 控制台,登陆后进入图形GUI 模式
    运行级别 6:系统正常关闭并重启,默认运行级别不能设为 6,否则不能正常启动

  • 开机流程说明:

image.png

在 /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指令

介绍

  1. 通过过 chkconfig 命令可以给服务的各个运行级别设置自 启动/关闭
  2. 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 运行级别,关闭自启动
    • chkconfig —level 3 network off
    • chkconfig —level 3 network on

      8:systemstl管理指令

      基本语法:
      **systemctl [start | stop | restart | status] 服务名**

      systemctl 指令管理的服务在 /usr/lib/systemd/system 查看

9:systemctl设置服务的自启动状态

**systemctl list-unit-files [ | grep 服务名]**(查看服务开机启动状态, grep 可以进行过滤)
**systemctl enable 服务名** (设置服务开机启动)
**systemctl disable 服务名** (关闭服务开机启动)
**systemctl is-enabled 服务名** (查询某个服务是否是自启动的)

10:应用举例image.png

  • 查看当前防火墙的状况,关闭防火墙和重启防火墙。=> firewalld.service

image.png

  • systemctl status firewalld
  • systemctl stop firewalld
  • systemctl start firewalld

    11:细节讨论

    关闭或者启用防火墙后,立即生效。[telnet 测试 某个端口即可]
    image.png(关了防火墙之后就能访问了)
    这种方式只是临时生效,当重启系统后,还是回归以前对服务的设置。

    如果希望设置某个服务自启动或关闭永久生效,要使用 systemctl [enable|disable] 服务名 。

12:打开或者关闭指定端口

在真正的生产环境,往往需要将防火墙打开,但问题来了,如果我们把防火墙打开,那么外部请求数据包就不能跟 服务器监听端口通讯。这时,需要打开指定的端口。
image.png

13:firewall指令

  1. 打开端口 : **firewall-cmd --permanent --add-port=端口号/协议**
  2. 关闭端口 : **firewall-cmd --permanent --remove-port=端口号/协议**
  3. 重新载入,才能生效 : ** firewall-cmd --reload**
  4. 查询端口是否开放 : **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来仅仅监控某个进程的状态
      image.png

      4:交互操作说明

      | 操作 | 功能 | | —- | —- | | P | 以CPU使用率,默认就是此项 | | M | 以内存的使用率排序 | | N | 以PID排除 | | Q | 退出top |

5:应用实例

  • 案例一:监视特定用户, 比如我们监控 tom用户
    • top:输入此命令,按回车键,查看执行的进程
    • u:输入此命令,按回车键,查看执行的进程
  • 案例 2:终止指定的进程, 比如我们要结束 tom登录
    • top:输入此命令,按回车键,查看执行的进程。
    • k:然后输入“k”回车,再输入要结束的进程 ID号
  • 案例 3:指定系统状态更新的时间(每隔 10 秒自动更新), 默认是 3 秒

    • top -d 10

      七:监控网络状态

      1:查看系统网络情况netstat

      基本语法
      **netstat [选项]**
      选项说明
      -an : 按一定顺序输出
      -p : 显示哪个进程在调用
      应用案例
  • 请查看服务名为sshd的服务的信息

    • netstat -anp | grep sshd

image.png :::info 发送端的端口号是随机的,接收端的端口号是固定的。 :::

2:检测主机连接命令ping

是一种网络检测工具,它主要是用检测远程主机是否正常,或是两部主机间的网线或网卡故障。
如: ping 对方 ip 地址