本文整理了一些在 Linux 系统运维工作中常用的命令,涵盖文件操作、文本处理、进程管理等核心场景,可作为日常工作的快速参考。
一、文件和目录操作
以下命令用于在文件系统中导航、查看和管理文件与目录。
cd (切换目录)
用于切换当前工作目录。
cd /home # 进入 '/home' 目录
cd .. # 返回上一级目录
cd ../.. # 返回上两级目录
cd # 进入当前用户的主目录
cd ~user1 # 进入用户 user1 的主目录
cd - # 返回上次所在的目录
pwd (显示工作目录)
显示当前工作目录的绝对路径。
$ pwd
/home/user
ls (列出目录内容)
查看目录中的文件和子目录。
ls # 列出当前目录内容
ls -l # 以长格式显示详细信息(权限、所有者、大小等)
ls -a # 列出所有文件,包括隐藏文件(以 . 开头的文件)
ls -R # 递归列出子目录内容
ls [0-9]* # 列出名称以数字开头的文件和目录
cp (复制文件或目录)
复制文件或目录。
cp source_file dest_file # 复制文件
cp -r source_dir dest_dir # 递归复制目录(常用)
cp -a source dest # 归档复制,保留所有文件属性(如时间戳、权限)
cp -i source dest # 覆盖前提示确认
cp -u source dest # 仅在源文件比目标文件新时复制
mv (移动或重命名)
移动文件/目录或对其进行重命名。
mv old_name new_name # 重命名文件或目录
mv file /target/dir/ # 将文件移动到目标目录
mv -i source dest # 覆盖前提示确认
mv -u source dest # 仅在源文件较新时移动
rm (删除文件或目录)
删除文件或目录。请谨慎使用,尤其是递归删除。
rm file # 删除文件
rm -r directory # 递归删除目录及其内容(危险)
rm -f file # 强制删除,忽略不存在的文件和不提示
rm -i file # 交互式删除,删除前确认
二、查看文件内容
以下命令用于查看和浏览文本文件的内容。
cat (连接并显示文件)
将整个文件内容输出到标准输出。
cat file.txt # 显示文件全部内容
cat -n file.txt # 显示内容并加上行号
tac file.txt # 从最后一行开始反向显示内容
more / less (分页查看)
分页查看长文件内容。less 功能更强大,支持向前向后翻页。
more long_file.log # 分页查看,只能向下翻页
less long_file.log # 分页查看,可上下翻页、搜索
head / tail (查看首尾部分)
查看文件的开头或结尾部分。
head -n 20 file.log # 查看文件前20行
tail -n 50 file.log # 查看文件最后50行
tail -f /var/log/app.log # 实时追踪文件新增内容(常用)
tail -n +100 file.log # 从第100行开始显示到文件末尾
组合示例:查看文件的第1000到第3000行。
cat filename | head -n 3000 | tail -n +1000
# 或
sed -n '1000,3000p' filename
三、文件搜索
在文件系统中查找文件。
find (查找文件)
功能强大的实时文件查找工具。
find / -name "myfile.txt" # 从根目录开始按名称查找
find /home -user username # 查找属于某用户的文件
find /var/log -type f -mtime -7 # 查找 /var/log 下7天内修改过的普通文件
find /tmp -size +100M # 查找 /tmp 下大于100MB的文件
find . -name "*.log" -exec rm {} ; # 查找并删除当前目录下所有 .log 文件(危险)
which / whereis (查找命令)
查找可执行命令的位置。
which ls # 显示 ls 命令的完整路径
whereis python # 显示二进制文件、源码和手册页的位置
四、文件权限与所有权
管理文件和目录的访问权限。
chmod (修改权限)
使用符号(u/g/o/a, +/-, r/w/x)或数字(八进制)模式修改权限。
chmod u+x script.sh # 给文件所有者增加执行权限
chmod 755 directory # 设置目录权限为 rwxr-xr-x
chmod go-w file.txt # 移除组和其他人的写权限
chown / chgrp (修改所有者和组)
改变文件的所有者和所属组。
chown user:group file # 同时改变所有者和组
chown -R user:group /project # 递归改变目录下所有文件的所有者和组
chgrp developers file # 改变文件的所属组
五、文本处理
对文本内容进行过滤、转换和分析。
grep (文本搜索)
在文件中搜索匹配模式的行。
grep "error" /var/log/syslog # 搜索包含 "error" 的行
grep -r "TODO" ./src # 递归搜索当前目录下所有文件
grep -v "^#" config.conf # 显示所有非注释行(不以 # 开头)
grep -E "[0-9]{3}-[0-9]{4}" file # 使用扩展正则匹配电话号码模式
sed (流编辑器)
对文本进行过滤和转换。
sed 's/old/new/g' file # 将文件中所有 old 替换为 new
sed '/^$/d' file # 删除文件中的所有空行
sed -n '5,10p' file # 只打印文件的第5到第10行
sort / uniq (排序与去重)
对文本行进行排序和去重操作。
sort file.txt # 对文件行排序
sort -u file.txt # 排序并去重
uniq sorted_file.txt # 报告或忽略重复行(通常先排序)
uniq -c sorted_file.txt # 计数重复行出现的次数
paste / comm (合并与比较)
paste file1 file2 # 并行合并两个文件(列合并)
comm -12 file1 file2 # 输出两个已排序文件的交集
comm -3 file1 file2 # 输出两个文件的差集
六、打包与压缩
对文件和目录进行归档和压缩。
tar (归档工具)
创建归档文件,并可结合 gzip/bzip2 进行压缩。
# 创建压缩归档 (常用组合)
tar -czvf archive.tar.gz /path/to/dir # 使用gzip压缩
# 解压归档
tar -xzvf archive.tar.gz -C /target/dir # 解压到指定目录
# 仅列出归档内容
tar -tzvf archive.tar.gz
gzip / bzip2 / xz (压缩工具)
gzip file # 压缩文件,生成 file.gz
gunzip file.gz # 解压 .gz 文件
bzip2 file # 使用 bzip2 压缩,生成 file.bz2
xz file # 使用 xz 压缩,压缩率通常更高
zip / unzip
zip -r archive.zip dir/ # 递归压缩目录
unzip archive.zip # 解压 zip 文件
unzip -l archive.zip # 列出 zip 文件内容
七、系统关机与重启
shutdown -h now # 立即关机
shutdown -r +10 "系统即将重启" # 10分钟后重启并广播消息
shutdown -c # 取消预定的关机/重启
reboot # 立即重启
poweroff # 立即关机(部分系统)
logout # 注销当前登录会话
time command # 测算命令执行时间
八、进程管理
查看和管理系统进程。
ps (查看进程快照)
ps aux # 查看所有进程的详细信息(常用)
ps -ef # 以完整格式列出所有进程
ps aux | grep nginx # 查找与 nginx 相关的进程
top / htop (动态查看进程)
实时显示系统进程和资源占用情况。htop 是 top 的增强版,交互性更好。
top # 启动动态进程查看器
htop # 功能更丰富的进程查看器(可能需要安装)
kill / killall / pkill (终止进程)
向进程发送信号,默认发送 TERM (15) 信号请求终止。
kill 1234 # 请求终止 PID 为 1234 的进程
kill -9 1234 # 强制终止进程(SIGKILL,无法被捕获或忽略)
killall -9 process_name # 强制终止所有名为 process_name 的进程
pkill -f "python script.py" # 通过完整命令行匹配来终止进程
jps (Java 进程状态)
查看当前系统的 Java 进程(需要 JDK)。
jps # 列出 Java 进程及其 PID
jps -l # 输出主类的完整包名
netstat / ss (网络连接与端口)
查看网络连接、路由表、接口统计等信息。ss 是 netstat 的现代替代品,速度更快。
netstat -tunlp | grep :80 # 查看监听 80 端口的进程
ss -tlnp # 以更快的速度列出所有监听中的 TCP 端口和进程
掌握这些基础命令能有效提升 Linux 环境下的运维工作效率。建议在实际操作中多加练习,并善用 man [command] 或 [command] --help 查看命令的详细手册。