小合
小合
发布于 2025-07-03 / 31 阅读
0
0

Linux Shell 基本语法

echo 输出

echoLinux/Unix 和 Windows 系统中常用的命令行工具,用于在终端或控制台输出文本内容。

name="John"

echo "My name is $name"

echo -e "Line1\nLine2" // -e 转义字符解析

常见的转义字符:

  • \n - 换行

  • \t - 制表符

  • \\ - 反斜杠

echo "This is a test" > test.txt # 覆盖写入

echo "Another line" >> test.txt # 追加写入

分支逻辑 if ..; then ... fi

if [ condition ]; then
  commands
elif [ condition ]; then
  commands
else
  commands
fi

# 常用条件:

[ -f file ] # 文件存在

[ -d dir ] # 目录存在

[ -z str ] # 字符串为空

[$a -eq $b ] # 数值相等

循环控制 while ..; do .. done for ..; do... done

# For 循环
for i in {1..5}; do
  echo $i
done

# While 循环
count=5
while [ $count -gt 0 ]; do
  echo $count
  count=$((count-1))
done

函数定义 function

function log() {
  echo "[$(date)] $1" >> /var/log/app.log
}

log "Application started"

常用命令

2>&1 让命令把错误消息和正常输出都记录到同一个日志文件里,避免漏掉重要报错信息。

find /logs -name "*.log" -delete -print >> clean.log
# 如果遇到权限错误,报错只会显示在终端,不会进 clean.log

find /logs -name "*.log" -delete -print >> clean.log 2>&1
# 所有报错会和正常输出一起写入 clean.log

awk

awk 是一个强大的文本处理工具,可以按行扫描文件或输入流,根据规则提取、转换并输出数据,特别适合处理结构化文本

(如日志、CSV等)

  • awk 的基本结构是:条件 {动作}

    • 条件(可选):决定哪些行要处理(如 /error/$1 > 100)。

    • 动作(必选):对匹配的行执行什么操作(必须用 {} 包裹)

    • {}awk 的语法要求,用来明确「在什么条件下执行什么操作」

awk '{print 1; print $2}' file.txt # 打印第1列和第2列

#运用示例
echo "清理完成. 共释放空间: $(du -sh $LOG_DIR | awk '{print $1}')" >> /var/log/log_cleaner.log
输出:清理完成. 共释放空间: 1.2G


du:计算磁盘空间用量
-s:显示总大小(不递归列出子目录)
-h:以人类可读格式显示(如 1.4G、250M)
$LOG_DIR:目标目录路径(需提前定义的变量,如 /var/log)
 awk '{print $1}': 提取 du 输出的第一个字段(即空间大小值,如 2.7G),丢弃目录路径。字段:按行/空格等分割,awk的功能

程序管理systemctl

systemctl 是 Linux 系统中用于管理 systemd(系统和服务管理器)的核心命令

主要功能包括 启动/停止服务、查看服务状态、设置开机自启

它是现代 Linux 发行版(如 CentOS 7+、Ubuntu 16.04+)中替代旧版 servicechkconfig 的工具

管理web服务器(Nginx/Apache),管理数据库(MySQL)

功能

命令示例

说明

启动服务

sudo systemctl start nginx

立即启动某个服务(如 nginx)

停止服务

sudo systemctl stop nginx

立即停止某个服务

重启服务

sudo systemctl restart nginx

重启服务(先停止再启动)

重新加载配置

sudo systemctl reload nginx

重新加载配置文件(不重启服务,适合 Nginx/Apache)

查看服务状态

systemctl status nginx

查看服务是否运行、日志、PID 等信息(按 q 退出)

启用开机自启

sudo systemctl enable nginx

设置服务开机自动启动

禁用开机自启

sudo systemctl disable nginx

取消服务开机自动启动

检查是否启用

systemctl is-enabled nginx

返回 enabled(已启用)或 disabled(未启用)

查看所有服务

systemctl list-units --type=service

列出所有已加载的服务(--all 显示包括未运行的)

查看失败的服务

systemctl --failed

显示启动失败的服务

重启系统

sudo systemctl reboot

等同于 reboot,重启计算机

关机

sudo systemctl poweroff

等同于 poweroff,关闭计算机

挂起(睡眠)

sudo systemctl suspend

进入睡眠模式(数据保存在内存)

休眠(到磁盘)

sudo systemctl hibernate

进入休眠模式(数据保存到硬盘)

shell的执行方式汇总

执行方式

命令示例

适用场景

直接执行

./script.sh

开发测试阶段

指定解释器

bash script.sh

无执行权限或跨环境

后台运行

nohup ./monitor.sh &

长期运行的服务监控

远程执行

ssh user@host 'bash -s' < script.sh

多服务器批量操作

定时任务 (cron)

crontab -e 添加: 0 3 * * * /backup.sh

每日自动备份

Systemd 服务

创建.service文件

需要开机自启的服务



评论