Linux命令与自动化脚本精华
Linux命令与自动化脚本核心指南一、核心Linux命令速查表类别命令功能描述常用示例文件与目录ls列出目录内容ls -la(详细列表)pwd显示当前工作目录pwdcd切换目录cd /home/usermkdir创建目录mkdir -p project/{src,bin}(创建多级目录)rm删除文件或目录rm -rf old_dir/(强制递归删除)cp复制cp -r source/ dest/(递归复制目录)mv移动/重命名mv old.txt new.txtfind查找文件find . -name *.log -mtime 7(查找7天前的日志)文件内容cat查看文件全部内容cat config.yamlhead/tail查看文件头/尾tail -f app.log(实时追踪日志)grep文本搜索grep -r ERROR /var/log/(递归搜索)sed流编辑器 (非交互式编辑)sed -i s/foo/bar/g file.txt(全局替换)awk文本分析处理awk {print $1} data.csv(打印第一列)系统信息ps查看进程状态ps aux | grep nginxtop/htop动态查看进程/资源topdf/du磁盘空间使用df -h(人类可读格式)free内存使用情况free -m(以MB显示)ifconfig/ip网络接口配置ifconfig eth0权限管理chmod修改文件权限chmod x script.sh(添加执行权限)chown修改文件所有者chown user:group file压缩/打包tar打包与压缩tar -czvf archive.tar.gz dir/(创建gzip压缩包)gzip/gunzip压缩/解压.gz文件gzip file网络操作ssh安全远程登录ssh userhostnamescp安全远程复制scp file.txt userremote:/path/wget/curl网络下载curl -O http://example.com/file进程管理kill终止进程kill -9 1234(强制终止PID 1234)nohup后台运行进程nohup ./server.sh 其他实用alias命令别名alias llls -lhistory查看命令历史history | grep sshman/--help查看命令手册/帮助man grep二、Shell脚本自动化编程核心1. 脚本基础结构所有Shell脚本应以#!/bin/bash(或#!/bin/sh) 开头指定解释器 。#!/bin/bash # 这是一个自动化备份脚本示例 # 作者: SysAdmin # 描述: 备份指定目录到远程服务器 # 1. 定义变量 BACKUP_SRC/home/user/data BACKUP_DESTuserbackup-server:/backups/ LOG_FILE/var/log/backup_$(date %Y%m%d).log MAX_DAYS30 # 2. 检查源目录是否存在 if [[ ! -d $BACKUP_SRC ]]; then echo [ERROR] 源目录 $BACKUP_SRC 不存在! | tee -a $LOG_FILE exit 1 fi # 3. 执行备份核心逻辑 echo 开始备份 $(date) $LOG_FILE tar -czf - $BACKUP_SRC 2 $LOG_FILE | \ ssh $BACKUP_DEST cat backup_$(date %Y%m%d_%H%M%S).tar.gz # 4. 检查命令执行状态 if [[ $? -eq 0 ]]; then echo [SUCCESS] 备份完成于 $(date) $LOG_FILE else echo [FAILED] 备份失败请检查日志! $LOG_FILE exit 1 fi # 5. 清理旧日志 (超过30天) find /var/log/ -name backup_*.log -mtime $MAX_DAYS -delete exit 02. 关键语法与技巧变量与参数处理#!/bin/bash # 变量定义与使用 SCRIPT_NAME$0 # 脚本名 FIRST_ARG$1 # 第一个参数 ALL_ARGS$ # 所有参数数组 ARG_COUNT$# # 参数个数 LAST_EXIT_CODE$? # 上条命令退出码 # 字符串操作 filenameapp_20250115.log echo ${filename%.*} # 输出: app_20250115 (移除后缀) echo ${filename##*.} # 输出: log (获取后缀) echo ${filename:4:8} # 输出: 20250115 (子串) # 数组操作 files(file1.txt file2.txt file3.txt) echo 文件数: ${#files[]} # 输出数组长度 echo 第一个文件: ${files[0]} # 访问元素条件判断与循环#!/bin/bash # 数值比较 if [[ $COUNT -gt 10 ]]; then echo 数量大于10 elif [[ $COUNT -eq 0 ]]; then echo 数量为0 else echo 数量在1-10之间 fi # 文件/目录判断 if [[ -f /etc/passwd ]]; then echo 是普通文件 fi if [[ -d /var/log ]]; then echo 是目录 fi # for循环处理文件 for file in *.txt; do if [[ -f $file ]]; then echo 处理文件: $file # 在此添加处理逻辑如 sed替换 sed -i s/old/new/g $file fi done # while循环读取文件行 while IFS read -r line; do echo 行内容: $line done input.txt函数定义与使用#!/bin/bash # 定义函数 log_message() { local level$1 local msg$2 echo [$(date %Y-%m-%d %H:%M:%S)] [$level] $msg /var/log/script.log } # 带返回值的函数 check_disk_usage() { local usage$(df -h / | awk NR2 {print $5} | sed s/%//) echo $usage # 通过echo返回值而非return (return只能0-255) } # 调用函数 log_message INFO 脚本开始执行 current_usage$(check_disk_usage) if [[ $current_usage -gt 90 ]]; then log_message ERROR 磁盘使用率超过90%: ${current_usage}% # 发送警报邮件等操作 fi3. 自动化任务示例示例1系统监控与告警脚本#!/bin/bash # monitor_system.sh 监控CPU、内存、磁盘并发送告警 THRESHOLD_CPU80 THRESHOLD_MEM85 THRESHOLD_DISK90ALERT_EMAILadminexample.com # 获取系统指标 cpu_usage$(top -bn1 | grep Cpu(s) | awk {print $2} | cut -d% -f1) mem_usage$(free | grep Mem | awk {printf %.0f, $3/$2 * 100}) disk_usage$(df -h / | awk NR2 {print $5} | sed s/%//) # 检查并告警 alerts if [[ $cpu_usage -gt $THRESHOLD_CPU ]]; then alertsCPU使用率过高: ${cpu_usage}% fi if [[ $mem_usage -gt $THRESHOLD_MEM ]]; then alerts内存使用率过高: ${mem_usage}% fi if [[ $disk_usage -gt $THRESHOLD_DISK ]]; then alerts磁盘使用率过高: ${disk_usage}% fi # 如果有告警则发送 if [[ -n $alerts ]]; then echo -e 系统告警: $alerts | mail -s 系统监控告警 $(date) $ALERT_EMAIL echo $(date): 发送告警 /var/log/monitor.log fi示例2自动化日志清理#!/bin/bash # clean_logs.sh自动清理过期日志文件 LOG_DIRS(/var/log /opt/app/logs) RETENTION_DAYS30BACKUP_DIR/backup/logs/$(date %Y%m) # 创建备份目录 mkdir -p $BACKUP_DIR for dir in ${LOG_DIRS[]}; do if [[ -d $dir ]]; then echo 处理目录: $dir # 压缩并备份7天前的日志 find $dir -name *.log -mtime 7 -exec tar -czf $BACKUP_DIR/$(basename $dir)_$(date %Y%m%d).tar.gz {} # 删除30天前的日志 find $dir -name *.log -mtime $RETENTION_DAYS -delete # 删除空日志文件 find $dir -name *.log -size 0 -delete fi doneecho 日志清理完成于 $(date) /var/log/cleanup.log示例3多服务器批量操作#!/bin/bash # batch_deploy.sh批量部署到多台服务器 SERVERS(server1.example.com server2.example.com 192.168.1.100) SSH_USERdeploy SCRIPT_FILEdeploy_app.sh REMOTE_DIR/opt/app/ for server in ${SERVERS[]}; do echo 正在部署到 $server ... # 检查服务器连通性 if ! ping -c 1 -W 2 $server /dev/null; then echo [跳过] $server 无法连接 continue fi # 复制部署脚本 scp $SCRIPT_FILE ${SSH_USER}${server}:${REMOTE_DIR} # 远程执行部署 ssh ${SSH_USER}${server} cd ${REMOTE_DIR} chmod x ${SCRIPT_FILE} ./${SCRIPT_FILE} if [[ $? -eq 0 ]]; then echo [成功] $server 部署完成 else echo [失败] $server 部署出错 fi done三、高级自动化技巧1. 使用expect自动化交互对于需要交互输入密码的命令可使用expect自动化 。#!/usr/bin/expect # auto_ssh.exp自动SSH登录并执行命令 set timeout 30 set host 192.168.1.100 set user admin set password your_password spawn ssh $user$host expect { *password:* { send $password\r exp_continue } *yes/no* { send yes\r exp_continue } $user* { send ls -la\r send df -h\r send exit\r } } expect eof2. 使用cron定时任务将脚本设置为定时执行实现完全自动化。# 编辑当前用户的cron任务 crontab -e # 添加以下行 (每天凌晨2点执行备份脚本) 0 2 * * * /home/user/scripts/backup.sh /var/log/backup_cron.log 21 # 每5分钟检查一次系统状态 */5 * * * * /home/user/scripts/monitor_system.sh # 每周一早上6点清理日志 0 6 * * 1 /home/user/scripts/clean_logs.sh3. 错误处理与日志记录#!/bin/bash # 增强的错误处理脚本 set -euo pipefail # 严格模式错误退出、未定义变量报错、管道错误 LOG_FILE/var/log/auto_task_$(date %Y%m%d).log exec 1$LOG_FILE 21 # 重定向所有输出到日志 # 自定义错误处理函数 error_exit() { echo [ERROR] $1 at line $2 2 # 可添加发送警报、清理临时文件等操作 exit 1 } trap error_exit $BASH_COMMAND $LINENO ERR # 捕获错误 # 主逻辑 echo 任务开始: $(date) # 关键操作示例 if [[ ! -f /etc/config.yaml ]]; then echo 配置文件不存在使用默认配置 cp /etc/default_config.yaml /etc/config.yaml fi # 使用临时文件安全处理数据 TEMP_FILE$(mktemp) process_data $TEMP_FILE mv $TEMP_FILE /var/data/processed.txt echo 任务完成: $(date) 四、最佳实践建议脚本开头总是包含#!/bin/bash和脚本描述注释。错误检查检查命令返回值 ($?)对关键操作进行验证 。使用引号变量引用总是使用双引号如$variable防止空格导致的错误。安全考虑避免在脚本中硬编码密码使用SSH密钥或环境变量。日志记录所有自动化脚本都应记录详细日志便于调试和审计。测试先在测试环境运行使用set -x调试模式查看执行过程。代码复用将常用功能封装为函数存放在单独的库文件中。版本控制将脚本纳入Git等版本控制系统管理。通过结合这些命令和脚本技术可以构建从简单文件操作到复杂系统管理的全自动工作流显著提升Linux环境下的工作效率 。参考来源Linux命令与Shell脚本学习笔记掌握常用的 Linux 命令和 Shell 脚本编程技术可以极大地提高系统管理和自动化任务的效率从命令行到自动化用Shell脚本和xrandr管理你的Linux多屏工作站Windows Prompt命令行和Linux的Shell脚本自动化从命令行到自动化用xrandr和shell脚本打造你的Linux多屏工作流含常见错误排查自动化脚本ssh以及telnet发送命令并退出(windows和linux都适用)

相关新闻

Ant Design Vue表单验证深度解析:从内置规则到自定义验证器实战

Ant Design Vue表单验证深度解析:从内置规则到自定义验证器实战

1. 项目概述:为什么表单验证是前端开发的“必争之地” 在任何一个涉及用户输入的中后台管理系统中,表单验证都是绕不开的核心环节。它不仅仅是前端的一道“防线”,更是用户体验的直观体现。一个交互友好、提示清晰的验证系统,能极…

2026/8/3 8:46:21阅读更多 →
系统化构建与维护FAQ知识库:从问题采集到智能应用全流程指南

系统化构建与维护FAQ知识库:从问题采集到智能应用全流程指南

1. 项目概述:从“常见问题”到系统性知识库的构建 在任何一个领域,无论是软件开发、硬件维护、产品运营,还是日常使用某个工具,我们都会遇到一个永恒的话题: 常见问题 。这四个字看似简单,背后却是一个庞…

2026/8/3 8:46:20阅读更多 →
深入理解 I2C 协议

深入理解 I2C 协议

1. 引言 I2C(Inter-Integrated Circuit,集成电路总线)是一种由飞利浦公司(现恩智浦半导体)在 1980 年代开发的同步、多主从、串行、半双工通信总线协议。它以其简洁的硬件接口(仅需两根线)、支…

2026/8/3 8:46:11阅读更多 →
杰理之双备份测试盒无线升级更新不了ANC参数问题【篇】

杰理之双备份测试盒无线升级更新不了ANC参数问题【篇】

替换下面的库rebuild,并且需要重复进行两次无线升级

2026/8/3 10:01:02阅读更多 →
Java+Vue在线考试系统毕业设计:从环境搭建到防作弊策略

Java+Vue在线考试系统毕业设计:从环境搭建到防作弊策略

1. 毕业设计选在线考试系统,先想清楚要解决什么问题如果你正在为计算机专业的毕业设计选题发愁,看到“在线考试系统”这个题目,第一反应可能是“这个题目太老了,会不会没新意?”或者“技术栈看起来就是增删改查&#x…

2026/8/3 10:01:02阅读更多 →
大模型RAG知识库全链路实战:从零构建高性能检索增强生成系统

大模型RAG知识库全链路实战:从零构建高性能检索增强生成系统

这次我们来看一个关于大模型RAG知识库的实战教程项目。这个项目不是单纯的概念讲解,而是聚焦于“全链路优化方案”与“工程级落地实战”,目标是在一周内让你掌握从零到一构建高性能RAG系统的核心能力,避开99%的常见坑点。对于想将大模型与私有…

2026/8/3 10:01:02阅读更多 →
杰理之DAC没有设置为高阻状态【篇】

杰理之DAC没有设置为高阻状态【篇】

void hw_close_dac(void) { memset(JL_ADDA, 0x0, sizeof(JL_ADDA_TypeDef)); SFR(JL_ADDA->DAA_CON2, 15, 1, 1); SFR(JL_ADDA->DAA_CON2, 5, 1, 1); }

2026/8/3 10:01:02阅读更多 →
QwenPaw 2.0.1实战:从对话AI到自动化Agent的工程化构建指南

QwenPaw 2.0.1实战:从对话AI到自动化Agent的工程化构建指南

上周在帮一个朋友处理一个自动化任务时,他提了一个问题:“现在这些AI工具,单次对话都挺聪明,但我想让它每天定时帮我检查邮件、整理摘要、再根据内容生成报告,这一套流程下来,每次都得我手动触发、复制粘贴…

2026/8/3 10:01:02阅读更多 →
MFC MDI静态切分窗口实现:多视图界面布局与文档视图架构详解

MFC MDI静态切分窗口实现:多视图界面布局与文档视图架构详解

1. 项目概述与核心价值 最近在整理一些老项目的代码,又翻到了当年用VC MFC做的一个多文档界面(MDI)应用,里面用到了静态切分窗口来组织复杂的视图。这个技术点现在提的人少了,但在处理需要同时展示多种数据、多个视角的…

2026/8/3 9:59:02阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/3 0:29:53阅读更多 →
限时公开!某头部SaaS公司内部AI模板工厂架构文档(含5类行业模板源码+性能压测报告)

限时公开!某头部SaaS公司内部AI模板工厂架构文档(含5类行业模板源码+性能压测报告)

更多请点击: https://intelliparadigm.com 第一章:AI模板批量生成的核心价值与落地全景 AI模板批量生成正从实验性工具演进为现代软件工程的关键基础设施。它通过语义理解、上下文感知与结构化约束,将重复性高、模式明确的代码/文档/配置生成…

2026/8/3 0:33:53阅读更多 →
如何快速找回消失的网页:Web Archives浏览器扩展终极指南

如何快速找回消失的网页:Web Archives浏览器扩展终极指南

如何快速找回消失的网页:Web Archives浏览器扩展终极指南 【免费下载链接】web-archives Browser extension for viewing archived and cached versions of web pages, available for Chrome, Edge and Safari 项目地址: https://gitcode.com/gh_mirrors/we/web-a…

2026/8/3 0:20:37阅读更多 →
3个让你工作效率翻倍的Umi-OCR实战技巧:免费离线文字识别完全指南

3个让你工作效率翻倍的Umi-OCR实战技巧:免费离线文字识别完全指南

3个让你工作效率翻倍的Umi-OCR实战技巧:免费离线文字识别完全指南 【免费下载链接】Umi-OCR OCR software, free and offline. 开源、免费的离线OCR软件。支持截屏/批量导入图片,PDF文档识别,排除水印/页眉页脚,扫描/生成二维码。…

2026/8/3 0:00:32阅读更多 →
[具身智能-181]:PC+服务器+具身机器人:构建具身智能从仿真到量产的闭环迭代混合架构

[具身智能-181]:PC+服务器+具身机器人:构建具身智能从仿真到量产的闭环迭代混合架构

PC服务器具身机器人:构建具身智能从仿真到量产的闭环迭代混合架构一、前言:具身智能需要“混合算力闭环系统”传统人工智能依赖云端静态数据集训练,不具备物理交互能力,无法适应真实世界的不确定性。具身智能(Embodied…

2026/8/3 0:00:32阅读更多 →
[具身智能-181]:大分布式通信模型对比:看懂为什么 DDS 是 ROS2 底层通信最优解

[具身智能-181]:大分布式通信模型对比:看懂为什么 DDS 是 ROS2 底层通信最优解

前言构建机器人、具身智能这类分布式实时系统,通信底座直接决定整套系统的实时性、容错性、组网能力。分布式领域长期存在 4 类经典通信架构:点对点模式、Broker 中间代理模式、广播模式、以数据为中心(DDS)模式。很多开发者疑惑&…

2026/8/3 0:00:32阅读更多 →
无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理 【免费下载链接】lossless-cut The swiss army knife of lossless video/audio editing 项目地址: https://gitcode.com/gh_mirrors/lo/lossless-cut 在数字媒体创作领域,视频编辑处理的质量损…

2026/8/3 2:32:59阅读更多 →
AI辅助本科论文写作:8大工具评测与高效使用指南

AI辅助本科论文写作:8大工具评测与高效使用指南

1. 本科生论文写作的AI辅助现状本科毕业论文是每个大学生必须跨越的一道坎。记得我当年写论文时,光是文献检索就花了整整两周时间,打印的参考文献堆满了半个书桌。如今AI技术的发展为学术写作带来了革命性变化,合理使用这些工具可以节省80%以…

2026/8/3 2:33:01阅读更多 →
如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手 【免费下载链接】ticket-purchase 大麦自动抢票,支持人员、城市、日期场次、价格选择 项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase 还在为抢不到热门演唱会门票…

2026/8/3 2:33:04阅读更多 →