活动公告

系统通知
05-18 21:22
系统通知
通知:本站资源由网友上传分享,如有违规等问题请到版务模块进行投诉,资源失效请在帖子内回复要求补档,会尽快处理!
10-23 09:31

Debian系统命令行完全指南 从基础操作到高级管理技巧助你轻松掌握Linux命令行精髓

SunJu_FaceMall

3万

主题

2860

科技点

3万

积分

白金月票

碾压王

积分
32872

塔罗立华奏

<font color=白金月票" /> 发表于 2025-9-14 18:40:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
引言

Debian作为最古老且最稳定的Linux发行版之一,以其可靠性、安全性和自由软件理念而闻名。掌握Debian系统的命令行操作是每个Linux用户和系统管理员的必备技能。本指南将从基础操作开始,逐步深入到高级管理技巧,帮助读者全面掌握Debian命令行的精髓。无论您是Linux新手还是有经验的用户,本指南都能提供有价值的知识和实用技巧。

一、基础操作

1. 文件和目录操作

在Linux系统中,一切皆文件。因此,掌握文件和目录操作是使用命令行的基础。

使用ls命令可以列出目录内容:
  1. # 基本用法
  2. ls
  3. # 显示详细信息(权限、所有者、大小、修改时间等)
  4. ls -l
  5. # 显示隐藏文件(以.开头的文件)
  6. ls -a
  7. # 以人类可读的格式显示文件大小
  8. ls -h
  9. # 组合使用
  10. ls -lah
复制代码

使用cd命令可以切换当前工作目录:
  1. # 切换到用户主目录
  2. cd ~
  3. # 切换到上一级目录
  4. cd ..
  5. # 切换到之前的工作目录
  6. cd -
  7. # 切换到指定目录
  8. cd /path/to/directory
复制代码

使用mkdir和rmdir命令可以创建和删除目录:
  1. # 创建单个目录
  2. mkdir new_directory
  3. # 创建多级目录(包括父目录)
  4. mkdir -p parent/child/grandchild
  5. # 删除空目录
  6. rmdir empty_directory
  7. # 删除非空目录及其内容(使用rm命令)
  8. rm -r non_empty_directory
复制代码

使用cp、mv和rm命令可以复制、移动和删除文件:
  1. # 复制文件
  2. cp source_file destination_file
  3. # 复制目录及其内容
  4. cp -r source_directory destination_directory
  5. # 移动/重命名文件
  6. mv old_name new_name
  7. # 移动文件到目录
  8. mv file.txt /path/to/directory/
  9. # 删除文件
  10. rm file.txt
  11. # 强制删除文件(不提示)
  12. rm -f file.txt
  13. # 递归删除目录及其内容
  14. rm -r directory
  15. # 强制递归删除(谨慎使用)
  16. rm -rf directory
复制代码

使用cat、less和more命令可以查看文件内容:
  1. # 显示整个文件内容
  2. cat file.txt
  3. # 分页显示文件内容(可以上下滚动)
  4. less file.txt
  5. # 分页显示文件内容(只能向下滚动)
  6. more file.txt
  7. # 显示文件开头部分
  8. head -n 20 file.txt
  9. # 显示文件结尾部分
  10. tail -n 20 file.txt
  11. # 实时查看文件更新(常用于日志文件)
  12. tail -f /var/log/syslog
复制代码

2. 文本处理

文本处理是命令行中常见的任务,Debian提供了强大的文本处理工具。

使用grep命令可以在文件中搜索文本:
  1. # 在文件中搜索特定文本
  2. grep "search_term" file.txt
  3. # 递归搜索目录中的文件
  4. grep -r "search_term" /path/to/directory/
  5. # 显示匹配行及其行号
  6. grep -n "search_term" file.txt
  7. # 显示不包含匹配文本的行
  8. grep -v "search_term" file.txt
  9. # 使用正则表达式搜索
  10. grep -E "regex_pattern" file.txt
复制代码

使用sort命令可以对文本进行排序:
  1. # 对文件内容进行排序
  2. sort file.txt
  3. # 对数字进行排序
  4. sort -n numbers.txt
  5. # 逆序排序
  6. sort -r file.txt
  7. # 按指定列排序
  8. sort -k 2 file.txt
复制代码

使用uniq命令可以去除重复的行:
  1. # 去除相邻的重复行
  2. sort file.txt | uniq
  3. # 显示重复行及其出现次数
  4. sort file.txt | uniq -c
  5. # 只显示重复的行
  6. sort file.txt | uniq -d
复制代码

使用sed命令可以进行文本替换:
  1. # 替换文本中的字符串
  2. sed 's/old_text/new_text/g' file.txt
  3. # 直接修改文件(谨慎使用)
  4. sed -i 's/old_text/new_text/g' file.txt
  5. # 删除包含特定文本的行
  6. sed '/pattern_to_delete/d' file.txt
  7. # 只显示包含特定文本的行
  8. sed -n '/pattern_to_keep/p' file.txt
复制代码

使用nano或vim可以编辑文本文件:
  1. # 使用nano编辑器(适合新手)
  2. nano file.txt
  3. # 使用vim编辑器(功能强大)
  4. vim file.txt
复制代码

nano的基本操作:

• Ctrl+O:保存文件
• Ctrl+X:退出编辑器
• Ctrl+W:搜索文本
• Ctrl+K:剪切当前行
• Ctrl+U:粘贴剪切的行

vim的基本操作:

• i:进入插入模式
• Esc:返回命令模式
• :w:保存文件
• :q:退出vim
• :wq:保存并退出
• :q!:不保存并退出

3. 用户和权限管理

Linux是一个多用户系统,了解如何管理用户和权限对于系统安全至关重要。
  1. # 创建新用户
  2. adduser new_username
  3. # 删除用户
  4. deluser username
  5. # 修改用户密码
  6. passwd username
  7. # 切换用户
  8. su - username
  9. # 以管理员权限执行命令
  10. sudo command
  11. # 查看当前用户
  12. whoami
  13. # 查看用户信息
  14. id username
复制代码
  1. # 创建新组
  2. addgroup new_groupname
  3. # 删除组
  4. delgroup groupname
  5. # 将用户添加到组
  6. adduser username groupname
  7. # 从组中移除用户
  8. deluser username groupname
  9. # 查看用户所属的组
  10. groups username
复制代码

使用chmod命令可以修改文件权限:
  1. # 使用符号表示法修改权限
  2. chmod u+x file.txt  # 给文件所有者添加执行权限
  3. chmod g-w file.txt  # 移除文件所属组的写权限
  4. chmod o=r file.txt  # 设置其他用户的权限为只读
  5. # 使用数字表示法修改权限
  6. chmod 755 file.txt  # rwxr-xr-x
  7. chmod 644 file.txt  # rw-r--r--
  8. # 递归修改目录及其内容的权限
  9. chmod -R 755 directory/
复制代码

使用chown命令可以修改文件所有者:
  1. # 修改文件所有者
  2. chown new_owner file.txt
  3. # 修改文件所有者和所属组
  4. chown new_owner:new_group file.txt
  5. # 递归修改目录及其内容的所有者
  6. chown -R new_owner:new_group directory/
复制代码

使用chgrp命令可以修改文件所属组:
  1. # 修改文件所属组
  2. chgrp new_group file.txt
  3. # 递归修改目录及其内容的所属组
  4. chgrp -R new_group directory/
复制代码

4. 系统信息查看

了解如何查看系统信息对于系统管理和故障排除非常重要。
  1. # 显示系统信息
  2. uname -a
  3. # 显示Debian版本信息
  4. cat /etc/debian_version
  5. # 显示内核版本
  6. uname -r
  7. # 显示系统运行时间
  8. uptime
  9. # 显示当前日期和时间
  10. date
  11. # 显示日历
  12. cal
复制代码
  1. # 显示CPU信息
  2. cat /proc/cpuinfo
  3. # 显示内存信息
  4. cat /proc/meminfo
  5. free -h
  6. # 显示磁盘使用情况
  7. df -h
  8. # 显示磁盘分区信息
  9. fdisk -l
  10. # 显示PCI设备信息
  11. lspci
  12. # 显示USB设备信息
  13. lsusb
复制代码
  1. # 显示系统负载和正在运行的进程
  2. top
  3. # 显示更详细的进程信息
  4. htop
  5. # 显示所有正在运行的进程
  6. ps aux
  7. # 显示特定用户的进程
  8. ps -u username
  9. # 显示系统资源使用情况
  10. iostat
  11. vmstat
复制代码

二、中级技巧

1. 软件包管理

Debian使用APT(Advanced Package Tool)作为其软件包管理系统,掌握APT的使用是管理Debian系统的关键。
  1. # 更新软件包列表
  2. sudo apt update
  3. # 升级已安装的软件包
  4. sudo apt upgrade
  5. # 升级系统(包括依赖关系)
  6. sudo apt full-upgrade
  7. # 安装软件包
  8. sudo apt install package_name
  9. # 安装多个软件包
  10. sudo apt install package1 package2 package3
  11. # 删除软件包
  12. sudo apt remove package_name
  13. # 删除软件包及其配置文件
  14. sudo apt purge package_name
  15. # 删除不再需要的软件包
  16. sudo apt autoremove
  17. # 清理下载的软件包缓存
  18. sudo apt clean
复制代码
  1. # 搜索软件包
  2. apt search search_term
  3. # 显示软件包详细信息
  4. apt show package_name
  5. # 列出已安装的软件包
  6. apt list --installed
  7. # 列出可升级的软件包
  8. apt list --upgradable
  9. # 查找哪个软件包提供了特定文件
  10. apt-file search filename
复制代码
  1. # 编辑软件源列表
  2. sudo nano /etc/apt/sources.list
  3. # 添加第三方软件源
  4. sudo add-apt-repository repository_url
  5. # 更新软件源后更新软件包列表
  6. sudo apt update
复制代码
  1. # 安装.deb包
  2. sudo dpkg -i package_file.deb
  3. # 删除软件包
  4. sudo dpkg -r package_name
  5. # 删除软件包及其配置文件
  6. sudo dpkg -P package_name
  7. # 列出已安装的软件包
  8. dpkg -l
  9. # 查找软件包安装的文件
  10. dpkg -L package_name
  11. # 查找文件属于哪个软件包
  12. dpkg -S /path/to/file
复制代码

2. 进程管理

进程管理是系统管理的重要部分,包括查看、控制和优化运行中的进程。
  1. # 显示所有进程
  2. ps aux
  3. # 显示特定用户的进程
  4. ps -u username
  5. # 显示进程树
  6. pstree
  7. # 实时显示进程信息
  8. top
  9. # 更友好的实时进程监视器
  10. htop
  11. # 显示系统资源使用情况
  12. iostat
  13. vmstat
复制代码
  1. # 终止进程
  2. kill process_id
  3. # 强制终止进程
  4. kill -9 process_id
  5. # 终止进程名
  6. pkill process_name
  7. # 根据模式匹配终止进程
  8. pkill -f pattern
  9. # 暂停进程
  10. kill -STOP process_id
  11. # 恢复暂停的进程
  12. kill -CONT process_id
  13. # 后台运行进程
  14. command &
  15. # 将前台进程移到后台
  16. Ctrl+Z
  17. bg
  18. # 将后台进程移到前台
  19. fg job_id
复制代码
  1. # 以指定优先级启动进程
  2. nice -n priority_value command
  3. # 修改运行中进程的优先级
  4. renice priority_value -p process_id
  5. # 查看进程优先级
  6. ps -l
复制代码
  1. # 启动服务
  2. sudo systemctl start service_name
  3. # 停止服务
  4. sudo systemctl stop service_name
  5. # 重启服务
  6. sudo systemctl restart service_name
  7. # 重新加载服务配置
  8. sudo systemctl reload service_name
  9. # 启用服务(开机自启)
  10. sudo systemctl enable service_name
  11. # 禁用服务
  12. sudo systemctl disable service_name
  13. # 查看服务状态
  14. sudo systemctl status service_name
  15. # 查看所有服务状态
  16. sudo systemctl list-units --type=service
复制代码

3. 网络配置和故障排除

网络配置和故障排除是系统管理员的常见任务,Debian提供了丰富的工具来管理网络。
  1. # 显示网络接口信息
  2. ip addr show
  3. # 显示网络接口统计信息
  4. ip -s link show
  5. # 启用网络接口
  6. sudo ip link set interface_name up
  7. # 禁用网络接口
  8. sudo ip link set interface_name down
  9. # 配置IP地址
  10. sudo ip addr add ip_address/prefix_length dev interface_name
  11. # 删除IP地址
  12. sudo ip addr del ip_address/prefix_length dev interface_name
  13. # 显示路由表
  14. ip route show
  15. # 添加默认网关
  16. sudo ip route add default via gateway_ip
  17. # 删除默认网关
  18. sudo ip route del default
复制代码
  1. # 测试网络连通性
  2. ping destination_ip_or_hostname
  3. # 跟踪网络路径
  4. traceroute destination_ip_or_hostname
  5. # 显示网络连接
  6. netstat -tuln
  7. # 显示网络连接和进程
  8. netstat -tulnp
  9. # 显示网络套接字统计信息
  10. ss -tuln
  11. # 显示网络接口统计信息
  12. cat /proc/net/dev
复制代码
  1. # 查看DNS配置
  2. cat /etc/resolv.conf
  3. # 测试DNS解析
  4. nslookup domain_name
  5. # 更详细的DNS查询
  6. dig domain_name
  7. # 测试DNS解析时间
  8. time nslookup domain_name
复制代码

Debian使用iptables或nftables作为防火墙工具,以及ufw(Uncomplicated Firewall)作为简化的防火墙前端。
  1. # 安装ufw
  2. sudo apt install ufw
  3. # 启用防火墙
  4. sudo ufw enable
  5. # 禁用防火墙
  6. sudo ufw disable
  7. # 查看防火墙状态
  8. sudo ufw status
  9. # 允许特定端口
  10. sudo ufw allow port_number
  11. # 拒绝特定端口
  12. sudo ufw deny port_number
  13. # 允许特定IP地址
  14. sudo ufw allow from ip_address
  15. # 拒绝特定IP地址
  16. sudo ufw deny from ip_address
  17. # 删除规则
  18. sudo ufw delete rule_number
  19. # 重置防火墙
  20. sudo ufw reset
复制代码
  1. # 显示网络连接和带宽使用
  2. iftop
  3. # 显示网络接口的实时带宽使用
  4. bmon
  5. # 显示网络连接的实时带宽使用
  6. nethogs
  7. # 扫描网络主机
  8. nmap -sn network_address/prefix_length
  9. # 扫描开放端口
  10. nmap -p- target_ip
  11. # 显示网络统计信息
  12. netstat -s
复制代码

4. Shell脚本基础

Shell脚本自动化是Linux系统管理的重要技能,掌握Shell脚本可以大大提高工作效率。
  1. # 创建Shell脚本文件
  2. nano script.sh
  3. # 添加Shebang行(指定解释器)
  4. #!/bin/bash
  5. # 添加执行权限
  6. chmod +x script.sh
  7. # 运行脚本
  8. ./script.sh
  9. # 使用bash解释器运行脚本
  10. bash script.sh
复制代码
  1. #!/bin/bash
  2. # 定义变量
  3. name="John"
  4. age=30
  5. # 使用变量
  6. echo "Name: $name"
  7. echo "Age: $age"
  8. # 命令行参数
  9. echo "Script name: $0"
  10. echo "First parameter: $1"
  11. echo "Second parameter: $2"
  12. echo "All parameters: $@"
  13. echo "Number of parameters: $#"
  14. # 特殊变量
  15. echo "Process ID: $$"
  16. echo "Exit code of last command: $?"
复制代码
  1. #!/bin/bash
  2. # if语句
  3. if [ $age -gt 18 ]; then
  4.     echo "Adult"
  5. elif [ $age -eq 18 ]; then
  6.     echo "Exactly 18"
  7. else
  8.     echo "Minor"
  9. fi
  10. # 检查文件是否存在
  11. if [ -f "/etc/passwd" ]; then
  12.     echo "/etc/passwd exists"
  13. fi
  14. # 检查目录是否存在
  15. if [ -d "/home" ]; then
  16.     echo "/home directory exists"
  17. fi
  18. # 检查文件是否可读
  19. if [ -r "/etc/passwd" ]; then
  20.     echo "/etc/passwd is readable"
  21. fi
  22. # 检查字符串是否相等
  23. if [ "$name" = "John" ]; then
  24.     echo "Name is John"
  25. fi
复制代码
  1. #!/bin/bash
  2. # for循环
  3. for i in 1 2 3 4 5; do
  4.     echo "Number: $i"
  5. done
  6. # 遍历文件
  7. for file in *; do
  8.     echo "File: $file"
  9. done
  10. # C风格的for循环
  11. for ((i=0; i<5; i++)); do
  12.     echo "Index: $i"
  13. done
  14. # while循环
  15. count=0
  16. while [ $count -lt 5 ]; do
  17.     echo "Count: $count"
  18.     count=$((count + 1))
  19. done
  20. # until循环
  21. count=0
  22. until [ $count -ge 5 ]; do
  23.     echo "Count: $count"
  24.     count=$((count + 1))
  25. done
复制代码
  1. #!/bin/bash
  2. # 定义函数
  3. hello() {
  4.     echo "Hello, $1!"
  5. }
  6. # 调用函数
  7. hello "John"
  8. # 带返回值的函数
  9. add() {
  10.     result=$(( $1 + $2 ))
  11.     return $result
  12. }
  13. add 5 3
  14. echo "Sum: $?"
复制代码
  1. #!/bin/bash
  2. # 读取用户输入
  3. echo "Enter your name:"
  4. read name
  5. echo "Hello, $name!"
  6. # 带提示的读取
  7. read -p "Enter your age: " age
  8. echo "You are $age years old."
  9. # 密码输入(不显示)
  10. read -s -p "Enter your password: " password
  11. echo
  12. echo "Password entered."
复制代码
  1. #!/bin/bash
  2. # 读取文件
  3. while IFS= read -r line; do
  4.     echo "Line: $line"
  5. done < file.txt
  6. # 写入文件
  7. echo "This is a line" > output.txt
  8. echo "This is another line" >> output.txt
  9. # 检查文件是否存在
  10. if [ -f "file.txt" ]; then
  11.     echo "file.txt exists"
  12. else
  13.     echo "file.txt does not exist"
  14. fi
  15. # 检查文件是否可读
  16. if [ -r "file.txt" ]; then
  17.     echo "file.txt is readable"
  18. fi
  19. # 检查文件是否可写
  20. if [ -w "file.txt" ]; then
  21.     echo "file.txt is writable"
  22. fi
复制代码

三、高级管理技巧

1. 系统服务管理

在Debian系统中,systemd是默认的初始化系统和服务管理器,掌握systemd的使用对于系统管理至关重要。
  1. # 检查systemd版本
  2. systemd --version
  3. # 查看系统启动时间
  4. systemd-analyze
  5. # 查看启动过程中的详细时间
  6. systemd-analyze blame
  7. # 查看启动过程中的关键节点
  8. systemd-analyze critical-chain
复制代码
  1. # 启动服务
  2. sudo systemctl start service_name
  3. # 停止服务
  4. sudo systemctl stop service_name
  5. # 重启服务
  6. sudo systemctl restart service_name
  7. # 重新加载服务配置
  8. sudo systemctl reload service_name
  9. # 查看服务状态
  10. sudo systemctl status service_name
  11. # 启用服务(开机自启)
  12. sudo systemctl enable service_name
  13. # 禁用服务
  14. sudo systemctl disable service_name
  15. # 检查服务是否启用
  16. sudo systemctl is-enabled service_name
  17. # 屏蔽服务(防止手动或自动启动)
  18. sudo systemctl mask service_name
  19. # 取消屏蔽服务
  20. sudo systemctl unmask service_name
复制代码

服务单元文件通常位于/etc/systemd/system/或/lib/systemd/system/目录中。
  1. # 查看服务单元文件
  2. sudo systemctl cat service_name
  3. # 编辑服务单元文件
  4. sudo systemctl edit service_name
  5. # 创建自定义服务单元文件
  6. sudo nano /etc/systemd/system/custom_service.service
复制代码

一个基本的服务单元文件示例:
  1. [Unit]
  2. Description=My Custom Service
  3. After=network.target
  4. [Service]
  5. Type=simple
  6. ExecStart=/usr/local/bin/my_service
  7. Restart=on-failure
  8. RestartSec=5s
  9. User=myuser
  10. Group=mygroup
  11. [Install]
  12. WantedBy=multi-user.target
复制代码

创建或修改服务单元文件后,需要重新加载systemd配置:
  1. sudo systemctl daemon-reload
复制代码
  1. # 查看当前目标
  2. systemctl get-default
  3. # 列出所有可用目标
  4. systemctl list-unit-files --type=target
  5. # 更改默认目标
  6. sudo systemctl set-default multi-user.target
  7. # 切换到指定目标
  8. sudo systemctl isolate multi-user.target
复制代码

systemd提供了journald日志系统,用于收集和管理系统日志。
  1. # 查看系统日志
  2. journalctl
  3. # 查看特定服务的日志
  4. journalctl -u service_name
  5. # 查看从上次启动以来的日志
  6. journalctl -b
  7. # 查看特定时间段的日志
  8. journalctl --since "2023-01-01" --until "2023-01-02"
  9. # 实时跟踪日志
  10. journalctl -f
  11. # 限制日志显示行数
  12. journalctl -n 100
  13. # 查看内核日志
  14. journalctl -k
  15. # 按优先级过滤日志
  16. journalctl -p err
复制代码

systemd提供了定时器功能,可以替代传统的cron作业。
  1. # 列出所有定时器
  2. systemctl list-timers --all
  3. # 启动定时器
  4. sudo systemctl start timer_name
  5. # 启用定时器
  6. sudo systemctl enable timer_name
  7. # 查看定时器状态
  8. sudo systemctl status timer_name
复制代码

一个基本的定时器单元文件示例:
  1. [Unit]
  2. Description=Run my script daily
  3. [Timer]
  4. OnCalendar=daily
  5. Persistent=true
  6. [Install]
  7. WantedBy=timers.target
复制代码

对应的定时器服务单元文件示例:
  1. [Unit]
  2. Description=My Daily Script
  3. [Service]
  4. Type=oneshot
  5. ExecStart=/usr/local/bin/my_daily_script
  6. User=myuser
  7. Group=mygroup
复制代码

2. 内核模块和参数调整

Linux内核是系统的核心,了解如何管理内核模块和调整内核参数对于系统优化和故障排除非常重要。
  1. # 列出已加载的内核模块
  2. lsmod
  3. # 显示模块信息
  4. modinfo module_name
  5. # 加载内核模块
  6. sudo modprobe module_name
  7. # 卸载内核模块
  8. sudo modprobe -r module_name
  9. # 查看模块依赖关系
  10. modprobe --show-depends module_name
  11. # 查看模块参数
  12. systool -v -m module_name
复制代码
  1. # 查看所有内核参数
  2. sysctl -a
  3. # 查看特定内核参数
  4. sysctl parameter_name
  5. # 临时修改内核参数
  6. sudo sysctl -w parameter_name=value
  7. # 永久修改内核参数(添加到配置文件)
  8. echo "parameter_name=value" | sudo tee -a /etc/sysctl.conf
  9. # 从配置文件加载所有参数
  10. sudo sysctl -p
  11. # 从指定配置文件加载参数
  12. sudo sysctl -p /etc/sysctl.d/custom.conf
复制代码
  1. # 增加文件描述符限制
  2. echo "fs.file-max = 100000" | sudo tee -a /etc/sysctl.conf
  3. # 优化网络参数
  4. echo "net.core.rmem_max = 16777216" | sudo tee -a /etc/sysctl.conf
  5. echo "net.core.wmem_max = 16777216" | sudo tee -a /etc/sysctl.conf
  6. echo "net.ipv4.tcp_rmem = 4096 87380 16777216" | sudo tee -a /etc/sysctl.conf
  7. echo "net.ipv4.tcp_wmem = 4096 65536 16777216" | sudo tee -a /etc/sysctl.conf
  8. # 启用IP转发
  9. echo "net.ipv4.ip_forward = 1" | sudo tee -a /etc/sysctl.conf
  10. # 防止SYN攻击
  11. echo "net.ipv4.tcp_syncookies = 1" | sudo tee -a /etc/sysctl.conf
  12. echo "net.ipv4.tcp_max_syn_backlog = 2048" | sudo tee -a /etc/sysctl.conf
  13. echo "net.ipv4.tcp_synack_retries = 2" | sudo tee -a /etc/sysctl.conf
  14. echo "net.ipv4.tcp_syn_retries = 5" | sudo tee -a /etc/sysctl.conf
复制代码
  1. # 安装内核编译所需工具
  2. sudo apt install build-essential libncurses-dev bison flex libssl-dev libelf-dev
  3. # 下载内核源代码
  4. wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.x.x.tar.xz
  5. tar -xvf linux-5.x.x.tar.xz
  6. cd linux-5.x.x
  7. # 复制当前内核配置
  8. cp /boot/config-$(uname -r) .config
  9. # 配置内核选项
  10. make menuconfig
  11. # 编译内核
  12. make -j$(nproc)
  13. # 安装内核模块
  14. sudo make modules_install
  15. # 安装内核
  16. sudo make install
  17. # 更新引导加载程序
  18. sudo update-grub
复制代码

DKMS(Dynamic Kernel Module Support)是一个框架,允许在内核升级时自动重新编译内核模块。
  1. # 安装DKMS
  2. sudo apt install dkms
  3. # 添加模块到DKMS
  4. sudo dkms add -m module_name -v module_version
  5. # 构建模块
  6. sudo dkms build -m module_name -v module_version
  7. # 安装模块
  8. sudo dkms install -m module_name -v module_version
  9. # 列出DKMS管理的模块
  10. dkms status
  11. # 卸载模块
  12. sudo dkms remove -m module_name -v module_version
复制代码

3. 系统监控和性能优化

系统监控和性能优化是系统管理的重要任务,可以帮助识别和解决性能问题。
  1. # 实时监控系统资源
  2. top
  3. htop
  4. # 监控CPU使用情况
  5. mpstat 1
  6. # 监控内存使用情况
  7. free -h
  8. vmstat 1
  9. # 监控磁盘I/O
  10. iostat -xz 1
  11. # 监控网络使用情况
  12. iftop
  13. nethogs
  14. # 监控进程活动
  15. atop
复制代码
  1. # 查看磁盘使用情况
  2. df -h
  3. # 查看目录大小
  4. du -sh /path/to/directory
  5. # 查看目录下各子目录的大小
  6. du -h --max-depth=1 /path/to/directory
  7. # 查找大文件
  8. find /path -type f -size +100M
  9. # 查找并删除旧文件
  10. find /path -type f -mtime +30 -delete
  11. # 清理APT缓存
  12. sudo apt clean
  13. sudo apt autoremove
复制代码
  1. # 查看内存使用情况
  2. free -h
  3. # 查看详细的内存使用情况
  4. cat /proc/meminfo
  5. # 查看进程内存使用情况
  6. ps aux --sort=-%mem | head
  7. # 清理页面缓存
  8. sudo sync
  9. echo 1 | sudo tee /proc/sys/vm/drop_caches
  10. # 清理目录项和inode缓存
  11. sudo sync
  12. echo 2 | sudo tee /proc/sys/vm/drop_caches
  13. # 清理页面缓存、目录项和inode缓存
  14. sudo sync
  15. echo 3 | sudo tee /proc/sys/vm/drop_caches
复制代码
  1. # 查看CPU信息
  2. lscpu
  3. cat /proc/cpuinfo
  4. # 查看CPU频率
  5. cpufreq-info
  6. # 设置CPU性能调节器
  7. sudo cpufreq-set -g performance
  8. # 查看CPU负载
  9. uptime
  10. cat /proc/loadavg
  11. # 查看进程CPU使用情况
  12. ps aux --sort=-%cpu | head
  13. # 查看系统调用统计
  14. perf stat command
复制代码
  1. # 测试磁盘读取速度
  2. hdparm -Tt /dev/sda
  3. # 测试磁盘写入速度
  4. dd if=/dev/zero of=/tmp/test bs=1G count=1 oflag=direct
  5. # 查看磁盘调度器
  6. cat /sys/block/sda/queue/scheduler
  7. # 更改磁盘调度器
  8. echo noop | sudo tee /sys/block/sda/queue/scheduler
  9. # 查看磁盘I/O统计
  10. iostat -xz 1
  11. # 监控磁盘I/O
  12. iotop
复制代码
  1. # 查看网络接口统计
  2. cat /proc/net/dev
  3. # 查看网络连接状态
  4. netstat -tuln
  5. ss -tuln
  6. # 调整网络参数
  7. echo "net.core.rmem_max = 16777216" | sudo tee -a /etc/sysctl.conf
  8. echo "net.core.wmem_max = 16777216" | sudo tee -a /etc/sysctl.conf
  9. echo "net.ipv4.tcp_rmem = 4096 87380 16777216" | sudo tee -a /etc/sysctl.conf
  10. echo "net.ipv4.tcp_wmem = 4096 65536 16777216" | sudo tee -a /etc/sysctl.conf
  11. # 启用TCP BBR拥塞控制算法
  12. echo "net.ipv4.tcp_congestion_control = bbr" | sudo tee -a /etc/sysctl.conf
  13. # 应用网络参数
  14. sudo sysctl -p
复制代码

4. 安全加固

系统安全是Linux管理的重要方面,Debian提供了多种工具和技术来增强系统安全性。
  1. # 禁用用户账户
  2. sudo usermod -L username
  3. # 解锁用户账户
  4. sudo usermod -U username
  5. # 设置用户密码过期
  6. sudo chage -M 90 username
  7. # 查看用户密码策略
  8. sudo chage -l username
  9. # 禁用root登录
  10. sudo passwd -l root
  11. # 限制sudo用户
  12. sudo visudo
复制代码
  1. # 查找没有所有者的文件
  2. sudo find / -nouser -o -nogroup
  3. # 查找全局可写的文件
  4. sudo find / -type f -perm -o+w
  5. # 查找SUID/SGID文件
  6. sudo find / -type f \( -perm -4000 -o -perm -2000 \)
  7. # 设置文件不可变属性
  8. sudo chattr +i file.txt
  9. # 移除文件不可变属性
  10. sudo chattr -i file.txt
  11. # 设置文件只能追加
  12. sudo chattr +a file.txt
复制代码
  1. # 安装UFW
  2. sudo apt install ufw
  3. # 启用UFW
  4. sudo ufw enable
  5. # 设置默认策略
  6. sudo ufw default deny incoming
  7. sudo ufw default allow outgoing
  8. # 允许特定端口
  9. sudo ufw allow 22/tcp
  10. sudo ufw allow 80/tcp
  11. sudo ufw allow 443/tcp
  12. # 限制SSH连接尝试
  13. sudo ufw limit ssh
  14. # 查看防火墙状态
  15. sudo ufw status verbose
复制代码
  1. # 安装AIDE(高级入侵检测环境)
  2. sudo apt install aide
  3. # 初始化AIDE数据库
  4. sudo aideinit
  5. # 检查文件完整性
  6. sudo aide --check
  7. # 更新AIDE数据库
  8. sudo aide --update
复制代码
  1. # 安装auditd
  2. sudo apt install auditd
  3. # 启动auditd服务
  4. sudo systemctl start auditd
  5. # 添加审计规则
  6. sudo auditctl -w /etc/passwd -p wa -k passwd_changes
  7. sudo auditctl -w /etc/sudoers -p wa -k sudoers_changes
  8. # 查看审计日志
  9. sudo ausearch -k passwd_changes
  10. sudo ausearch -k sudoers_changes
  11. # 生成审计报告
  12. sudo aureport -a
复制代码
  1. # 更新软件包列表
  2. sudo apt update
  3. # 升级已安装的软件包
  4. sudo apt upgrade
  5. # 安装安全更新
  6. sudo apt unattended-upgrade
  7. # 配置自动安全更新
  8. sudo dpkg-reconfigure unattended-upgrades
  9. # 查看可用的安全更新
  10. sudo apt list --upgradable | grep -i security
复制代码
  1. # 编辑SSH配置文件
  2. sudo nano /etc/ssh/sshd_config
  3. # 禁用root登录
  4. PermitRootLogin no
  5. # 更改SSH端口
  6. Port 2222
  7. # 禁用密码认证,仅允许密钥认证
  8. PasswordAuthentication no
  9. # 限制允许登录的用户
  10. AllowUsers user1 user2
  11. # 重启SSH服务
  12. sudo systemctl restart sshd
复制代码

四、实用技巧和最佳实践

1. 命令行效率提升
  1. # 创建临时别名
  2. alias ll='ls -alF'
  3. alias la='ls -A'
  4. alias l='ls -CF'
  5. alias grep='grep --color=auto'
  6. alias fgrep='fgrep --color=auto'
  7. alias egrep='egrep --color=auto'
  8. # 创建永久别名(添加到~/.bashrc)
  9. echo "alias ll='ls -alF'" >> ~/.bashrc
  10. echo "alias la='ls -A'" >> ~/.bashrc
  11. echo "alias l='ls -CF'" >> ~/.bashrc
  12. echo "alias grep='grep --color=auto'" >> ~/.bashrc
  13. echo "alias fgrep='fgrep --color=auto'" >> ~/.bashrc
  14. echo "alias egrep='egrep --color=auto'" >> ~/.bashrc
  15. # 重新加载.bashrc
  16. source ~/.bashrc
复制代码
  1. # 查看命令历史
  2. history
  3. # 执行历史命令中的第n条命令
  4. !n
  5. # 执行上一条命令
  6. !!
  7. # 执行上一条命令中的最后一个参数
  8. !$
  9. # 搜索历史命令
  10. Ctrl+R
  11. # 清除命令历史
  12. history -c
  13. # 设置命令历史大小
  14. echo "HISTSIZE=10000" >> ~/.bashrc
  15. echo "HISTFILESIZE=20000" >> ~/.bashrc
复制代码
  1. # 移动光标
  2. Ctrl+A: 移动到行首
  3. Ctrl+E: 移动到行尾
  4. Ctrl+F: 向前移动一个字符
  5. Ctrl+B: 向后移动一个字符
  6. Alt+F: 向前移动一个单词
  7. Alt+B: 向后移动一个单词
  8. # 编辑命令
  9. Ctrl+D: 删除光标处的字符
  10. Ctrl+H: 删除光标前的字符
  11. Ctrl+K: 删除从光标到行尾的内容
  12. Ctrl+U: 删除从光标到行首的内容
  13. Ctrl+W: 删除光标前的一个单词
  14. Ctrl+Y: 粘贴最近删除的内容
  15. Alt+D: 删除光标后的一个单词
  16. # 控制命令
  17. Ctrl+C: 中断当前命令
  18. Ctrl+Z: 暂停当前命令
  19. Ctrl+L: 清屏
  20. Ctrl+R: 搜索命令历史
  21. Ctrl+G: 取消搜索
复制代码
  1. # 安装bash-completion
  2. sudo apt install bash-completion
  3. # 启用bash-completion(通常默认启用)
  4. source /etc/bash_completion
  5. # 使用Tab键自动补全命令和文件名
  6. command_name + Tab
  7. file_name + Tab
  8. # 显示所有可能的补全
  9. Tab + Tab
复制代码

2. Shell脚本最佳实践
  1. #!/bin/bash
  2. # 脚本信息
  3. # 作者: Your Name
  4. # 描述: 脚本描述
  5. # 版本: 1.0
  6. # 日期: YYYY-MM-DD
  7. # 设置严格模式
  8. set -euo pipefail
  9. # 定义变量
  10. readonly SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
  11. readonly SCRIPT_NAME="$(basename "$0")"
  12. readonly LOG_FILE="/var/log/${SCRIPT_NAME%.*}.log"
  13. # 定义函数
  14. log() {
  15.     local level="$1"
  16.     local message="$2"
  17.     local timestamp=$(date +"%Y-%m-%d %H:%M:%S")
  18.     echo "[${timestamp}] [${level}] ${message}" | tee -a "${LOG_FILE}"
  19. }
  20. info() {
  21.     log "INFO" "$1"
  22. }
  23. warn() {
  24.     log "WARN" "$1"
  25. }
  26. error() {
  27.     log "ERROR" "$1"
  28.     exit 1
  29. }
  30. # 主函数
  31. main() {
  32.     info "Starting ${SCRIPT_NAME}"
  33.    
  34.     # 脚本逻辑
  35.    
  36.     info "Finished ${SCRIPT_NAME}"
  37. }
  38. # 执行主函数
  39. main "$@"
复制代码
  1. #!/bin/bash
  2. # 设置严格模式
  3. set -euo pipefail
  4. # 错误处理函数
  5. handle_error() {
  6.     local exit_code=$?
  7.     local line_number=$1
  8.     echo "Error on line ${line_number}: Exit code ${exit_code}"
  9.     exit ${exit_code}
  10. }
  11. # 设置错误陷阱
  12. trap 'handle_error $LINENO' ERR
  13. # 示例:可能导致错误的命令
  14. command_that_might_fail || {
  15.     echo "Command failed, but we're handling it"
  16.     # 错误处理逻辑
  17. }
  18. # 示例:检查命令是否存在
  19. command_exists() {
  20.     command -v "$1" >/dev/null 2>&1
  21. }
  22. if command_exists "some_command"; then
  23.     some_command
  24. else
  25.     echo "some_command not found"
  26.     exit 1
  27. fi
复制代码
  1. #!/bin/bash
  2. # 显示帮助信息
  3. show_help() {
  4.     cat << EOF
  5. Usage: $0 [OPTIONS]
  6. Options:
  7.   -h, --help          Show this help message
  8.   -f, --file FILE     Specify input file
  9.   -o, --output FILE   Specify output file
  10.   -v, --verbose       Enable verbose output
  11. EOF
  12. }
  13. # 初始化变量
  14. input_file=""
  15. output_file=""
  16. verbose=false
  17. # 解析命令行参数
  18. while [[ $# -gt 0 ]]; do
  19.     case "$1" in
  20.         -h|--help)
  21.             show_help
  22.             exit 0
  23.             ;;
  24.         -f|--file)
  25.             input_file="$2"
  26.             shift 2
  27.             ;;
  28.         -o|--output)
  29.             output_file="$2"
  30.             shift 2
  31.             ;;
  32.         -v|--verbose)
  33.             verbose=true
  34.             shift
  35.             ;;
  36.         *)
  37.             echo "Unknown option: $1"
  38.             show_help
  39.             exit 1
  40.             ;;
  41.     esac
  42. done
  43. # 检查必需参数
  44. if [[ -z "$input_file" ]]; then
  45.     echo "Error: Input file is required"
  46.     show_help
  47.     exit 1
  48. fi
  49. # 使用参数
  50. if [[ "$verbose" == true ]]; then
  51.     echo "Input file: $input_file"
  52.     echo "Output file: $output_file"
  53. fi
复制代码
  1. #!/bin/bash
  2. # 配置文件路径
  3. CONFIG_FILE="/etc/my_app/config.conf"
  4. # 默认配置
  5. DEFAULT_CONFIG=(
  6.     "DEBUG=false"
  7.     "LOG_LEVEL=INFO"
  8.     "MAX_CONNECTIONS=100"
  9.     "TIMEOUT=30"
  10. )
  11. # 加载配置文件
  12. load_config() {
  13.     local config_file="$1"
  14.    
  15.     if [[ -f "$config_file" ]]; then
  16.         source "$config_file"
  17.     else
  18.         echo "Config file not found: $config_file"
  19.         echo "Using default configuration"
  20.         
  21.         # 创建默认配置文件
  22.         mkdir -p "$(dirname "$config_file")"
  23.         for config in "${DEFAULT_CONFIG[@]}"; do
  24.             echo "$config" >> "$config_file"
  25.         done
  26.     fi
  27. }
  28. # 显示配置
  29. show_config() {
  30.     echo "Current configuration:"
  31.     echo "DEBUG: $DEBUG"
  32.     echo "LOG_LEVEL: $LOG_LEVEL"
  33.     echo "MAX_CONNECTIONS: $MAX_CONNECTIONS"
  34.     echo "TIMEOUT: $TIMEOUT"
  35. }
  36. # 主函数
  37. main() {
  38.     load_config "$CONFIG_FILE"
  39.     show_config
  40.    
  41.     # 使用配置变量
  42.     if [[ "$DEBUG" == "true" ]]; then
  43.         echo "Debug mode enabled"
  44.     fi
  45. }
  46. main "$@"
复制代码

3. 系统维护和备份
  1. #!/bin/bash
  2. # 系统维护脚本
  3. # 作者: Your Name
  4. # 描述: 执行定期系统维护任务
  5. # 设置严格模式
  6. set -euo pipefail
  7. # 定义变量
  8. readonly LOG_FILE="/var/log/system_maintenance.log"
  9. readonly TEMP_DIR=$(mktemp -d)
  10. # 日志函数
  11. log() {
  12.     local level="$1"
  13.     local message="$2"
  14.     local timestamp=$(date +"%Y-%m-%d %H:%M:%S")
  15.     echo "[${timestamp}] [${level}] ${message}" | tee -a "${LOG_FILE}"
  16. }
  17. # 清理APT缓存
  18. clean_apt_cache() {
  19.     log "INFO" "Cleaning APT cache"
  20.     apt-get -y autoremove
  21.     apt-get -y autoclean
  22.     apt-get -y clean
  23. }
  24. # 清理旧日志
  25. clean_old_logs() {
  26.     log "INFO" "Cleaning old logs"
  27.     find /var/log -type f -name "*.gz" -delete
  28.     find /var/log -type f -name "*.old" -delete
  29.     journalctl --vacuum-time=30d
  30. }
  31. # 清理临时文件
  32. clean_temp_files() {
  33.     log "INFO" "Cleaning temporary files"
  34.     rm -rf /tmp/*
  35.     rm -rf /var/tmp/*
  36. }
  37. # 更新系统
  38. update_system() {
  39.     log "INFO" "Updating system"
  40.     apt-get -y update
  41.     apt-get -y upgrade
  42.     apt-get -y dist-upgrade
  43. }
  44. # 检查磁盘空间
  45. check_disk_space() {
  46.     log "INFO" "Checking disk space"
  47.     df -h
  48.     local root_usage=$(df / | tail -1 | awk '{print $5}' | sed 's/%//')
  49.     if [[ $root_usage -gt 90 ]]; then
  50.         log "WARN" "Root disk usage is ${root_usage}%"
  51.     fi
  52. }
  53. # 主函数
  54. main() {
  55.     log "INFO" "Starting system maintenance"
  56.    
  57.     clean_apt_cache
  58.     clean_old_logs
  59.     clean_temp_files
  60.     update_system
  61.     check_disk_space
  62.    
  63.     log "INFO" "System maintenance completed"
  64.    
  65.     # 清理临时目录
  66.     rm -rf "$TEMP_DIR"
  67. }
  68. # 执行主函数
  69. main "$@"
复制代码
  1. #!/bin/bash
  2. # 系统备份脚本
  3. # 作者: Your Name
  4. # 描述: 执行系统备份
  5. # 设置严格模式
  6. set -euo pipefail
  7. # 定义变量
  8. readonly BACKUP_DIR="/backup"
  9. readonly TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
  10. readonly BACKUP_FILE="${BACKUP_DIR}/system_backup_${TIMESTAMP}.tar.gz"
  11. readonly LOG_FILE="/var/log/system_backup.log"
  12. readonly EXCLUDE_FILE="/etc/backup_exclude.txt"
  13. # 日志函数
  14. log() {
  15.     local level="$1"
  16.     local message="$2"
  17.     local timestamp=$(date +"%Y-%m-%d %H:%M:%S")
  18.     echo "[${timestamp}] [${level}] ${message}" | tee -a "${LOG_FILE}"
  19. }
  20. # 创建备份目录
  21. create_backup_dir() {
  22.     if [[ ! -d "$BACKUP_DIR" ]]; then
  23.         log "INFO" "Creating backup directory: $BACKUP_DIR"
  24.         mkdir -p "$BACKUP_DIR"
  25.     fi
  26. }
  27. # 创建排除文件
  28. create_exclude_file() {
  29.     cat > "$EXCLUDE_FILE" << EOF
  30. /backup/*
  31. /tmp/*
  32. /var/tmp/*
  33. /var/cache/*
  34. /var/log/*
  35. /dev/*
  36. /proc/*
  37. /sys/*
  38. /run/*
  39. /mnt/*
  40. /media/*
  41. /lost+found
  42. EOF
  43. }
  44. # 执行备份
  45. perform_backup() {
  46.     log "INFO" "Starting system backup"
  47.    
  48.     # 创建排除文件
  49.     create_exclude_file
  50.    
  51.     # 执行备份
  52.     tar -czf "$BACKUP_FILE" -X "$EXCLUDE_FILE" /
  53.    
  54.     # 验证备份
  55.     if tar -tzf "$BACKUP_FILE" > /dev/null 2>&1; then
  56.         log "INFO" "Backup completed successfully: $BACKUP_FILE"
  57.         
  58.         # 计算备份文件大小
  59.         local backup_size=$(du -h "$BACKUP_FILE" | cut -f1)
  60.         log "INFO" "Backup size: $backup_size"
  61.     else
  62.         log "ERROR" "Backup verification failed"
  63.         exit 1
  64.     fi
  65. }
  66. # 清理旧备份
  67. clean_old_backups() {
  68.     log "INFO" "Cleaning old backups"
  69.    
  70.     # 保留最近7天的备份
  71.     find "$BACKUP_DIR" -name "system_backup_*.tar.gz" -mtime +7 -delete
  72.    
  73.     # 计算保留的备份数量
  74.     local backup_count=$(find "$BACKUP_DIR" -name "system_backup_*.tar.gz" | wc -l)
  75.     log "INFO" "Retained $backup_count backups"
  76. }
  77. # 主函数
  78. main() {
  79.     log "INFO" "Starting system backup process"
  80.    
  81.     create_backup_dir
  82.     perform_backup
  83.     clean_old_backups
  84.    
  85.     log "INFO" "System backup process completed"
  86. }
  87. # 执行主函数
  88. main "$@"
复制代码
  1. #!/bin/bash
  2. # 数据库备份脚本
  3. # 作者: Your Name
  4. # 描述: 执行MySQL/MariaDB数据库备份
  5. # 设置严格模式
  6. set -euo pipefail
  7. # 定义变量
  8. readonly BACKUP_DIR="/backup/mysql"
  9. readonly TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
  10. readonly LOG_FILE="/var/log/mysql_backup.log"
  11. readonly RETENTION_DAYS=30
  12. # 数据库配置
  13. readonly DB_HOST="localhost"
  14. readonly DB_PORT="3306"
  15. readonly DB_USER="backup_user"
  16. readonly DB_PASS="backup_password"
  17. # 日志函数
  18. log() {
  19.     local level="$1"
  20.     local message="$2"
  21.     local timestamp=$(date +"%Y-%m-%d %H:%M:%S")
  22.     echo "[${timestamp}] [${level}] ${message}" | tee -a "${LOG_FILE}"
  23. }
  24. # 创建备份目录
  25. create_backup_dir() {
  26.     if [[ ! -d "$BACKUP_DIR" ]]; then
  27.         log "INFO" "Creating backup directory: $BACKUP_DIR"
  28.         mkdir -p "$BACKUP_DIR"
  29.     fi
  30. }
  31. # 获取数据库列表
  32. get_databases() {
  33.     mysql -h "$DB_HOST" -P "$DB_PORT" -u "$DB_USER" -p"$DB_PASS" -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema|mysql|sys)"
  34. }
  35. # 备份数据库
  36. backup_database() {
  37.     local database="$1"
  38.     local backup_file="${BACKUP_DIR}/${database}_${TIMESTAMP}.sql.gz"
  39.    
  40.     log "INFO" "Backing up database: $database"
  41.    
  42.     if mysqldump -h "$DB_HOST" -P "$DB_PORT" -u "$DB_USER" -p"$DB_PASS" --single-transaction --routines --triggers "$database" | gzip > "$backup_file"; then
  43.         log "INFO" "Backup completed: $backup_file"
  44.         
  45.         # 验证备份
  46.         if gzip -t "$backup_file"; then
  47.             log "INFO" "Backup verification successful"
  48.             
  49.             # 计算备份文件大小
  50.             local backup_size=$(du -h "$backup_file" | cut -f1)
  51.             log "INFO" "Backup size: $backup_size"
  52.         else
  53.             log "ERROR" "Backup verification failed"
  54.             exit 1
  55.         fi
  56.     else
  57.         log "ERROR" "Backup failed for database: $database"
  58.         exit 1
  59.     fi
  60. }
  61. # 清理旧备份
  62. clean_old_backups() {
  63.     log "INFO" "Cleaning old backups"
  64.    
  65.     # 删除超过保留期的备份
  66.     find "$BACKUP_DIR" -name "*.sql.gz" -mtime +$RETENTION_DAYS -delete
  67.    
  68.     # 计算保留的备份数量
  69.     local backup_count=$(find "$BACKUP_DIR" -name "*.sql.gz" | wc -l)
  70.     log "INFO" "Retained $backup_count backups"
  71. }
  72. # 主函数
  73. main() {
  74.     log "INFO" "Starting MySQL backup process"
  75.    
  76.     create_backup_dir
  77.    
  78.     # 备份所有数据库
  79.     for database in $(get_databases); do
  80.         backup_database "$database"
  81.     done
  82.    
  83.     clean_old_backups
  84.    
  85.     log "INFO" "MySQL backup process completed"
  86. }
  87. # 执行主函数
  88. main "$@"
复制代码

总结

本指南全面介绍了Debian系统命令行的使用,从基础操作到高级管理技巧,涵盖了文件和目录操作、文本处理、用户和权限管理、系统信息查看、软件包管理、进程管理、网络配置和故障排除、Shell脚本基础、系统服务管理、内核模块和参数调整、系统监控和性能优化、安全加固等多个方面。

通过掌握这些知识和技能,您将能够高效地管理和维护Debian系统,解决各种问题,并充分利用Linux命令行的强大功能。无论是日常使用还是系统管理,这些技巧都将帮助您提高工作效率,更好地理解和控制您的系统。

记住,实践是掌握命令行的关键。不断尝试、探索和学习,您将逐渐成为Debian系统命令行的专家。祝您在Linux命令行的旅程中取得成功!
「七転び八起き(ななころびやおき)」
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则