一、监控指定名称的进程脚本

#!/bin/bash
# *********************************
# * 功能:Sehll 脚本模板
# * 作者:王波
# * 联系:wangbo@qq.com
# * 版本:2026-04-19
# *********************************

# 要监控的程序
process_name="nginx"

# 进程启动的命令
start_command="systemctl start $process_name"

# 日志文件路径
log_file="/var/log/process_monitor.log"

# 获取当前时间
date=$(date "+%y-%m-%d %H:%M:%S")

# 检查进程是否存在
function pid_isalive(){
  if ps -aux | grep "$process_name" | grep -v grep> /dev/null
  then
    echo "[$date]: $process_name 存在, pid: " >> "$log_file"
    ps -aux | grep "$process_name" |grep -v grep| tr -s " " | cut -d " " -f2 >> "$log_file"
    echo -e "\n" >> "$log_file"
    echo "[$date]: $process_name 状态信息为: " >> "$log_file"
    ps -aux | grep "$process_name" | grep -v grep >> "$log_file"
    echo -e "\n------------------------" >> "$log_file"
  else
    echo "[$date]: $process_name 进程不存在,正在启动...." >> "$log_file"
    echo -e "\n" >> "log_file"
    $start_command
    sleep 1
    if ps -aux | grep "$process_name" | grep -v grep> /dev/null
    then
      echo "[$date]: $process_name 启动成功" >> "$log_file"
      echo -e "\n------------------------" >> "$log_file"
    else
      echo "[$date]: $process_name 启动失败" >> "$log_file"
      echo -e "\n------------------------" >> "$log_file"
    fi
  fi
}

# 5秒的循环查询
function cycle_five_second(){
  echo "监控$process_name 正在后台执行,详情查看日志文件:$log_file"
  while true;
  do
  pid_isalive
  sleep 5
  done
}

cycle_five_second

  1. 进程存在,则输出信息到/var/log/process_monitor.log里面。
    在这里插入图片描述

  2. 进程如果不存在则重启,并且将日志写入到/var/log/process_monitor.log
    在这里插入图片描述

在这里插入图片描述3.

ps -aux | grep “processname"∣grep−vgrep∣tr−s""∣cut−d""−f2>>"process_name" |grep -v grep| tr -s " " | cut -d " " -f2 >> "processname"∣grepvgreptrs""∣cutd""f2>>"log_file”
ps -aux 查看进程信息
grep “$process_name” 筛选关于nginx的
grep -v grep 排除一下grep本身的进程
tr -s " " 将多的空格合并,方便拿取pid信息
cut -d " " -f2 用空格作为分隔符,拿去第二列的pdi信息。

  1. 配置system服务并且设置为自启动。
  1 [Unit]
  2 description=Process Monitor Script
  3 After=network.targe
  4
  5 [Service]
  6 #执行脚本
  7 ExecStart=/bin/bash /root/PidMonitor.sh
  8 # 自启动
  9 Restart=always
 10
 11 [Install]
 12 WantedBy=multi-user.target

"/etc/systemd/system/PidMonitor.service" 12L, 192B 

在这里插入图片描述

二、周期性任务


# 1. 清理任务
0 3 * * 0 /usr/bin/find /tmp -type f -mtime +7 -delete

# 2-1. 记录进程
0 12 * * * /usr/bin/echo "$(/usr/bin/date '+\%Y-\%m-\%d \%H:\%M:\%S') | 进程总数: $(/usr/bin/ps aux | /usr/bin/wc -l)" >> /var/log/system_health.log

# 2-2. 记录内存
0 12 * * * /usr/bin/echo "$(/usr/bin/date '+\%Y-\%m-\%d \%H:\%M:\%S') | 内存使用量: $(/usr/bin/free -h | /usr/bin/awk '/内存/ {print $3}')" >> /var/log/system_health.log

在这里插入图片描述

  1. cron时间语法:*(分) *(时) *(日) *(月) *(星期)

  2. 环境变量问题:Cron 是由 crond 守护进程启动的,它的 PATH 非常有限(通常只有 /usr/bin:/bin)

  3. 系统日志:/var/log/syslog 记录 Cron 守护进程(crond)什么时候启动了哪个任务
    在这里插入图片描述

  4. 任务输出日志: 如果没写 >> ,任务产生的报错通常会尝试发给本地邮箱(/var/mail/root)

三、内核管理实践

  1. 未改之前:
    在这里插入图片描述

  2. 修改:
    在这里插入图片描述

  3. 生效
    在这里插入图片描述

  4. 查看
    在这里插入图片描述

  5. /proc 文件系统的虚拟文件特性:

    1. /proc 是 Linux 系统中的伪文件系统,它并不占用实际的磁盘空间,而是通过内存或内核数
      据结构来提供系统信息和控制接口。
    2. /proc 下的文件在读取(cat 或 more)的那一刻,内核才会调用相应的函数来实时计算并生成内容。
    3. 每个运行中的进程在 /proc 下都有一个以其 PID 命名的文件夹
    4. 当一个进程结束时,对应的 /proc/[PID] 目录会立即自动消失。
    5. 当系统关机时,整个 /proc 也就彻底不复存在。它完全随内核的生命周期波动。

四、网络管理内容

  1. 网络分类:局域网、城域网、广域网。

  2. 拓扑类型:总线型、环形、星形、

  3. 分层:
    OSI七层模型:应用层、表示层、会话层、传输层、网络层、链路层、物理层:
    TCP/IP四层模型:应用层、传输层、网络层、物理链路层:

  4. TCP:
    三次握手
    在这里插入图片描述

     四次挥手
    

    在这里插入图片描述
    在这里插入图片描述

  5. IP:
    版本:ipv4:32位、ipv6:128位
    ipv4样式:
    192.168.1.0 255.255.255.0
    192.168.1.0/24
    分类:
    在这里插入图片描述

  6. 网络设备:

    1. 交换机:交换机是一种工作在 OSI 模型第二层(数据链路层) 的网络设备,核心职能是基于 MAC 地址 在局域网(LAN)内实现数据帧的转发。
    2. 路由器:路由器是一种工作在 OSI 模型第三层(网络层) 的网间连接设备,核心职能是基于 IP 地址 实现不同异构网络间的路径选择与分组转发。
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐