马哥sre云计算运维第3次作业
一、监控指定名称的进程脚本
#!/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
-
进程存在,则输出信息到/var/log/process_monitor.log里面。

-
进程如果不存在则重启,并且将日志写入到/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"∣grep−vgrep∣tr−s""∣cut−d""−f2>>"log_file”
ps -aux 查看进程信息
grep “$process_name” 筛选关于nginx的
grep -v grep 排除一下grep本身的进程
tr -s " " 将多的空格合并,方便拿取pid信息
cut -d " " -f2 用空格作为分隔符,拿去第二列的pdi信息。
- 配置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

-
cron时间语法:*(分) *(时) *(日) *(月) *(星期)
-
环境变量问题:Cron 是由 crond 守护进程启动的,它的 PATH 非常有限(通常只有 /usr/bin:/bin)
-
系统日志:/var/log/syslog 记录 Cron 守护进程(crond)什么时候启动了哪个任务

-
任务输出日志: 如果没写 >> ,任务产生的报错通常会尝试发给本地邮箱(/var/mail/root)
三、内核管理实践
-
未改之前:

-
修改:

-
生效

-
查看

-
/proc 文件系统的虚拟文件特性:
- /proc 是 Linux 系统中的伪文件系统,它并不占用实际的磁盘空间,而是通过内存或内核数
据结构来提供系统信息和控制接口。 - /proc 下的文件在读取(cat 或 more)的那一刻,内核才会调用相应的函数来实时计算并生成内容。
- 每个运行中的进程在 /proc 下都有一个以其 PID 命名的文件夹
- 当一个进程结束时,对应的 /proc/[PID] 目录会立即自动消失。
- 当系统关机时,整个 /proc 也就彻底不复存在。它完全随内核的生命周期波动。
- /proc 是 Linux 系统中的伪文件系统,它并不占用实际的磁盘空间,而是通过内存或内核数
四、网络管理内容
-
网络分类:局域网、城域网、广域网。
-
拓扑类型:总线型、环形、星形、
-
分层:
OSI七层模型:应用层、表示层、会话层、传输层、网络层、链路层、物理层:
TCP/IP四层模型:应用层、传输层、网络层、物理链路层: -
TCP:
三次握手
四次挥手

-
IP:
版本:ipv4:32位、ipv6:128位
ipv4样式:
192.168.1.0 255.255.255.0
192.168.1.0/24
分类:
-
网络设备:
- 交换机:交换机是一种工作在 OSI 模型第二层(数据链路层) 的网络设备,核心职能是基于 MAC 地址 在局域网(LAN)内实现数据帧的转发。
- 路由器:路由器是一种工作在 OSI 模型第三层(网络层) 的网间连接设备,核心职能是基于 IP 地址 实现不同异构网络间的路径选择与分组转发。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)