Linux一些常用命令
nginx
配置文件路径
1 2
| /etc/nginx/nginx.conf /etc/nginx/sites-available/default
|
验证配置文件
刷新配置文件
配置文件参考
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
| server { server_name default_server; location /.well-known/acme-challenge/ { root /var/www/html; }
location / { return 301 https://$host$request_uri; }
listen 443 ssl; ssl_certificate /etc/letsencrypt/live/teman.xxx.xx/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/teman.xxx.xx/privkey.pem; include /etc/letsencrypt/options-ssl-nginx.conf; ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}
server { listen 80; server_name default_server;
location /.well-known/acme-challenge/ { root /var/www/html; }
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; ssl_certificate_key /etc/letsencrypt/live/teman.xxx.xx/privkey.pem;
root /data/apps/web/dist; index index.html;
error_page 404 /404.html;
location / { try_files $uri $uri/ $uri.html =404; }
}
server { listen 443 ssl; server_name www.xxx.xx 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/webmail/dist; index index.html;
error_page 404 /index.html;
location / { try_files $uri $uri/ =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; } 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; ssl_certificate_key /etc/letsencrypt/live/teman.xxx.xx/privkey.pem;
location ^~ /aiServer/ { return 403; }
location /api/v1/ws/ { proxy_pass http://127.0.0.1:6001;
proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; 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; proxy_read_timeout 3600s; proxy_send_timeout 3600s; send_timeout 3600s; }
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; }
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;
proxy_buffering off; proxy_cache off; proxy_set_header Connection ''; chunked_transfer_encoding off;
proxy_read_timeout 3600s; proxy_send_timeout 3600s; send_timeout 3600s; }
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;
proxy_buffering off; proxy_cache off; proxy_set_header Connection ''; chunked_transfer_encoding off;
proxy_read_timeout 3600s; proxy_send_timeout 3600s; send_timeout 3600s; } }
server { listen 443 ssl; server_name ope.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/opeAdmin/dist; index index.html;
error_page 404 /index.html;
location / { try_files $uri $uri/ =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; ssl_certificate_key /etc/letsencrypt/live/teman.xxx.xx/privkey.pem;
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 2
| tail -f xxx.log tail -100f xxx.log
|
搜索日志
1
| grep -C 3 "开始BC匹配" info.log
|
查看硬盘使用
查看硬盘使用排序
1
| du -h --max-depth=1 / | sort -hr | head -n 10
|
查看硬盘使用排序,指定文件夹
/data 是文件夹 可替换为具体的
1
| du -h --max-depth=1 /data | sort -hr | head -n 10
|
权限相关
赋予可执行权限
说明:
为文件 script.sh 添加执行权限,使其可以被运行。适用于脚本或二进制文件。
赋予读、写、执行权限给所有用户
说明:
a 表示所有用户(owner、group、others),+rwx 添加读(r)、写(w)、执行(x)权限。
仅给文件所有者添加执行权限
说明:
u 表示文件所有者(user),+x 添加执行权限。
设置精确权限(八进制表示法)
说明:
使用八进制设置权限:
• 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 行 |
:N 或 Ngg |
: 输入后需按回车;或直接用 Ngg |
跳转到当前行第一个非空字符 |
^ |
普通模式下按 ^ |
跳转到当前行最开始位置 |
0 |
普通模式下按 0 |
跳转到当前行行尾 |
$ |
普通模式下按 $ |
跳转到当前行第 N 个字符 |
`N |
` |
水平滚动到最左/右端 |
zs / ze |
用于水平滚动的窗口或长行 |
🧹 删除 / 清空相关
操作 |
命令 |
使用说明 |
删除当前行 |
dd |
普通模式下按 dd |
删除 N 行 |
Ndd |
例如 3dd 表示删除当前及其后两行 |
删除到行尾 |
D / d$ |
D 是 d$ 的简写,删除光标至行尾 |
删除到行首 |
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 |
依次切换当前所有窗口 |
其他
按下 Ctrl + C 就可以退出
按下 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
|
如果你想让它看起来更炫,可以加一些参数,比如:
参数解释:
• -b:粗体字符
• -u 10:更新速度(数字越小越快)
按下 Ctrl + C 就可以退出