欢迎来到阿雄的小站:您的IT桌面运维技术资源库
当前位置:首页 >> 国产系统 >> Linux命令手册:高级脚本编写和自动化任务

Linux命令手册:高级脚本编写和自动化任务

电脑帮客网 国产系统 8

01


脚本基础语法



Linux脚本通常使用Shell编程语言的语法。Shell是一种命令行解释器,它使用特定的语法来执行命令、控制流程以及进行文本处理等操作。最常用的Shell是Bash(Bourne Again Shell),因此大多数Linux脚本都是用Bash脚本语言编写的。

新建脚本文件:


echo "" > script.sh



给予脚本执行权限:


chmod +x script.sh


以下是Bash脚本中常用的一些语法和特性:

1.第一行

脚本的第一行指定了脚本解释器的路径。


#!/bin/bash


2.注释

注释以 # 开头,用于解释代码的作用。


# 定义变量
name="World"
# 使用变量
echo "Hello, $name!"


3.变量

变量在脚本中用于存储数据。定义和使用变量的方式如下:


# 定义变量
name="World"
# 使用变量
echo "Hello, $name!"


4. 字符串操作

字符串操作在脚本中非常常见。以下是一些基本的字符串操作:


# 字符串连接
full_name="Hello, World"
echo "$full_name!"
# 获取字符串长度
length=${#full_name}
echo "Length of the string: $length"
# 提取子字符串
substring=${full_name:0:5}
echo "Substring: $substring"

5. 数学运算

可以使用expr、bc或let进行简单的数学运算

  • # 使用expr
    result=$(expr 5 + 3)
    echo "Result: $result"
    # 使用bc(支持浮点运算)result=$(echo "scale=2; 5.5 + 3.3" | bc)
    echo "Result with bc: $result"
    # 使用letlet result=5+3
    echo "Result with let: $result"


6. 文件操作

文件操作是脚本中的常见任务,包括读写文件、检查文件是否存在等:

# 创建文件并写入内容
echo "This is a test file" > testfile.txt
# 追加内容到文件
echo "Appending this line" >> testfile.txt
# 读取文件内容
content=$(cat testfile.txt)
echo "File content:"
echo "$content"
# 检查文件是否存在
if [ -f "testfile.txt" ]; then 
   echo "File exists"
   else 
      echo "File does not exist"fi

7. 条件判断


(1)if语句

#!/bin/bash
if [ "$1" == "start" ]; then    
echo "Starting service..."elif [ "$1" == "stop" ]; then    
echo "Stopping service..."
else    
echo "Usage: $0 {start|stop}"
fi

(2)case语句


#!/bin/bash
case "$1" in 
   start) 
          echo "Starting service..."        ;;    stop)        echo "Stopping service..."        ;;    *)        echo "Usage: $0 {start|stop}"        ;;esac


8.循环结构

(1)for循环


#!/bin/bash
# for循环
for i in {1..5}; do 
   echo "Iteration $i"
   done


(2)while循环


#!/bin/bash
# while循环
count=1while [ $count -le 5 ]; do    
echo "Count: $count"    
count=$((count + 1))
done


9.函数定义


#!/bin/bash
# 定义函数function greet {    
echo "Hello, $1!"
}
# 调用函数
greet "World"


10. 输入和输出

输入和输出操作在脚本中也很常见:


# 从标准输入读取数据e
cho "Enter your name:"
read name
echo "Hello, $name!"
# 输出重定向
ls -l > output.txt  # 将输出重定向到文件
ls -l 2> error.txt  # 将错误输出重定向到文件


11. 环境变量

环境变量在脚本中用于存储全局信息,可以通过export命令设置:


# 设置环境变量
export MY_VARIABLE="SomeValue"
# 使用环境变量
echo "The value of MY_VARIABLE is: $MY_VARIABLE"


12. 异常信号处理

用于在脚本中处理中断和其他异常事件:


# 捕获Ctrl+C信号
trap 'echo "Ctrl+C pressed. Exiting..."; exit' SIGINT
# 无限循环(按Ctrl+C退出)
while true; do 
   echo "Running..." 
      sleep 1
   done




02

自动化任务



1. 计划任务:cron


# 编辑计划任务
crontab -e
# 添加一个每天凌晨2点运行的脚本
0 2 * * * /path/to/your_script.sh


脚本参数说明:


基本语法:* * * * * [command]
每条命令由五个字段和一个命令组成:
第1个字段:分钟(0-59)
第2个字段:小时(0-23)
第3个字段:日期(1-31)
第4个字段:月份(1-12)
第5个字段:星期几(0-7,其中0和7都表示星期天)

特殊字符: 
, 表示多个值,例如 1,3,5。 
- 表示一个范围,例如 1-5。 
/ 表示步长,例如 */10 表示每隔10分钟。
示例:
* * * * *  表示每分钟执行一次 command 命令。建议测试时使用该命令。
0 2 * * * command 表示每天凌晨2点执行一次 command 命令。
30 18 * * 1 command 表示每周一的18:30执行一次 command 命令。
0 8 * * 1 rm /tmp/*.tmp 表示每周一早上8点清理临时文件。
0 * * * * /home/ht/backup.sh 表示每小时执行一次数据备份。


2. 使用 at 命令


# 安装at服务
sudo apt install at
# 设置一次性任务
echo "/path/to/your_script.sh" | at 2:00 PM


3. 日志管理


#!/bin/bash
# 将输出重定向到日志文件
exec > /path/to/logfile.log 2>&1
# 脚本内容
echo "Script started at: $(date)"




03

实际应用




1.备份资料

把 /home/ht/下载 目录内的资料全部压缩备份到 /backup 。


#!/bin/bash
SOURCE_DIR="/home/ht/下载"
BACKUP_DIR="/backup"DATE=$(date +%Y%m%d%H%M%S)
# 创建备份
tar -czf $BACKUP_DIR/backup-$DATE.tar.gz $SOURCE_DIR
echo "Backup completed: backup-$DATE.tar.gz"


2.系统监控脚本


#!/bin/bash
# 检查磁盘空间
DISK_SPACE=$(df -h / | grep / | awk '{ print $5 }')
echo "Disk space usage: $DISK_SPACE"
# 检查内存使用情况
MEMORY_USAGE=$(free -m | grep Mem | awk '{ print $3 "MB" }')
echo "Memory usage: $MEMORY_USAGE"
# 检查CPU负载
LOAD_AVERAGE=$(uptime | awk '{print $10}')
echo "Load average: $LOAD_AVERAGE"


执行后,显示当前的磁盘、内存、CPU使用情况。如下图所示:

3.调试和优化

使用set -x开启调试模式,逐行显示执行的命令。


#!/bin/bash
set -x
# 脚本内容...


注意:为避免不必要的子Shell调用,尽量使用内置命令和函数。


协助本站SEO优化一下,谢谢!
关键词不能为空
同类推荐
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言