Linux常用命令笔记,中高级运维高频指令,并附上vim常见操作
命令清单:grep / awk / sed / ps / top / netstat / ss / find / chmod / systemctl / journalctl
1. grep 【文本过滤:查找包含指定关键词的行】
作用:检索文本,匹配包含目标字符串的行,最常用的文本筛选工具
# 基础用法
grep "关键词" test.txt
# 常用参数
-i # 忽略大小写
-n # 显示行号
-v # 取反,输出**不**匹配的行
-r # 递归遍历目录下所有文件搜索
-E # 使用扩展正则(等价egrep)
示例:
bash
# 查看sshd配置文件里带PasswordAuthentication的行
grep "PasswordAuthentication" /etc/ssh/sshd_config
# 过滤进程,查找ssh进程
ps -ef | grep sshd
[root@zhangjun sysconfig]# grep zhang /etc/hostname
zhangjun
2. awk 【文本按列处理,报表/切片,擅长按字段提取】
作用:按分隔符切割文本,提取第N列,做简单计算、格式化输出,适合处理结构化日志
shell
# 基础格式:awk '条件{动作}' 文件
# $0=整行;$1第1列,$2第2列;默认分隔符:空格/多个空格
awk '{print $1,$2}' test.txt
常用示例:
bash
# 查看ss进程,提取第1、5列
ss -nt | awk '{print $1,$5}'
[root@zhangjun sysconfig]# ss -nt
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
ESTAB 0 36 172.16.1.11:22 172.16.1.1:63551
[root@zhangjun sysconfig]# ss -nt | awk {'print $1'}
State
ESTAB
[root@zhangjun sysconfig]# ss -nt | awk {'print $4'}
Local
172.16.1.11:22
# ------------
# -F 指定分隔符(冒号)
awk -F: '{print $1}' /etc/passwd
一句话记忆:grep按行找,awk按列切
3. sed 【流编辑器:文本替换、删除、新增行,不修改原文件(默认)】
作用:对文本行做替换、删除、插入,常用于批量修改配置
# s/旧内容/新内容/g g=全局替换(一行内全部替换)
sed 's/abc/123/g' test.txt
常用参数
-
-i:直接修改原文件(高危,测试时先不加-i) 示例:替换文件内 no 为 yes
sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config
删除包含#的注释行
sed '/^#/d' file.txt
4. ps 【查看当前瞬间进程快照】
静态快照,抓取执行命令那一刻的进程,不会实时刷新
ps -ef # 全格式,所有进程(最常用)
ps aux # 另一种风格,显示CPU、内存占用百分比
字段含义(ps -ef)
-
UID:用户ID
-
PID:进程ID
-
PPID:父进程ID
-
CMD:进程启动命令 示例:
ps -ef | grep sshd # 查找sshd进程是否运行
5. top 【动态实时进程监控】
作用:实时刷新,看CPU、内存、负载,进程资源占用,相当于Linux任务管理器
-
默认3秒刷新一次 按键:
-
P:按CPU排序 -
M:按内存排序
q
:退出top
区别:ps是静态快照;top动态实时
6. netstat 【查看网络连接、端口、监听】
注意:OpenEuler默认不一定预装netstat,属于老旧工具,官方推荐ss替代
netstat -tulnp
# 参数
-t TCP端口
-u UDP端口
-l 只看监听端口
-n 数字显示,不解析域名
-p 显示进程名/PID
7. ss 【socket statistics,新一代网络端口查看工具,替代netstat】
作用:查看套接字、端口连接,速度更快,信息更多,OpenEuler自带,优先用ss
bash
ss -tulnp # 查看本机正在监听的TCP/UDP端口(最常用)
ss -nt # 查看已建立的TCP连接
[root@zhangjun sysconfig]# ss -tulnp
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
udp UNCONN 0 0 0.0.0.0:58202 0.0.0.0:* users:(("rpcbind",pid=861,fd=7))
udp UNCONN 0 0 0.0.0.0:111 0.0.0.0:* users:(("rpcbind",pid=861,fd=6))
udp UNCONN 0 0 127.0.0.1:323 0.0.0.0:* users:(("chronyd",pid=911,fd=5))
udp UNCONN 0 0 [::]:64352 [::]:* users:(("rpcbind",pid=861,fd=10))
udp UNCONN 0 0 [::]:111 [::]:* users:(("rpcbind",pid=861,fd=9))
udp UNCONN 0 0 [::1]:323 [::]:* users:(("chronyd",pid=911,fd=6))
tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=946,fd=3))
tcp LISTEN 0 4096 0.0.0.0:111 0.0.0.0:* users:(("rpcbind",pid=861,fd=8))
tcp LISTEN 0 128 [::]:22 [::]:* users:(("sshd",pid=946,fd=4))
tcp LISTEN 0 4096 [::]:111 [::]:* users:(("rpcbind",pid=861,fd=11))
[root@zhangjun sysconfig]# ss -tunp
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
tcp ESTAB 0 36 172.16.1.11:22 172.16.1.1:63551 users:(("sshd",pid=1604,fd=4),("sshd",pid=1600,fd=4))
[root@zhangjun sysconfig]# ss -tun
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
tcp ESTAB 0 36 172.16.1.11:22 172.16.1.1:63551
[root@zhangjun sysconfig]# ss -tup
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
tcp ESTAB 0 36 172.16.1.11:ssh 172.16.1.1:63551 users:(("sshd",pid=1604,fd=4),("sshd",pid=1600,fd=4))
[root@zhangjun sysconfig]# ss -nt
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
ESTAB 0 36 172.16.1.11:22 172.16.1.1:63551
[root@zhangjun sysconfig]#
你之前Xshell连ssh,就可以用
ss -tulnp | grep sshd检查22端口有没有监听
8. find 【磁盘文件搜索,按名称、大小、时间查找文件】
作用 :遍历硬盘目录查找文件,和grep不一样:grep搜文件内容 ;find搜文件名
# 在根目录查找名字叫sshd_config的文件
find / -name "sshd_config"
参数
-name 按文件名搜索
-type f 只搜普通文件
-type d 只搜文件夹
示例:
find /etc -name "*.conf" # etc目录下查找所有.conf结尾配置文件
9. chmod 【修改文件/目录权限】
作用:修改rwx读写执行权限
# 数字权限写法(最常用)
chmod 755 test.sh
chmod 644 test.txt
# 符号写法
chmod +x test.sh # 给文件增加执行权限
权限数字含义: r=4,w=2,x=1
- 7 = rwx 读写执行
- 6 = rw- 读写
- 5 = r-x 读+执行
- 4 = r-- 只读
10. systemctl 【系统服务管理器,管理systemd服务(OpenEuler/CentOS7+)】
OpenEuler用systemd,管理sshd、firewalld这类后台服务
# 常用
systemctl start sshd # 启动服务
systemctl stop sshd # 停止
systemctl restart sshd # 重启
systemctl enable sshd # 设置开机自启
systemctl disable sshd # 取消开机自启
systemctl status sshd # 查看服务状态(最常用!看是否running)
11. journalctl 【查看systemd服务日志】
作用:查看系统、服务运行日志,排查服务启动失败、ssh连接报错
journalctl -u sshd # 只看sshd服务日志
journalctl -u sshd -f # -f实时跟踪日志(类似tail -f)
journalctl -u firewalld # 查看防火墙日志
📌 快速区分记忆表(适合笔记)
| 命令 | 核心用途 | 一句话总结 |
|---|---|---|
| grep | 文本内容过滤 | 按内容找行 |
| awk | 文本按列提取 | 按列切割,提取字段 |
| sed | 文本流编辑 | 批量替换、修改文本 |
| ps | 进程查看(静态快照) | 瞬间进程列表 |
| top | 进程监控(动态) | 实时资源监视器 |
| netstat | 端口/网络连接 | 老旧网络工具,不推荐优先用 |
| ss | socket网络查看 | netstat升级版,查端口连接首选 |
| find | 查找文件 | 按名字找磁盘上的文件 |
| chmod | 修改权限 | 修改文件rwx权限 |
| systemctl | 管理系统服务 | 启停、开机自启服务 |
| journalctl | 查看服务日志 | 查看systemd服务运行日志 |
📝 运维实战组合(你现在OpenEuler+Xshell场景)
# 1. 检查sshd服务状态
systemctl status sshd
# 2. 查看ssh监听端口
ss -tulnp | grep sshd
# 3. 查看ssh日志,排查连接报错
journalctl -u sshd -f
# 4. 修改ssh配置后,过滤配置项
grep PasswordAuthentication /etc/ssh/sshd_config
Vim 常用操作指令笔记(适配OpenEuler,可直接复制进Typora)
Vim 三大模式:普通模式(默认)、编辑模式、命令行模式 打开文件:
vim 文件名;退出:普通模式下按:进入命令模式
🔹 模式切换(必背)
-
普通模式
:刚进入vim就是这个模式,用来移动光标、复制、删除。
- 按
i→ 插入模式(在光标前输入文字) - 按
a→ 追加模式(光标后面输入文字) - 按
o→ 在下一行新开一行进入插入 - 按
O→ 在上一行新开一行进入插入
- 按
-
插入模式 :打字编辑。按
Esc返回普通模式 -
命令行模式 :普通模式输入
:进入,执行保存、退出、查找替换
🔹 普通模式(光标移动)
| 指令 | 作用 |
|---|---|
h |
光标左 |
j |
光标下 |
k |
光标上 |
l |
光标右 |
0 |
跳到本行开头 |
$ |
跳到本行末尾 |
gg |
跳到文档第一行 |
G |
跳到文档最后一行 |
nG |
跳到第n行,例 10G 到第10行 |
w |
跳到下一个单词开头 |
b |
跳到上一个单词开头 |
🔹 普通模式:删除、剪切
vim中删除 = 剪切(可以p粘贴)
指令 作用 x删除光标单个字符 dd删除(剪切)整行 ndd删除n行, 3dd删除光标往下3行dw删除光标往后一个单词 d$删除光标到行尾 d0删除光标到行首
🔹 普通模式:复制粘贴
| 指令 | 作用 |
|---|---|
yy |
复制一整行 |
nyy |
复制n行,2yy复制当前+下一行 |
p |
粘贴,粘贴到光标下一行 |
P |
粘贴到光标上一行 |
🔹 普通模式:撤销、重做
| 指令 | 作用 |
|---|---|
u |
撤销(undo) |
Ctrl + r |
反撤销/重做 |
🔹 命令行模式(: 开头,普通模式按冒号)
| 命令 | 作用 |
|---|---|
:w |
保存文件(write) |
:q |
退出(quit),文件没修改才能退出 |
:wq |
保存并退出 |
:q! |
强制退出,不保存修改(非常常用!改错不想保存用) |
:w! |
强制保存(只读文件) |
:wq! |
强制保存退出 |
:set nu |
显示行号(面试高频) |
:set nonu |
关闭行号 |
:set ic |
查找忽略大小写;:set noic关闭忽略大小写 |
:n |
跳转到第n行,:15 跳到15行 |
🔹 查找(普通模式直接敲,不用冒号)
/关键词
:向下搜索关键词,
/ssh
搜索ssh
n跳到下一个匹配N跳到上一个匹配?关键词:向上搜索关键词
🔹 批量替换(命令模式,sed同类功能)
格式::%s/旧内容/新内容/g
-
%代表全文 -
ssubstitute替换 -
gglobal 一行内全部替换全文把 no 替换成 yes
:%s/no/yes/g
只在10~20行替换
:10,20s/no/yes/g
示例:修改sshd_config,把PasswordAuthentication no改成yes
:%s/PasswordAuthentication no/PasswordAuthentication yes/g
🔹 可视模式(选中一块文本复制删除)
普通模式:
v字符可视:按字符选V行可视:直接选中整行Ctrl+v块可视:矩形选块 选中后,d删除,y复制
📌 高频实战场景(你修改openEuler配置经常用到)
vim /etc/ssh/sshd_config
1. 打开文件,普通模式 :set nu 打开行号
2. /PasswordAuthentication 快速定位这一行
3. i 进入编辑,修改内容
4. Esc 退回普通模式
5. :wq 保存退出;如果改错 :q! 放弃修改退出
📝 极简背诵版(面试)
i插入,Esc回普通,:进命令dd删行,yy复制,p粘贴,u撤销gg首行,G末行,0行首,$行尾:wq保存退出;:q!强制退出不保存/xxx搜索;:%s/a/b/g全文替换:set nu显示行号
小提示:新手最容易踩坑:在插入模式直接敲 :wq 没用,必须先按Esc回到普通模式才能输入冒号命令。