一、shell脚本
1、监控指定名称进程脚本
#!/bin/bash # 检查服务器进程服务 # 版本号:v1 # 日志配置 mkdir -p /var/log/process_monitor LOG_FILE="/var/log/process_monitor/process_$(date +%Y%m%d).log" # 日志输出 exec >> "$LOG_FILE" 2>&1 # 进程配置 process_name=sshd # 查找进程 process=$(ps -aux | grep -E "$process_name" | grep -v grep) # 循环执行,每5秒执行一次 for i in {1..12};do echo "================检查记录:$(date '+%Y-%m-%d %H:%M:%S')=======================" # 检查是否找到进程 if [ -z "$process" ]; then echo "未找到名为 '$process_name' 的进程。" # 假设进程已配置环境变量启动 systemctl start $process_name sleep 2 # 进程重新赋值 process=$(ps aux | grep -E "$process_name" | grep -v grep) # 进程自启动检查 if [ -z "$process" ]; then echo "无法启动进程 '$process_name',请手动检查进程" else echo "进程 '$process_name' 已成功启动" fi else ps -aux | grep -E "$process_name" | grep -v grep | awk '{print $2, $11}' fi sleep 5 done
执行结果:
2、命令解析
ps -aux:显示系统中所有进程的详细信息
grep -E:grep过滤条件支持正则表达式
grep -v:显示不匹配的行
kill -0:检查进程是否存在
&:在命令后加该符号,表示命令在后台执行
fg:配合jobs查看后台运行的任务号,将后台任务调回前台
jobs:查看在后台运行的任务
3、脚本开机自启动或cron定期执行
1)开机自启动
- 创建 systemd 服务文件
在 /etc/systemd/system/ 目录下创建 script.service 文件
bash
vim /etc/systemd/system/myscript.service
- 编写服务配置
[Unit] Description=My custom script After=network.target # 在网络服务启动后执行(按需调整) [Service] Type=simple ExecStart=/path/to/your-script.sh Restart=no # 是否自动重启 User=youruser # 以指定用户运行(可选,默认为 root) [Install] WantedBy=multi-user.target
- 启用服务
systemctl enable your-script.service
2)crontab
- 添加脚本执行权限
chmod +x script.sh
- 编辑crontab
crontab -e
* * * * * /bin/bash /path/script.sh
二、crontab任务
1、crontab周期任务
# 编辑crontab crontab -e # 每周日凌晨3点自动清理 /tmp 目录下超过7天的临时文件 0 3 * * 7 find /tmp -type f -atime +7 -delete 2>/dev/null # 每天中午12点记录当前系统进程数、内存使用量到 /var/log/system_health.log 0 12 * * * echo "进程数:$(ps -aux | wc -l),内存使用量:$(free -h | grep "Mem:" | awk '{print $3}')" >> /var/log/system_health.log
2、crontab相关项解析
时间语法
分别为分(0-59)、时(0-23)、日期(1-31)、月份(1-12)、星期几(0-7,其中0和7都表示星期天)
“*”代表任意值 * * * * * 每分钟执行
“,”代表列举多个值 1,3,5 * * * * 每小时的1,3,5分执行
“-”代表范围 1-5 * * * * 每小时的1-5分执行
“/”代表步长 0/2 * * * * 每小时的0、2、4偶数分钟执行
环境变量
cron中的环境变量和bash 中的环境变量不一致,所以在写 cron 任务时,命令路径要求写全路径,或先在首部先定义PATH。
# 在 crontab 开头设置环境
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
日志查看方法
Debian/Ubuntu系统:grep -i cron /var/log/syslog
RHEL/CentOS/Rocky Linux系统:sudo cat /var/log/cron
通用(使用 systemd):sudo journalctl -u cron
3、内核管理实践
4、/proc文件系统的虚拟文件特性
5、结果展示
三、网络相关
1、OSI七层模型和TCP/IP四层模型
2、TCP连接的三次握手和断开的四次挥手
三次握手
四次挥手
3、IP版本的分类
ipv4、ipv6
4、ipv4的分类:
| 类别 | 首位数字范围 | 默认子网掩码 | 网络号位数 | 主机号位数 | 可用网络数 | 每个网络可用主机数 | 主要用途 |
| A类 | 0 - 127 | 255.0.0.0 | 8 bits | 24 bits | 126 (0和127保留) | 约 1677 万 | 超大规模网络(如跨国企业、顶级ISP) |
| B类 | 128 - 191 | 255.255.0.0 | 16 bits | 16 bits | 约 1.6 万 | 约 6.5 万 | 大中型网络(如大学、大型企业) |
| C类 | 192 - 223 | 255.255.255.0 | 24 bits | 8 bits | 约 209 万 | 254 | 小型网络(如公司局域网、网吧 |
| D类 | 224 - 239 | 无 | 不适用 | 不适用 | 不适用 | 不适用 | 组播(Multicast),一对多通信 |
| E类 | 240 - 255 | 无 | 不适用 | 不适用 | 不适用 | 不适用 | 保留用于科学研究与实验 |