作者:大河大河o
标签:
Linux
运维
Shell
系统管理
vim
包管理
服务管理
发布时间: 2025年12月28日
🎯 文档目标
本文旨在为初学者和进阶用户系统性地介绍Linux操作系统的核心概念、常用命令和实用技巧,涵盖文件系统管理、文本编辑、软件安装、服务配置、计划任务等多个方面,并提供大量实用示例。
一、文件系统管理与常用命令
Linux的文件系统结构是理解一切操作的基础。掌握核心命令是高效工作的关键。
1.1 文件与目录操作
最基础的命令,用于日常的文件和目录管理。
– 列出目录内容
ls – 切换目录
cd – 显示当前工作目录
pwd – 创建目录
mkdir – 删除文件或目录
rm – 复制文件或目录
cp – 移动或重命名文件或目录
mv – 在目录树中查找文件
find – 在文件内容中搜索文本
grep
实用示例:
# 查看当前目录下所有文件,包括隐藏文件
$ ls -la
# 创建一个名为 'project' 的新目录
$ mkdir project
# 将 'config.txt' 复制到 'project' 目录下
$ cp config.txt project/
# 重命名 'old_name.txt' 为 'new_name.txt'
$ mv old_name.txt new_name.txt
# 在当前目录及其子目录中查找所有以 '.log' 结尾的文件
$ find . -name "*.log"
# 在 'access.log' 文件中查找包含 'error' 的行
$ grep "error" access.log
# 删除 'project' 目录及其所有内容(谨慎使用)
$ rm -rf project/
1.2 磁盘管理
了解磁盘使用情况、进行分区和格式化是系统管理员的必备技能。
– 报告文件系统的磁盘空间使用情况
df – 估计文件空间使用情况
du – 磁盘分区表操作工具
fdisk – 另一个强大的磁盘分区工具
parted – 创建文件系统(格式化)
mkfs – 检查和修复文件系统
fsck /
mount – 挂载/卸载文件系统
umount – 转换或拷贝文件(可用于备份磁盘、创建镜像等)
dd
实用示例:
# 以人类可读格式查看磁盘使用情况
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 40G 5.0G 33G 14% /
devtmpfs 486M 0 486M 0% /dev
tmpfs 497M 356K 496M 0% /run
...
# 查看当前目录下各子目录的大小
$ du -sh *
# 列出所有磁盘分区信息
$ fdisk -l
# 格式化 /dev/sdb 分区为 ext4 文件系统
$ mkfs -t ext4 -v /dev/sdb
# 挂载 /dev/sdb1 到 /mnt/mydisk 目录
$ mount /dev/sdb1 /mnt/mydisk
# 卸载 /mnt/mydisk 目录
$ umount /mnt/mydisk
# 创建一个 100MB 的文件,内容为零
$ dd if=/dev/zero of=large_file.img bs=1M count=100
1.3 用户与权限管理
Linux是一个多用户系统,权限管理至关重要。
– 修改文件或目录的权限
chmod – 修改文件或目录的所有者
chown – 修改文件或目录的所属组
chgrp
实用示例:
# 将 'script.sh' 的权限设置为所有者可读写执行,组和其他用户只读
$ chmod 744 script.sh
# 将 'data.txt' 的所有者更改为 'user1'
$ chown user1 data.txt
# 将 'config' 目录的所属组更改为 'admin'
$ chgrp admin config
二、文本编辑神器 – Vim
Vim是一个功能强大的命令行文本编辑器,虽然学习曲线陡峭,但掌握后效率极高。
2.1 基本模式
命令模式 (Normal Mode):默认模式,用于执行编辑命令。插入模式 (Insert Mode):用于输入文本,按 ,
i,
a 等进入。末行模式 (Command-line Mode):用于执行保存、查找、替换等命令,按
o 进入。
:
2.2 实用技巧与示例
打开多个文件:
# 同时打开三个文件
$ vim foo.txt bar.txt hello.txt
# 在vim中查看已打开的文件列表
:ls
# 在打开的文件间切换 (例如切换到第2个文件)
:b 2
# 切换到第3个文件
:b 3
常用编辑命令:
– 删除当前行
dd – 复制当前行
yy – 粘贴
p – 撤销
u – 重做
Ctrl+r – 向下搜索 'pattern'
/pattern – 向上搜索 'pattern'
?pattern – 替换当前行第一个 'old' 为 'new'
:s/old/new/g – 替换整个文件中的 'old' 为 'new'
:%s/old/new/g
映射快捷键 (提高效率):
# 在命令模式下,按 F4 可以从光标所在行开始删除10000行 (非常危险,仅作演示)
:map <F4> 10000dd
# 在插入模式下,输入 '__main' 会自动展开为 'if __name__ == '__main__':' (Python常用)
:inoremap __main if __name__ == '__main__':
# 说明:inoremap 中的 'i' 表示在插入模式下生效,'nore' 表示不递归解析,防止无限循环。
# 将这些映射写入 ~/.vimrc 文件,可让其永久生效。
三、软件安装与配置
Linux发行版通常使用包管理器来安装、更新和删除软件,这是管理系统的便捷方式。
3.1 使用 Yum (Red Hat系列)
Yum (Yellowdog Updater Modified) 是Red Hat、CentOS等系统常用的包管理工具。
– 搜索软件包
yum search – 列出已安装的软件包
yum list installed – 安装软件包
yum install – 删除软件包
yum remove – 更新软件包
yum update – 检查可用更新
yum check-update – 显示软件包信息
yum info
实用示例:
# 搜索 Nginx 相关的软件包
$ yum search nginx
# 安装 Nginx
$ sudo yum install nginx
# 更新所有已安装的软件包
$ sudo yum update
# 查看 Nginx 的详细信息
$ yum info nginx
# 检查是否有可用的更新
$ yum check-update
3.2 使用 RPM (Red Hat Package Manager)
RPM是底层的软件包格式和管理工具,可以直接操作.rpm文件。
– 安装软件包
rpm -ivh – 移除软件包
rpm -e – 查询所有已安装的软件包
rpm -qa
实用示例:
# 安装一个本地的 .rpm 文件
$ sudo rpm -ivh package_name.rpm
# 查询系统中是否安装了 MySQL 相关的软件包
$ rpm -qa | grep mysql
# 移除名为 'package_name' 的软件包
$ sudo rpm -e package_name
四、服务管理与配置
Linux系统上的服务(如Web服务器、数据库)通常以守护进程(daemon)形式运行。使用 是管理这些服务的标准方式。
systemctl
服务管理命令:
# 启动防火墙服务
$ sudo systemctl start firewalld
# 停止防火墙服务
$ sudo systemctl stop firewalld
# 重启防火墙服务
$ sudo systemctl restart firewalld
# 查看防火墙服务状态
$ sudo systemctl status firewalld
# 设置防火墙服务开机自启
$ sudo systemctl enable firewalld
# 禁用防火墙服务开机自启
$ sudo systemctl disable firewalld
五、计划任务
让系统在特定时间自动执行命令或脚本,是自动化运维的重要部分。
5.1 一次性任务 – at
适用于只执行一次的计划任务。
– 将任务排队,在指定时间执行
at – 查看待执行的任务队列
atq – 从队列中删除任务
atrm
实用示例:
# 安排在3天后的下午5点执行 'rm -f /root/*.html' 命令
$ at 5pm+3days
at> rm -f /root/*.html
at> <EOT>
job 9 at Wed Jun 5 17:00:00 2019
# 查看当前待执行的任务队列
$ atq
9 Wed Jun 5 17:00:00 2019 a root
# 删除任务ID为9的任务
$ atrm 9
5.2 周期性任务 – crontab
适用于重复执行的计划任务,如每日备份、定时清理日志等。
# 编辑当前用户的crontab文件
$ crontab -e
# Cron表达式格式:分钟 小时 日 月 星期 命令
# 例如:每分钟向 /root/hello.txt 追加 "hello, world!"
* * * * * echo "hello, world!" >> /root/hello.txt
# 例如:每天23点59分删除 /root 目录下所有 .log 文件
59 23 * * * rm -f /root/*.log
Cron表达式各字段含义:
| 字段 | 含义 | 取值范围 |
|---|---|---|
| 分钟 (Minute) | 分钟 | 0-59 |
| 小时 (Hour) | 小时 | 0-23 |
| 日 (Day of Month) | 每月的第几天 | 1-31 |
| 月 (Month) | 月份 | 1-12 (或 Jan-Dec) |
| 星期 (Day of Week) | 每周的第几天 | 0-7 (0和7都代表周日,或 Sun-Sat) |
💡 提示
如果不确定Cron表达式如何书写,可以使用搜索引擎查找“Cron表达式在线生成器”来辅助生成。系统级的定时任务配置文件通常位于 或
/etc/crontab 目录下。
/etc/cron.d/
六、文本处理工具
Linux提供了强大的文本处理工具,如 和
sed,可以在不打开文件的情况下进行编辑和分析。
awk
6.1 sed – 流编辑器
用于对文本进行过滤、替换、插入、删除等操作。
实用示例:
# 假设有一个文件 fruit.txt,内容如下:
# 1 banana
# 2 grape
# 3 apple
# 4 watermelon
# 5 orange
# 在第2行 (grape) 后面添加一行 'pitaya'
$ sed '2a pitaya' fruit.txt
# 输出:
# 1 banana
# 2 grape
# pitaya
# 3 apple
# 4 watermelon
# 5 orange
# 将文件中所有 'a' 替换为 '@' (注意,这不会修改原文件,而是输出到终端)
$ sed 's/a/@/g' fruit.txt
# 如果想直接修改原文件,可以使用 -i 选项
$ sed -i 's/a/@/g' fruit.txt
6.2 awk – 模式扫描和处理语言
强大的文本分析和报告生成工具。
实用示例:
# 假设有一个文件 fruit2.txt,内容如下 (列:编号 水果 价格):
# 1 banana 120
# 2 grape 500
# 3 apple 1230
# 4 watermelon 80
# 5 orange 400
# 显示第3行
$ awk 'NR==3' fruit2.txt
# 输出: 3 apple 1230
# 显示第2列 (水果名)
$ awk '{print $2}' fruit2.txt
# 输出: banana grape apple watermelon orange
# 显示价格大于等于500的行
$ awk '$3 >= 500' fruit2.txt
# 输出: 2 grape 500
# 3 apple 1230
结语
Linux是一个强大而灵活的操作系统,其命令行工具提供了无与伦比的控制力和自动化能力。本文仅介绍了冰山一角,持续学习和实践是掌握Linux的关键。希望这些基础概念和实用示例能帮助你在Linux的世界中更加得心应手。
© 2025 大河大河o. 保留所有权利.
