Linux系统管理员实战手册:从基础配置到高级优化

📅 2026/7/17 2:13:09
Linux系统管理员实战手册:从基础配置到高级优化
1. Linux系统操作手册的价值与定位作为一名使用Linux系统超过15年的老用户我深知一本好的操作手册对系统管理员和开发者的重要性。不同于市面上大多数Linux入门书籍真正实用的操作手册应该像瑞士军刀一样能快速解决实际工作中遇到的各种问题。Linux系统的强大之处在于其灵活性和可定制性但这也意味着系统管理需要掌握大量命令和配置技巧。我在职业生涯早期就养成了收集整理各种秘籍的习惯——那些能快速解决特定问题的命令组合、配置文件修改方法或脚本片段。这些经验后来都成为了团队内部传阅的宝贵资料。2. 系统基础配置与优化2.1 网络配置实战技巧网络问题是Linux系统管理中最常遇到的挑战之一。以下是我总结的几个关键场景的解决方案静态IP配置以Ubuntu 20.04为例# 编辑网络配置文件 sudo nano /etc/netplan/00-installer-config.yaml # 配置示例 network: ethernets: ens33: addresses: [192.168.1.100/24] gateway4: 192.168.1.1 nameservers: addresses: [8.8.8.8, 8.8.4.4] version: 2 # 应用配置 sudo netplan apply注意不同Linux发行版的网络配置方式差异很大CentOS使用/etc/sysconfig/network-scripts/而较新的Fedora也开始转向netplan。DNS问题排查流程检查当前DNS配置cat /etc/resolv.conf测试DNS解析dig example.com检查DNS缓存如果使用systemd-resolvedsystemd-resolve --status临时修改DNSsudo nano /etc/resolv.conf注意某些系统会覆盖此文件2.2 存储管理进阶技巧LVM日常管理命令集# 查看物理卷 sudo pvdisplay # 扩展逻辑卷增加5G sudo lvextend -L 5G /dev/vg00/lv_data # 调整文件系统大小针对ext4 sudo resize2fs /dev/vg00/lv_data # 创建快照快照大小建议为原卷的15-20% sudo lvcreate -L 10G -s -n lv_data_snap /dev/vg00/lv_data磁盘性能测试方法# 测试顺序读写1G文件块大小1M sudo hdparm -tT /dev/sda sudo dd if/dev/zero of./testfile bs1M count1024 convfdatasync # 测试随机IOPS sudo fio --namerandread --ioenginelibaio --iodepth32 \ --rwrandread --bs4k --direct1 --size1G --numjobs4 \ --runtime60 --group_reporting3. 系统安全加固指南3.1 SSH安全配置最佳实践/etc/ssh/sshd_config关键配置项Port 2222 # 修改默认端口 PermitRootLogin no PasswordAuthentication no # 强制使用密钥认证 MaxAuthTries 3 ClientAliveInterval 300 ClientAliveCountMax 2 AllowUsers user1 user2 # 白名单机制生成更安全的SSH密钥ssh-keygen -t ed25519 -a 100 # 或使用-t rsa -b 40963.2 防火墙配置模板UFW基础规则集sudo ufw default deny incoming sudo ufw default allow outgoing sudo ufw allow 2222/tcp # SSH自定义端口 sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw enable更复杂的iptables示例适用于网关服务器# 清空现有规则 iptables -F iptables -X # 默认策略 iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT # 允许本地回环 iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT # 允许已建立的连接 iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT # 开放SSH端口 iptables -A INPUT -p tcp --dport 2222 -j ACCEPT # 防止SYN洪水攻击 iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP iptables -A INPUT -m limit --limit 5/minute --limit-burst 7 -j ACCEPT # 保存规则根据发行版不同 iptables-save /etc/iptables.rules4. 性能监控与故障排查4.1 系统监控命令速查表实时监控组合命令# 综合监控CPU、内存、进程 top -c -d 2 # 磁盘IO监控 iotop -oPa # 网络流量监控 nload -u M eth0 # 替代top的现代工具 htop # 系统资源概览 glances日志分析实用命令# 查看最近10条内核消息 dmesg | tail -10 # 实时监控认证日志 tail -f /var/log/auth.log | grep -i failed # 统计HTTP错误码适用于Nginx/Apache awk {print $9} access.log | sort | uniq -c | sort -rn # 查找大文件大于100M find / -type f -size 100M -exec ls -lh {} \;4.2 常见性能问题解决方案高CPU占用排查流程top→ 找出占用CPU高的进程IDstrace -p PID→ 查看系统调用perf top -p PID→ 分析函数级性能如果是Java应用jstack PID thread_dump.log内存泄漏诊断方法# 监控内存变化 watch -n 1 free -m # 查看进程内存映射 pmap -x PID # 统计内存分配需要valgrind valgrind --toolmemcheck --leak-checkfull ./your_program5. 自动化运维脚本集锦5.1 实用Bash脚本模板系统健康检查脚本#!/bin/bash # 颜色定义 RED\033[0;31m GREEN\033[0;32m NC\033[0m # No Color echo -e ${GREEN} 系统健康检查 ${NC} # CPU负载检查 load$(uptime | awk -Fload average: {print $2}) echo -e CPU负载: ${load} # 内存检查 free -h | grep -v Swap | awk NR1{print 内存状态:} NR2{print 已用: $3, 剩余: $4} # 磁盘检查 df -h | grep -v tmpfs | awk NR1{print 磁盘使用:} NR1{print $6: $5} # 关键服务检查 services(sshd nginx mysql) for service in ${services[]}; do if systemctl is-active --quiet $service; then echo -e $service: ${GREEN}运行中${NC} else echo -e $service: ${RED}未运行${NC} fi done5.2 日志分析自动化脚本错误日志统计脚本#!/bin/bash LOG_FILE/var/log/nginx/error.log OUTPUT_FILE/tmp/error_report_$(date %Y%m%d).csv # 分析错误类型并生成CSV报告 echo 错误类型,出现次数,最后出现时间 $OUTPUT_FILE grep -oP \[error\] .*?\(.*?\) $LOG_FILE | \ awk -F[()] {count[$2]; last[$2]$1} END {for (i in count) print i,count[i],last[i]} | \ sort -t, -k2 -nr $OUTPUT_FILE # 发送邮件报告需要配置好邮件服务 mail -s Nginx错误报告 $(date %Y-%m-%d) adminexample.com $OUTPUT_FILE6. 开发环境配置指南6.1 Python开发环境搭建使用pyenv管理多版本Python# 安装依赖 sudo apt-get install -y make build-essential libssl-dev zlib1g-dev \ libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \ libncurses5-dev libncursesw5-dev xz-utils tk-dev # 安装pyenv curl https://pyenv.run | bash # 配置环境变量添加到~/.bashrc echo export PYENV_ROOT$HOME/.pyenv ~/.bashrc echo command -v pyenv /dev/null || export PATH$PYENV_ROOT/bin:$PATH ~/.bashrc echo eval $(pyenv init -) ~/.bashrc # 安装特定Python版本 pyenv install 3.9.12 pyenv global 3.9.12 # 创建虚拟环境 python -m venv my_project_env source my_project_env/bin/activate6.2 Docker高效使用技巧优化Dockerfile示例# 多阶段构建减少镜像大小 FROM python:3.9-slim as builder WORKDIR /app COPY requirements.txt . RUN pip install --user -r requirements.txt FROM python:3.9-slim WORKDIR /app # 从builder阶段复制已安装的包 COPY --frombuilder /root/.local /root/.local COPY . . # 确保脚本在PATH中 ENV PATH/root/.local/bin:$PATH # 使用非root用户运行 RUN useradd -m myuser chown -R myuser:myuser /app USER myuser CMD [python, app.py]常用Docker命令组合# 清理无用容器和镜像 docker system prune -f # 查看容器资源使用情况 docker stats --format table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}} # 构建并打标签 docker build -t myapp:1.0 . # 带缓存的运行开发环境 docker run -it --rm -v $(pwd):/app -p 8000:8000 myapp:1.07. 高级系统管理技巧7.1 内核参数调优/etc/sysctl.conf优化配置# 提高网络性能 net.core.rmem_max 16777216 net.core.wmem_max 16777216 net.ipv4.tcp_rmem 4096 87380 16777216 net.ipv4.tcp_wmem 4096 65536 16777216 # 减少TCP连接延迟 net.ipv4.tcp_fastopen 3 # 提高并发连接数 net.core.somaxconn 32768 net.ipv4.tcp_max_syn_backlog 8192 # 内存溢出保护 vm.overcommit_memory 2 vm.overcommit_ratio 80 # 文件描述符限制 fs.file-max 2097152应用配置sudo sysctl -p7.2 系统服务管理进阶使用systemd创建自定义服务# /etc/systemd/system/my_service.service [Unit] DescriptionMy Custom Service Afternetwork.target [Service] Typesimple Usermyuser WorkingDirectory/opt/myapp ExecStart/usr/bin/python /opt/myapp/main.py Restartalways RestartSec5s # 日志配置 StandardOutputsyslog StandardErrorsyslog SyslogIdentifiermy_service [Install] WantedBymulti-user.target管理命令# 重载服务配置 sudo systemctl daemon-reload # 启用开机启动 sudo systemctl enable my_service # 查看日志 journalctl -u my_service -f8. 终端生产力工具集8.1 高效命令行工具推荐现代命令行工具替代方案bat→ 带语法高亮的cat替代品exa→ 功能增强的ls替代品fd→ 更快的find替代品ripgrep (rg)→ 更快的grep替代品tldr→ 简化的man页面安装方法Ubuntusudo apt install bat exa fd-find ripgrep tldr # 创建别名添加到~/.bashrc alias catbat --pagingnever alias lsexa --group-directories-first alias findfdfind8.2 Tmux配置与使用技巧~/.tmux.conf优化配置# 更合理的前缀键 set -g prefix C-a unbind C-b bind C-a send-prefix # 鼠标支持 set -g mouse on # 状态栏美化 set -g status-interval 1 set -g status-justify centre set -g status-left-length 20 set -g status-right-length 50 set -g status-left #[fggreen]#S #[fgwhite]» set -g status-right #[fgcyan]%Y-%m-%d %H:%M #[fgwhite]| #[fgyellow]#H # 面板分割快捷键 bind | split-window -h bind - split-window -v unbind unbind % # 快速面板切换 bind -r h select-pane -L bind -r j select-pane -D bind -r k select-pane -U bind -r l select-pane -R常用Tmux工作流新建会话tmux new -s session_name分离会话Ctrl-a d列出会话tmux ls附加会话tmux a -t session_name窗口管理Ctrl-a c新建窗口Ctrl-a n/p切换窗口Ctrl-a ,重命名窗口9. 虚拟化与容器化实践9.1 KVM虚拟化配置指南Ubuntu安装KVM# 检查虚拟化支持 egrep -c (vmx|svm) /proc/cpuinfo # 安装KVM sudo apt install -y qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virtinst # 添加用户到libvirt组 sudo usermod -aG libvirt $(whoami) sudo usermod -aG kvm $(whoami) # 验证安装 virsh list --all # 安装管理GUI可选 sudo apt install -y virt-manager创建虚拟机的命令行方法virt-install \ --name ubuntu-server \ --ram 2048 \ --disk path/var/lib/libvirt/images/ubuntu-server.qcow2,size20 \ --vcpus 2 \ --os-type linux \ --os-variant ubuntu20.04 \ --network bridgevirbr0 \ --graphics none \ --console pty,target_typeserial \ --location http://archive.ubuntu.com/ubuntu/dists/focal/main/installer-amd64/ \ --extra-args consolettyS0,115200n8 serial9.2 Podman使用技巧Podman与Docker命令对比功能Docker命令Podman命令运行容器docker runpodman run构建镜像docker buildpodman build查看容器docker pspodman ps登录仓库docker loginpodman login容器网络docker networkpodman network无守护进程需要不需要root权限通常需要通常不需要Rootless容器配置# 检查用户命名空间支持 sudo sysctl kernel.unprivileged_userns_clone1 # 配置用户子UID/GID echo $(id -un):100000:65536 | sudo tee /etc/subuid echo $(id -un):100000:65536 | sudo tee /etc/subgid # 存储配置 podman system migrate10. 备份与灾难恢复方案10.1 系统级备份策略使用BorgBackup实现增量备份# 安装 sudo apt install borgbackup # 初始化仓库 borg init --encryptionrepokey /backup/repo # 创建备份 borg create --stats --progress /backup/repo::{hostname}-{now} /etc /home /opt # 查看备份列表 borg list /backup/repo # 恢复备份 borg extract /backup/repo::backup-name自动化备份脚本#!/bin/bash # 备份配置 REPO/backup/repo SOURCES(/etc /home /opt) EXCLUDE--exclude *.tmp --exclude *.log # 备份命令 borg create --stats --progress $REPO::{hostname}-{now} ${SOURCES[]} $EXCLUDE # 保留策略保留7天内的每日备份4周内的每周备份6个月内的每月备份 borg prune --keep-daily7 --keep-weekly4 --keep-monthly6 $REPO # 发送通知需要配置邮件 echo Backup completed on $(date) | mail -s Backup Report adminexample.com10.2 数据库备份方案MySQL/MariaDB备份脚本#!/bin/bash # 备份配置 BACKUP_DIR/backup/mysql DATE$(date %Y%m%d_%H%M%S) USERbackup_user PASSsecure_password # 创建备份目录 mkdir -p $BACKUP_DIR/$DATE # 获取数据库列表 DATABASES$(mysql -u$USER -p$PASS -e SHOW DATABASES; | grep -Ev (Database|information_schema|performance_schema|mysql)) # 备份每个数据库 for DB in $DATABASES; do mysqldump -u$USER -p$PASS --single-transaction --routines --triggers $DB | gzip $BACKUP_DIR/$DATE/$DB.sql.gz done # 保留最近7天备份 find $BACKUP_DIR -type d -mtime 7 -exec rm -rf {} \;PostgreSQL备份方案# 基础备份 pg_basebackup -D /backup/postgresql/full_$(date %Y%m%d) -Ft -z -P -U postgres # 逻辑备份单个数据库 pg_dump -U postgres -Fc mydb /backup/postgresql/mydb_$(date %Y%m%d).dump # 恢复命令 pg_restore -U postgres -d mydb /backup/postgresql/mydb_20230601.dump11. 网络服务配置与管理11.1 Nginx高级配置模板高性能Nginx配置user www-data; worker_processes auto; worker_rlimit_nofile 100000; events { worker_connections 4096; multi_accept on; use epoll; } http { sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 30; keepalive_requests 1000; types_hash_max_size 2048; server_tokens off; # MIME类型 include /etc/nginx/mime.types; default_type application/octet-stream; # 日志格式 log_format main $remote_addr - $remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for; access_log /var/log/nginx/access.log main buffer32k flush5m; error_log /var/log/nginx/error.log warn; # Gzip配置 gzip on; gzip_vary on; gzip_proxied any; gzip_comp_level 6; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xmlrss text/javascript; # 虚拟主机包含 include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; }11.2 防火墙高级规则配置使用nftables替代iptables# 安装Ubuntu sudo apt install nftables # 基本配置模板 #!/usr/sbin/nft -f flush ruleset table inet filter { chain input { type filter hook input priority 0; policy drop; # 允许已建立的连接 ct state established,related accept # 允许本地回环 iifname lo accept # 允许ICMP ip protocol icmp accept ip6 nexthdr icmpv6 accept # 开放SSH端口 tcp dport 2222 accept # 记录并丢弃其他所有 log prefix Dropped input: flags all counter drop } chain forward { type filter hook forward priority 0; policy drop; } chain output { type filter hook output priority 0; policy accept; } } # 保存规则 nft list ruleset /etc/nftables.conf # 开机加载 systemctl enable nftables12. 内核与驱动管理12.1 内核模块操作指南常用内核模块命令# 列出已加载模块 lsmod # 查看模块信息 modinfo module_name # 加载模块 sudo modprobe module_name # 带参数加载 sudo modprobe module_name param1value1 param2value2 # 卸载模块 sudo modprobe -r module_name # 查看模块参数 cat /sys/module/module_name/parameters/* # 列出所有可用模块 find /lib/modules/$(uname -r) -type f -name *.ko*内核模块黑名单配置# /etc/modprobe.d/blacklist.conf blacklist nouveau blacklist pcspkr12.2 内核编译与升级自定义内核编译流程# 安装依赖 sudo apt install build-essential libncurses-dev bison flex libssl-dev libelf-dev # 获取内核源码 wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.15.68.tar.xz tar xvf linux-5.15.68.tar.xz cd linux-5.15.68 # 配置使用当前配置作为基础 cp /boot/config-$(uname -r) .config make olddefconfig # 自定义配置可选 make menuconfig # 编译根据CPU核心数调整-j参数 make -j$(nproc) all # 安装模块 sudo make modules_install # 安装内核 sudo make install # 更新GRUB sudo update-grub13. 系统调优与性能优化13.1 磁盘I/O优化策略SSD优化配置# 查看调度器 cat /sys/block/sda/queue/scheduler # 设置为deadline或noopSSD推荐 echo deadline | sudo tee /sys/block/sda/queue/scheduler # 永久生效GRUB配置 GRUB_CMDLINE_LINUX_DEFAULT... elevatordeadline # 禁用访问时间记录fstab /dev/sda1 / ext4 defaults,noatime,nodiratime,errorsremount-ro 0 1 # 调整swappinessSSD建议较低值 echo vm.swappiness10 | sudo tee -a /etc/sysctl.conf机械硬盘优化# 使用cfq调度器 echo cfq | sudo tee /sys/block/sdb/queue/scheduler # 调整预读值根据工作负载 blockdev --setra 8192 /dev/sdb # 启用写缓存确保有UPS hdparm -W 1 /dev/sdb13.2 内存管理优化调整透明大页THP# 查看当前状态 cat /sys/kernel/mm/transparent_hugepage/enabled # 临时禁用 echo never | sudo tee /sys/kernel/mm/transparent_hugepage/enabled # 永久配置GRUB GRUB_CMDLINE_LINUX_DEFAULT... transparent_hugepagenever # 针对特定应用如MongoDB echo madvise | sudo tee /sys/kernel/mm/transparent_hugepage/enabled调整内存分配策略# 查看当前策略 cat /proc/sys/vm/overcommit_memory # 推荐设置2表示基于比例拒绝过大分配 echo vm.overcommit_memory2 | sudo tee -a /etc/sysctl.conf echo vm.overcommit_ratio80 | sudo tee -a /etc/sysctl.conf sudo sysctl -p14. 日志管理与分析系统14.1 集中式日志方案使用rsyslog实现日志集中# 客户端配置/etc/rsyslog.conf *.* 192.168.1.100:514 # 服务器端配置 module(loadimudp) input(typeimudp port514) module(loadimtcp) input(typeimtcp port514) # 按客户端IP和日期存储 $template RemoteLogs,/var/log/remote/%fromhost-ip%/%$YEAR%-%$MONTH%-%$DAY%.log *.* ?RemoteLogs日志轮转配置示例# /etc/logrotate.d/remote_logs /var/log/remote/*/*.log { daily missingok rotate 30 compress delaycompress notifempty sharedscripts postrotate /usr/lib/rsyslog/rsyslog-rotate endscript }14.2 实时日志分析工具使用GoAccess分析Nginx日志# 安装 sudo apt install goaccess # 生成HTML报告 goaccess /var/log/nginx/access.log --log-formatCOMBINED -o report.html # 实时监控模式 goaccess /var/log/nginx/access.log --log-formatCOMBINED -o /var/www/html/report.html --real-time-html --daemonize多日志文件分析脚本#!/bin/bash # 分析过去7天的错误日志 for i in {0..6}; do day$(date -d $i days ago %Y-%m-%d) echo -e \n 分析报告 $day # 统计HTTP状态码 zgrep -h $day /var/log/nginx/access.log* | awk {print $9} | sort | uniq -c | sort -nr # 统计错误请求 zgrep -h $day /var/log/nginx/error.log* | awk -F[ ,] {print $6} | sort | uniq -c | sort -nr # 统计客户端IP zgrep -h $day /var/log/nginx/access.log* | awk {print $1} | sort | uniq -c | sort -nr | head -10 done15. 安全审计与合规检查15.1 自动化安全扫描使用Lynis进行系统审计# 安装 sudo apt install lynis # 基本扫描 sudo lynis audit system # 完整扫描包括所有测试 sudo lynis audit system --tests-from-group malware,authentication,networking,storage,filesystems # 生成HTML报告 sudo lynis audit system --report-file /tmp/lynis-report.html --format html常见修复建议设置更严格的umask如027禁用不必要的SUID/SGID文件配置SSH使用更安全的加密算法启用sysctl安全参数如禁用ICMP重定向定期检查rootkit使用rkhunter15.2 CIS基准合规检查使用OpenSCAP# 安装工具 sudo apt install openscap-scanner scap-security-guide # 下载基准文件 wget https://raw.githubusercontent.com/ComplianceAsCode/content/master/ubuntu2004/profiles/cis_level1_server.profile # 运行评估 oscap xccdf eval --profile xccdf_org.ssgproject.content_profile_cis_level1_server \ --results scan-results.xml \ --report scan-report.html \ /usr/share/xml/scap/ssg/content/ssg-ubuntu2004-ds.xml # 生成修复脚本 oscap xccdf generate fix --result-id xccdf_org.open-scap_testresult_xccdf_org.ssgproject.content_profile_cis_level1_server \ --output cis_fixes.sh scan-results.xml16. 用户与权限管理16.1 高级权限控制使用sudo精细控制# /etc/sudoers.d/developers # 允许用户组执行特定命令无需密码 %developers ALL(ALL) NOPASSWD: /usr/bin/apt update, /usr/bin/apt install * # 允许特定用户重启服务 user1 ALL(root) /bin/systemctl restart nginx, /bin/systemctl status nginx # 允许命令带特定参数 user2 ALL(root) /usr/bin/kill -HUP *, !/usr/bin/kill -9 *ACL高级权限示例# 查看ACL getfacl /shared_directory # 设置ACL允许用户读写组读其他无权限 setfacl -Rm u:user1:rwx,g:group1:r-x,o::- /shared_directory # 默认ACL新文件继承 setfacl -dm u:user1:rwx,g:group1:r-x,o::- /shared_directory # 删除ACL setfacl -x u:user1 /shared_directory16.2 集中式认证方案配置LDAP客户端# 安装必要软件 sudo apt install libnss-ldap libpam-ldap ldap-utils nscd # /etc/ldap.conf配置示例 base dcexample,dccom uri ldap://ldap.example.com ldap_version 3 binddn cnadmin,dcexample,dccom bindpw password scope sub pam_password md5 # 测试查询 ldapsearch -x -b dcexample,dccom (uiduser1)PAM配置调整# /etc/pam.d/common-auth示例 auth [success2 defaultignore] pam_ldap.so auth [success1 defaultignore] pam_unix.so nullok_secure try_first_pass auth requisite pam_deny.so auth required pam_permit.so17. 时间同步与调度任务17.1 精确时间同步配置Chrony高级配置# /etc/chrony/chrony.conf pool 0.pool.ntp.org iburst pool 1.pool.ntp.org iburst pool 2.pool.ntp.org iburst # 本地时钟作为备用 local stratum 10 # 允许特定网络同步 allow 192.168.1.0/24 # 更快的同步间隔 makestep 1.0 3 # 日志记录 logdir /var/log/chrony log measurements statistics tracking # 重启服务 systemctl restart chronyd # 查看状态 chronyc tracking chronyc sources -v17.2 高级任务调度系统级crontab示例# /etc/crontab # 每周日凌晨3点执行全量备份 0 3 * * 0 root /usr/local/bin/full_backup.sh # 每天凌晨2点清理临时文件 0 2 * * * root find /tmp -type f -atime 7 -delete # 每5分钟检查服务状态 */5 * * * * root /usr/local/bin/service_monitor.sh # 每月1号凌晨1点生成报告 0 1 1 * * root /usr/local/bin/monthly_report.shanacron配置适用于不连续运行的服务器# /etc/anacrontab # 每天延迟5分钟执行最长等待60分钟 1 5 daily.delay /usr/local/bin/daily_job.sh # 每周执行最长等待12小时 7 0 weekly.delay /usr/local/bin/weekly_job.sh # 每月执行最长等待24小时 monthly 0 monthly.delay /usr/local/bin/monthly_job.sh18. 系统监控与告警18.1 Prometheus监控方案Node Exporter基础配置# 下载并安装 wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz tar xvf node_exporter-1.3.1.linux-amd64.tar.gz