博客 / Linux/ 运维常用Linux命令

运维常用Linux命令

运维常用Linux命令

本文整理了一些在 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 (动态查看进程)

实时显示系统进程和资源占用情况。htoptop 的增强版,交互性更好。

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 (网络连接与端口)

查看网络连接、路由表、接口统计等信息。ssnetstat 的现代替代品,速度更快。

netstat -tunlp | grep :80       # 查看监听 80 端口的进程
ss -tlnp                        # 以更快的速度列出所有监听中的 TCP 端口和进程

掌握这些基础命令能有效提升 Linux 环境下的运维工作效率。建议在实际操作中多加练习,并善用 man [command][command] --help 查看命令的详细手册。

发表评论

您的邮箱不会公开。必填项已用 * 标注。