centos

CentOS Stream 8脚本编写入门

小樊
33
2025-04-26 19:15:24
栏目: 智能运维

在CentOS Stream 8上编写Shell脚本是一个强大的技能,可以帮助自动化日常任务和系统管理。以下是一个基本的入门指南,帮助你开始编写和运行Shell脚本。

1. 创建Shell脚本文件

首先,使用文本编辑器(如vinano)创建一个新的文件,并添加Shell脚本代码。例如,创建一个名为test.sh的文件:

#!/bin/bash
echo "Hello, World!"

2. 添加执行权限

在CentOS中,需要为Shell脚本文件赋予执行权限。使用以下命令添加执行权限:

chmod +x test.sh

3. 运行Shell脚本

要运行创建的Shell脚本文件,可以使用以下命令:

./test.sh

你应该会看到输出“Hello, World!”。

4. 脚本中的基本元素

变量定义与引用

在脚本中定义和使用变量:

#!/bin/bash
APP_NAME="web_server"
LOG_DIR="/var/log/$APP_NAME"
MAX_SIZE=100

echo "应用程序名称: $APP_NAME"
echo "日志目录大小限制: $MAX_SIZE MB"

条件判断

使用if语句进行条件判断:

#!/bin/bash
SERVICE="nginx"

if systemctl is-active --quiet "$SERVICE"; then
    echo "$SERVICE 正在运行"
elif [ -f "/usr/sbin/$SERVICE" ]; then
    echo "$SERVICE 已安装但未启动"
else
    echo "$SERVICE 未安装"
fi

循环结构

使用for循环遍历列表或数组:

#!/bin/bash
for LOG_FILE in /var/log/*.log; do
    echo "处理文件: $LOG_FILE"
    gzip "$LOG_FILE"
done

函数编写

使用函数来封装脚本逻辑:

#!/bin/bash
function disk_alert() {
    local USAGE=$(df -h / | awk 'NR2 {print $5}' | tr -d '%')
    if [ "$USAGE" -gt 90 ]; then
        echo "警告:根分区使用率超过90%!"
        return 1
    fi
    return 0
}

disk_alert

5. 实战案例

日志清理脚本

自动清理超过一定天数的日志文件:

#!/bin/bash
LOG_DIR="/var/log/app_logs"
MAX_DAYS=30

find "$LOG_DIR" -name "*.log" -type f -mtime +$MAX_DAYS -delete
echo "$(date) 已清理超过 $MAX_DAYS 天的日志" >> /var/log/clean.log

服务监控脚本

监控服务状态并在需要时重启:

#!/bin/bash
SERVICE="httpd"

if ! systemctl is-active --quiet "$SERVICE"; then
    systemctl restart "$SERVICE"
    echo "$(date) $SERVICE 已重启" >> /var/log/service_monitor.log
fi

6. 定时任务配置

使用crontab配置定时任务:

# 编辑任务列表
crontab -e

# 添加定时规则
# 每天凌晨3点清理日志
0 3 * * * /path/to/log_clean.sh

# 每5分钟检查服务状态
*/5 * * * * /path/to/service_monitor.sh

通过以上步骤,你可以在CentOS Stream 8上编写和运行基本的Shell脚本。根据具体需求,你可以编写更复杂的脚本,用于自动化各种任务和管理系统。

0
看了该问题的人还看了