一、文件与目录操作:你的“导航仪”和“文件柜”
在Linux的世界里,一切皆文件。所以,首先得学会如何“走路”和“整理房间”。
pwd - 我在哪?
当你打开终端,一片漆黑,第一件事就是确认自己的位置。pwd(Print Working Directory)就是你的GPS,告诉你当前所在的绝对路径。
# 技术栈:Linux Shell
pwd
# 输出可能是:/home/yourusername
# 注释:这表示你现在在用户的家目录下。
ls - 这里有什么?
知道了位置,接下来就要看看这个目录下有什么文件和文件夹。ls(List)就是你的眼睛。
# 技术栈:Linux Shell
ls # 简单列出,不显示隐藏文件
ls -l # 以长格式列出,显示权限、所有者、大小、修改时间等详细信息
ls -la # 显示所有文件,包括以`.`开头的隐藏文件
ls -lh # 以人类可读的格式(如K, M, G)显示文件大小
# 注释:`-l`、`-a`、`-h`这些字母称为“选项”或“参数”,可以组合使用。
cd - 我要去那!
想换个地方?cd(Change Directory)是你的传送门。
# 技术栈:Linux Shell
cd /etc # 切换到`/etc`系统配置目录(绝对路径)
cd .. # 返回上一级目录
cd ~ # 快速回到你的家目录
cd - # 回到上一个所在的目录,非常实用!
# 注释:`..`代表父目录,`.`代表当前目录,`~`是用户家目录的缩写。
cp/mv/rm - 复制、搬家、扔掉
整理文件离不开这三个命令。
# 技术栈:Linux Shell
# 1. 复制 (Copy)
cp source_file.txt destination/ # 复制文件到目录
cp -r source_folder/ destination/ # 递归复制整个目录(-r 参数是关键)
# 注释:复制文件夹必须加`-r`,否则会失败。
# 2. 移动/重命名 (Move)
mv old_name.txt new_name.txt # 重命名文件
mv file.txt /tmp/ # 将文件移动到`/tmp`目录
# 注释:`mv`在同一个目录下操作就是重命名,跨目录操作就是移动。
# 3. 删除 (Remove)
rm unwanted_file.log # 删除文件
rm -r unwanted_folder/ # 递归删除目录及其内容
# !!! 重要警告 !!!
# rm -rf /some/path # 强制递归删除,无提示。这是著名的“删库跑路”命令,极度危险!切勿在根目录`/`或家目录随意尝试。
# 注释:`-r`递归,`-f`强制。使用`rm`时务必再三确认路径。
二、查看与编辑文件:运维的“阅读器”和“记事本”
服务器上没有图形化的记事本,查看日志、修改配置全靠命令行。
cat - 快速浏览
cat(Concatenate)原本用于连接文件,但最常用于快速显示整个文件内容。
# 技术栈:Linux Shell
cat /etc/hostname # 查看本机主机名
# 注释:适合查看小文件。对于大文件,内容会快速滚过屏幕,看不清。
less/more - 分页阅读
查看大日志文件的神器。more是基础版,less是增强版(支持上下翻页、搜索),推荐直接用less。
# 技术栈:Linux Shell
less /var/log/syslog # 打开系统日志文件
# 进入less后,你可以:
# - 空格键:向下翻一页
# - `b`键:向上翻一页
# - `/关键词`:向下搜索,按`n`找下一个
# - `?关键词`:向上搜索
# - `q`键:退出
# 注释:这是查看实时滚动日志(用`tail -f`)之前,检查历史日志的必备技能。
tail - 紧盯文件尾巴
运维最常用的命令之一!日志总是在文件末尾追加,所以我们只关心最后几行。
# 技术栈:Linux Shell
tail -n 100 /var/log/nginx/access.log # 查看日志最后100行
tail -f /var/log/application.log # 持续跟踪(follow)日志输出,实时看到最新内容
# 注释:`-f`参数在排查线上问题时不可或缺,相当于一个实时监控窗口。
vim - 强大的文本编辑器
当需要修改配置文件时,vim是终极武器。它功能强大但有一定学习曲线。掌握几个基本命令就能应对80%的场景。
# 技术栈:Linux Shell
vim server.conf # 用vim打开一个配置文件
# 进入vim后,默认是“普通模式”,此时按键是命令,不是输入文字。
# 1. 按 `i` 键:进入“插入模式”,此时可以像普通编辑器一样打字。
# 2. 编辑完后,按 `Esc` 键:退出“插入模式”,回到“普通模式”。
# 3. 在普通模式下:
# - 输入 `:w` 并回车:保存文件 (write)
# - 输入 `:q` 并回车:退出vim (quit)
# - 输入 `:wq` 或 `:x` 并回车:保存并退出
# - 输入 `:q!` 并回车:不保存,强制退出
# 注释:记住 `i` -> 编辑,`Esc` -> 回命令,`:wq` -> 保存退出,`:q!` -> 放弃退出,就成功了一半。
三、系统状态与进程管理:服务器的“健康仪表盘”
服务器是不是卡了?哪个程序占用了所有CPU?这些都需要快速诊断。
top/htop - 动态资源监视器
top像是一个动态的任务管理器,实时显示CPU、内存使用率以及进程列表。htop是其彩色增强版,界面更友好,支持鼠标操作。
# 技术栈:Linux Shell
top # 运行后,你会看到一个不断刷新的界面
# 在top界面中:
# - 按 `P`:按CPU使用率排序
# - 按 `M`:按内存使用率排序
# - 按 `1`:显示所有CPU核心的详情
# - 按 `k`:然后输入进程PID,可以结束该进程
# - 按 `q`:退出top
# 如果系统安装了htop(通常需要手动安装:`yum install htop`或`apt install htop`)
htop # 更直观,推荐使用
ps - 进程快照
ps(Process Status)用于抓取当前进程的一个静态快照,常与grep结合使用来查找特定进程。
# 技术栈:Linux Shell
ps aux # 查看系统所有进程的详细信息
ps -ef | grep nginx # 查找所有包含“nginx”关键词的进程
# `|` 是管道符,将`ps -ef`的输出,传递给`grep`命令进行筛选。
# 输出中第二列通常是PID(进程ID),是管理进程的关键。
kill - 发送信号给进程
找到捣乱的进程后,就需要kill它。kill并不是直接“杀死”,而是向进程发送一个“信号”。
# 技术栈:Linux Shell
# 假设我们查到nginx的PID是1234
kill 1234 # 发送默认的TERM(终止)信号,进程可以优雅地清理后退出
kill -9 1234 # 发送KILL(强制杀死)信号,进程会立即被系统终止,无法清理
# 注释:先用`kill PID`,给进程一个自己退出的机会。如果无效,再使用`kill -9 PID`(强制手段)。
df/du - 磁盘空间侦探
服务器磁盘满了?用它们来破案。
# 技术栈:Linux Shell
df -h # 查看整个文件系统的磁盘使用情况(-h人类可读)
# 输出会显示 `/`、`/home` 等挂载点用了多少空间,还剩多少。
du -sh /var/log/* # 查看`/var/log`目录下每个子目录的大小(-s总计,-h人类可读)
# 注释:`df`看大盘,`du`查明细。通常先用`df`发现哪个盘满了,再用`du`一层层找到是哪个具体目录或文件太大。
四、网络与权限管理:连通性与安全的“守门员”
服务器离不开网络,也离不开权限控制。
ping/telnet/nc - 网络连通性测试
# 技术栈:Linux Shell
ping -c 4 www.baidu.com # 向百度发送4个网络包,测试基本连通性和延迟
# 注释:能ping通说明网络层是通的。
# telnet和nc (netcat) 可以测试具体的端口是否开放
telnet 192.168.1.100 8080 # 尝试连接100服务器的8080端口(如果系统未安装telnet,可能需用nc)
nc -zv 192.168.1.100 8080 # 用nc扫描端口,-z扫描模式,-v显示详细信息
# 注释:这常用于判断一个远程服务的端口(如MySQL的3306,Web的80)是否在监听。
netstat/ss - 网络连接和端口监听情况
查看服务器上哪些端口被打开,哪些连接是活跃的。ss是更现代的替代品,速度更快。
# 技术栈:Linux Shell
netstat -tunlp # 查看所有监听(-l)的TCP(-t)/UDP(-u)端口,显示PID和程序名(-p),不解析名字(-n)
# 或者使用 ss
ss -tunlp # 功能类似,输出格式略有不同
# 注释:这是检查“我的应用是否真的在监听8080端口”的权威命令。
chmod/chown - 权限与所有权管家
Linux的权限系统(读r、写w、执行x)是安全基石。chmod改权限,chown改文件主人。
# 技术栈:Linux Shell
# 1. 修改权限 (chmod)
chmod +x startup.sh # 给脚本添加“执行”权限
chmod 755 startup.sh # 用数字表示权限:所有者可读可写可执行(7),同组和其他用户可读可执行(5)
# 注释:755是目录和可执行脚本的常见权限。644(所有者可读可写,其他人只读)是配置文件的常见权限。
# 2. 修改所有者 (chown)
chown root:root /data/app.log # 将文件所有者和所属组都改为root
chown -R www-data:www-data /var/www/html # 递归(-R)修改整个目录的所有权
# 注释:Web服务器(如Nginx)进程通常以`www-data`或`nginx`用户运行,需要其能读取网站文件。
五、压缩解压与查找:效率提升的“瑞士军刀”
tar - 打包压缩全能手
Linux下最常见的归档工具,通常配合gzip或bzip2进行压缩。
# 技术栈:Linux Shell
# 1. 压缩
tar -czvf backup.tar.gz /path/to/folder # 将文件夹打包并用gzip压缩
# 参数解释:c创建,z用gzip,v显示过程,f指定文件名
# 2. 解压
tar -xzvf backup.tar.gz # 解压到当前目录
tar -xzvf backup.tar.gz -C /tmp # 解压到指定目录`/tmp`
# 参数解释:x解压,C改变目录
find - 超级文件搜索
根据名称、类型、大小、时间等任何条件查找文件,功能无比强大。
# 技术栈:Linux Shell
find / -name "*.log" -type f # 在全盘查找所有.log结尾的普通文件
find /var/log -mtime +7 -name "*.log" # 在/var/log下查找7天前修改过的日志文件
find . -size +100M # 在当前目录查找大于100MB的文件
# 注释:`-mtime +7`(7天前),`-mtime -7`(7天内)。结合`-delete`参数可以用于自动清理旧日志,但要极其小心。
grep - 文本内容搜索之王
在文件内部,或者命令输出中,搜索包含特定关键词的行。
# 技术栈:Linux Shell
grep "ERROR" /var/log/app.log # 在日志中查找所有包含ERROR的行
grep -r "192.168.1.100" /etc/ # 递归(-r)在`/etc`目录所有文件中搜索IP地址
ps aux | grep java # 在进程列表中查找Java进程
# 常用参数:`-i`忽略大小写,`-n`显示行号,`-v`反向选择(显示不包含关键词的行)。
应用场景与总结
这篇文章汇总的命令,覆盖了日常Linux运维的绝大多数场景:从登录服务器查看目录(pwd, ls, cd),到检查日志排查问题(tail, less, grep),再到监控系统资源(top, df, ps)、管理服务进程(kill)、配置网络(ping, netstat)和设置权限(chmod)。它们是你通过SSH连接服务器后,高效开展一切工作的基础工具集。
技术优缺点:这些命令是Linux/Unix哲学的体现——每个工具只做好一件事,通过管道(|)组合起来威力无穷。优点是灵活、强大、可脚本化。缺点是纯命令行,对新手有一定记忆负担,且误操作(如rm -rf)可能带来严重后果。
注意事项:
- 权限意识:不要随意使用
root用户操作。sudo提权前,想清楚命令的后果。 - 路径确认:在执行任何删除(
rm)、移动(mv)或覆盖操作前,务必用pwd和ls双重确认当前路径和目标路径。 - 备份习惯:修改重要配置文件前,先
cp server.conf server.conf.bak做个备份。 - 善用帮助:忘记参数时,多用
man 命令名(如man ls)或命令名 --help查看官方手册。
掌握这些命令,你就能像一位熟练的船长,在Linux的海洋中从容导航、排障和运维,将日常工作的效率提升数倍。记住,熟练源于实践,多在测试环境或自己的虚拟机中敲击这些命令,它们很快就会成为你的肌肉记忆。
评论