发布于 

Linux一些常用命令

nginx

配置文件路径
1
2
/etc/nginx/nginx.conf
/etc/nginx/sites-available/default
验证配置文件
1
nginx -t
刷新配置文件
1
nginx -s reload
配置文件参考
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
# 全局 HTTPS 重定向配置
server {
server_name default_server;
location /.well-known/acme-challenge/ {
root /var/www/html;
}

location / {
return 301 https://$host$request_uri;
}

listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/teman.xxx.xx/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/teman.xxx.xx/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}

# 80端口 -> 301 重定向到 HTTPS
server {
listen 80;
server_name default_server;

location /.well-known/acme-challenge/ {
root /var/www/html; # Certbot 用于 HTTP 续期
}

location / {
return 301 https://$host$request_uri;
}
}

# 配置官网
server {
listen 443 ssl default_server;
server_name home.xxx.xx;

# 禁止网站被嵌入
add_header X-Frame-Options "DENY" always;
add_header Content-Security-Policy "frame-ancestors 'none';" always;

ssl_certificate /etc/letsencrypt/live/teman.xxx.xx/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/teman.xxx.xx/privkey.pem; # managed by Certbot

root /data/apps/web/dist;
index index.html;

# 添加错误页面配置
error_page 404 /404.html;

location / {
try_files $uri $uri/ $uri.html =404;
}

}

# 配置xx客户端前端服务
server {
listen 443 ssl;
server_name www.xxx.xx xxx.xx;
ssl_certificate /etc/letsencrypt/live/teman.xxx.xx/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/teman.xxx.xx/privkey.pem; # managed by Certbot

root /data/apps/webmail/dist;
index index.html;

# 自定义错误页面配置
error_page 404 /index.html;

location / {
try_files $uri $uri/ =404;
}
# 处理自定义 404 页面
location = /404.html {
root /data/apps/webmail;
internal;
}


}

# 配置后台 管理端
server {
listen 443 ssl;
server_name teman.xxx.xx;

ssl_certificate /etc/letsencrypt/live/teman.xxx.xx/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/teman.xxx.xx/privkey.pem;

root /data/apps/webadmin/dist;
index index.html;

# 自定义错误页面配置
error_page 404 /index.html;

location / {
try_files $uri $uri/ =404;
}
# 处理自定义 404 页面
location = /404.html {
root /data/apps/webadmin;
internal;
}
}

# 配置客户端后端服务
server {
listen 443 ssl;
server_name backend.xxx.xx;
client_max_body_size 30M;

add_header X-Frame-Options "DENY" always;
add_header Content-Security-Policy "frame-ancestors 'none';" always;

ssl_certificate /etc/letsencrypt/live/teman.xxx.xx/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/teman.xxx.xx/privkey.pem; # managed by Certbot

# 禁止访问 /aiServer/ 路径(必须放在靠前位置)
location ^~ /aiServer/ {
return 403;
}

#专门处理 WebSocket 通知的 location 块
location /api/v1/ws/ {
# 代理到您的 Spring Boot 应用地址
proxy_pass http://127.0.0.1:6001;

# --- 以下是代理 WebSocket 的核心配置 ---

# 1. 允许协议升级
proxy_http_version 1.1;

# 2. 传递 "Upgrade" 请求头 (关键)
# $http_upgrade 是一个 Nginx 内置变量,它会获取客户端请求中的 Upgrade 头
proxy_set_header Upgrade $http_upgrade;

# 3. 传递 "Connection" 请求头 (关键)
# 明确告知后端服务器要升级连接类型
proxy_set_header Connection "upgrade";

# --- 其他标准的代理头信息,确保后端能获取真实信息 ---
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;

# --- 针对长连接的超时设置 ---
# 避免因默认的60秒超时导致 WebSocket 连接被意外断开
proxy_read_timeout 3600s; # 1小时
proxy_send_timeout 3600s; # 1小时
send_timeout 3600s;
}

# 默认的 location 配置,不影响其他请求
location / {
proxy_pass http://127.0.0.1:6001; # 代理到本地服务
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}

# 针对 SSE 请求的特殊配置
location /service/logs/realtime {
proxy_pass http://127.0.0.1:6001; # 代理到本地服务
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;

# SSE 关键优化
proxy_buffering off; # 禁用缓冲,确保数据流不中断
proxy_cache off; # 确保 Nginx 不缓存 SSE 响应
proxy_set_header Connection ''; # 避免 Nginx 添加 `Connection: close`,保持连接
chunked_transfer_encoding off; # 禁用 chunked 传输,SSE 不需要它

# 只针对 SSE 请求设置的超时
proxy_read_timeout 3600s; # 设置为较长时间(例如 3600 秒 = 1 小时)
proxy_send_timeout 3600s; # 设置为较长时间
send_timeout 3600s; # 设置 Nginx 向客户端发送响应的超时时间
}

location /thirdParty/chat/conversationWithType {
proxy_pass http://127.0.0.1:6001; # 代理到本地服务
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;

# SSE 关键优化
proxy_buffering off; # 禁用缓冲,确保数据流不中断
proxy_cache off; # 确保 Nginx 不缓存 SSE 响应
proxy_set_header Connection ''; # 避免 Nginx 添加 `Connection: close`,保持连接
chunked_transfer_encoding off; # 禁用 chunked 传输,SSE 不需要它

# 只针对 SSE 请求设置的超时
proxy_read_timeout 3600s; # 设置为较长时间(例如 3600 秒 = 1 小时)
proxy_send_timeout 3600s; # 设置为较长时间
send_timeout 3600s; # 设置 Nginx 向客户端发送响应的超时时间
}
}

# 配置前端运营后台
server {
listen 443 ssl;
server_name ope.xxx.xx;
ssl_certificate /etc/letsencrypt/live/teman.xxx.xx/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/teman.xxx.xx/privkey.pem; # managed by Certbot

root /data/apps/opeAdmin/dist;
index index.html;

# 自定义错误页面配置
error_page 404 /index.html;

location / {
try_files $uri $uri/ =404;
}
# 处理自定义 404 页面
location = /404.html {
root /data/apps/opeAdmin;
internal;
}

}

# 运维后台
server {
listen 443 ssl;
server_name ops.xxx.xx;
client_max_body_size 30M;

ssl_certificate /etc/letsencrypt/live/teman.xxx.xx/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/teman.xxx.xx/privkey.pem; # managed by Certbot

# 默认的 location 配置,不影响其他请求
location / {
proxy_pass http://127.0.0.1:2122; # 代理到本地服务
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}

}
其他
操作 命令
启动 Nginx sudo systemctl start nginx
停止 Nginx sudo systemctl stop nginx
重启 Nginx(强制) sudo systemctl restart nginx
平滑重载配置 sudo systemctl reload nginx
查看 Nginx 状态 sudo systemctl status nginx
检查配置语法 nginx -t
查看配置文件路径 nginx -V(查看 --conf-path

https证书

安装环境
1
2
sudo apt update
sudo apt install certbot python3-certbot-nginx
生成证书

在申请证书前,请确保要申请的域名(例如 example.com 或 www.example.com )已经解析到服务器的 IP 地址,否则验证会失败

1
sudo certbot --nginx -d xx.com -d mail.xx.com -d www.xx.com

有几个域名就-d几次,根据上面nginx配置的域名示例

1
sudo certbot --nginx -d home.kretest.com -d www.kretest.com -d backend.kretest.com -d kretest.com -d mail.xx.com -d teman.kretest.com

查看内存使用

1
free -h

查看日志

1
2
tail -f xxx.log
tail -100f xxx.log

搜索日志

1
grep -C 3 "开始BC匹配" info.log

查看硬盘使用

1
df -h

查看硬盘使用排序

1
du -h --max-depth=1 / | sort -hr | head -n 10

查看硬盘使用排序,指定文件夹

/data 是文件夹 可替换为具体的

1
du -h --max-depth=1 /data | sort -hr | head -n 10

权限相关

赋予可执行权限

1
chmod +x xxx.sh

说明:
为文件 script.sh 添加执行权限,使其可以被运行。适用于脚本或二进制文件。

赋予读、写、执行权限给所有用户

1
chmod a+rwx file.txt

说明:
a 表示所有用户(owner、group、others),+rwx 添加读(r)、写(w)、执行(x)权限。

仅给文件所有者添加执行权限

1
chmod u+x file.sh

说明:
u 表示文件所有者(user),+x 添加执行权限。

设置精确权限(八进制表示法)

1
chmod 755 script.sh

说明:
使用八进制设置权限:
• 7 = 读(r) + 写(w) + 执行(x) = 4 + 2 + 1
• 5 = 读(r) + 执行(x) = 4 + 1
• 所以 755 表示:
• 所有者:rwx
• 所属组:r-x
• 其他人:r-x

vim

📝 所有命令默认为在「普通模式」下使用(按 Esc 退出插入模式后进入)


📌 导航相关
操作 命令 使用说明
跳转到第一行 gg Esc 回到普通模式,再按 gg
跳转到最后一行 G 普通模式下按 G
跳转到第 N 行 :NNgg : 输入后需按回车;或直接用 Ngg
跳转到当前行第一个非空字符 ^ 普通模式下按 ^
跳转到当前行最开始位置 0 普通模式下按 0
跳转到当前行行尾 $ 普通模式下按 $
跳转到当前行第 N 个字符 `N `
水平滚动到最左/右端 zs / ze 用于水平滚动的窗口或长行

🧹 删除 / 清空相关
操作 命令 使用说明
删除当前行 dd 普通模式下按 dd
删除 N 行 Ndd 例如 3dd 表示删除当前及其后两行
删除到行尾 D / d$ Dd$ 的简写,删除光标至行尾
删除到行首 d0 / d^ d0 含缩进,d^ 不含缩进
删除全文 ggdG 先跳到第一行 gg,然后 dG 删除至最后行
清空当前行 cc 删除当前行并自动进入插入模式
清空整个文件 :%d 命令模式输入,需回车

✍️ 编辑相关
操作 命令 使用说明
插入(当前光标) i 进入插入模式,开始输入
插入(行首) I 插入到行首的第一个非空字符前
新建行并插入(下) o 当前行下方新建一行并进入插入模式
新建行并插入(上) O 当前行上方新建一行并进入插入模式
替换当前字符 r<char> 例如 ra 把当前字符替换为 a
连续替换字符 R R 开始替换,Esc 退出
撤销 u 撤销上一步
重做 Ctrl + r 撤销的内容重新做
粘贴(后/前) p / P p 粘贴在光标后,P 粘贴在光标前
复制当前行 yy yank line
复制多行 Nyy 例如 3yy 复制三行

🔍 查找与替换
操作 命令 使用说明
向下查找关键字 /关键字 输入 /word 后按回车,n/N 浏览结果
向上查找关键字 ?关键字 输入 ?word 后按回车
查找下一个匹配项 n 与上次查找方向一致
查找上一个匹配项 N 与上次查找方向相反
替换当前行第一个匹配项 :s/旧/新/ 命令模式输入,替换当前行首次匹配
替换当前行所有匹配项 :s/旧/新/g 当前行全替换
替换全文所有匹配项 :%s/旧/新/g 所有行替换
替换全文并手动确认 :%s/旧/新/gc 每次替换前询问确认(y/n

🗂️ 文件和窗口操作
操作 命令 使用说明
保存文件 :w 命令模式输入并回车
退出 :q 如文件无更改可直接退出
强制退出 :q! 不保存直接退出
保存并退出 :wq / ZZ ZZ 为普通模式下的大写 Z 两次
打开文件 :e 文件名 替换当前文件内容为指定文件
垂直选项卡分屏 :vsp 文件 垂直拆分窗口并打开文件
水平分屏 :sp 文件 水平拆分窗口并打开文件
窗口之间切换 Ctrl + w + w 依次切换当前所有窗口

其他

1
top

按下 Ctrl + C 就可以退出

1
htop

按下 Ctrl + C 就可以退出

字段名 全称 / 中文名 含义 / 作用 取值范围与说明 是否越大越好 备注说明
PID Process ID 进程的唯一标识符 系统自动分配 用于终止进程或定位问题
USER 用户名 拥有该进程的用户 系统用户名或登录用户 用于区分用户进程
PRI Priority(优先级) 进程调度的优先级 数值越小表示优先级越高 是(越小越好) 与 NI 值相关,由内核计算
NI nice 值 用户可调整的进程优先级 -20(最高优先)到 19(最低优先) 影响 PRI 值,可用 nice/renice 修改
VIRT Virtual Memory 虚拟内存使用量 包括代码段、共享库、swap、映射文件等 不是实际占用内存,数值较大不一定表示问题
RES Resident Memory 实际使用的物理内存 真正驻留在 RAM 中的内存 越大表示物理内存占用越多
SHR Shared Memory 共享内存大小 与其他进程共享的内存(如共享库) 越大说明内存共享程度高,利用率好
S 状态(State) 当前进程状态 R(运行)、S(睡眠)、Z(僵尸)、T(停止)等 关注是否存在僵尸进程(Z)或长时间阻塞(D)
CPU% CPU 占用率 当前进程使用的 CPU 百分比 多核系统可能超过 100% 持续高占用可能表示死循环或负载重
MEM% 内存占用率 当前进程使用的物理内存百分比 相对于系统总内存 用于快速找出大内存进程
TIME+ 累计 CPU 时间 使用的 CPU 总时间 格式为 MM:SS.hh 数值大说明运行时间长,可用于判断服务长期性
Command 启动命令 启动进程时的完整命令 含路径与参数 有助于辨认运行程序来源
MEM 内存总览(顶部) 系统物理内存使用情况 总量、使用、缓冲、空闲 内存占用过高系统性能下降
SWP 交换空间(Swap) 系统 swap 使用情况 总量、使用、空闲 使用 swap 说明内存不足,可能导致系统变慢
1
2
sudo apt install cmatrix
cmatrix

按下 Ctrl + C 就可以退出

mac终端安装cmatrix

1
2
brew install cmatrix
cmatrix

如果你想让它看起来更炫,可以加一些参数,比如:

1
cmatrix -b -u 10

参数解释:
• -b:粗体字符
• -u 10:更新速度(数字越小越快)

按下 Ctrl + C 就可以退出

1
curl wttr.in