Linux笔记

发布时间:2026/6/11 7:42:59

Linux笔记 一、常用 Linux 命令1. 文件与目录操作ls -la # 查看详细信息含隐藏文件 cd /path # 切换目录 mkdir -p # 递归创建目录 cp / mv / rm # 复制/移动/删除 find / -name Glossary_Error.xml #在根目录下按文件名查找 find / -type f -name Glossary_Error.xml #在根目录下按文件名查找仅查找普通文件 find / -type f -name Glossary_Error.xml 2/dev/null #在根目录下按文件名查找仅查找普通文件忽略“权限不足”等错误信息让输出更干净 du -sh * # disk usage 统计目录/文件大小 df -h # disk free 查看磁盘挂载和使用率关于“2/dev/null”Linux 中的每个命令默认都有三个标准流标准输入0接收输入键盘标准输出1输出正常结果标准错误2输出错误信息2. 日志查看tailtail sys.log 查看文件最后十行tail -n 100 sys.log 查看文件最后100行tail -f sys.log实时滚动查看日志文件grepgrep error sys.log 打印出文件中所有包含 error 的行grep -i error sys.log 打印出文件中所有包含 error 的行,忽略大小写grep -i error -C 5 sys.log 打印出文件中所有包含 error 的行和前后5行,忽略大小写less 交互式分页查看大日志less sys.log 打开日志文件进行浏览空格键或Page Down向下翻页。b或Page Up向上翻页。G直接跳转到日志末尾。g回到日志开头。/关键词向下搜索关键词如/ERROR按n找下一个N找上一个。q退出查看。headhead -n 50 sys.log 查看文件头50行3. 进程与作业管理3.1 ps命令ps aux最经典命令列出系统上所有用户的全部进程。输出包含用户、PID进程号、CPU占比、内存占比、启动时间及具体命令。ps -ef另一种常见格式展示父子进程关系PPID更清晰。ps aux | grep java或ps aux | grep nginx3.2top- 实时动态监控top打开交互式任务管理器。默认按 CPU 使用率排序每隔几秒刷新一次。能看清系统整体负载Load Average。常用内部快捷键进入top后按P按 CPU 排序按M按内存排序按q退出。3.3 killkill- 通过 PID 杀进程最精准kill 1234默认发送-15SIGTERM 信号温柔地请求 PID 为 1234 的进程自行关闭允许它先保存数据和清理现场。kill -9 1234发送 SIGKILL 信号强制终止该进程不给它任何反应时间。通常在进程卡死、对普通kill无响应时使用。killall- 通过名字批量杀进程killall nginx直接关闭所有名为nginx的进程。或者killall -9 nginx3.4 nohup让命令在后台持续运行即使你退出终端也不会中断。nohup java -jar app.jar output.log 21 在后台跑程序并将所有标准输出和错误输出重定向到日志文件中。4. 性能监控与系统状态4.1 top 总览 CPU、内存、负载top - 15:00:00 up 71 days, 23:11, 2 users, load average: 0.23, 0.27, 0.27 Tasks: 462 total, 1 running, 460 sleeping, 1 stopped, 0 zombie %Cpu(s): 0.7 us, 0.5 sy, 0.0 ni, 98.5 id, 0.0 wa, 0.1 hi, 0.1 si, 0.0 st MiB Mem : 15705.0 total, 2145.6 free, 11994.5 used, 2390.5 buff/cache MiB Swap: 8072.0 total, 24.6 free, 8047.4 used. 3710.5 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME COMMAND 3061944 root 20 0 11.3g 2.0g 23912 S 5.3 13.3 194:09.91 java 2403847 root 20 0 201.8g 1.6g 671252 S 1.3 10.7 2:41.89 java 261902 root 20 0 3757800 127508 26624 S 0.7 0.8 594:28.58 dockerd 1908170 root 20 0 3197592 599256 7168 S 0.7 3.7 760:11.98 java 2954522 cloudwa 20 0 198548 48200 9856 S 0.7 0.3 72:55.54 manager 3208593 root 20 0 201.9g 1.6g 518104 S 0.7 10.7 7:34.11 java 4004839 root 20 0 20796 7912 5756 S 0.7 0.0 65:37.55 sshd 4005128 root 20 0 236412 8320 5888 S 0.7 0.1 42:19.97 top 1167 rabbitmq 20 0 4433124 78824 13312 S 0.3 0.5 258:17.36 beam.smp 319027 root 20 0 9952572 482188 9216 S 0.3 3.0 61:46.20 java 381957 root 20 0 10.3g 1.7g 12620 S 0.3 11.1 65:06.05 java 1504997 root 20 0 9994556 498864 9216 S 0.3 3.1 64:10.13 java 1505220 root 20 0 9915524 327556 9472 S 0.3 2.0 60:45.99 java 2308795 root 20 0 47608 12444 8252 S 0.3 0.1 43:26.85 nginx第一行系统概况。当前时间15:00:00 系统已运行71 天 23 小时 11 分 登录用户数2 个负载均值过去 1 分钟、5 分钟、15 分钟的平均负载分别是 0.23, 0.27, 0.27 负载很低说明 CPU 几乎没有排队等待的任务。负载系统当前正在运行 等待运行的进程数的平均值。如果数值持续超过 CPU 核心数例如 8 核服务器负载超过 8.0就需要排查是 CPU 不足还是磁盘/网络 I/O 瓶颈。第二行任务状态。 总共 462 个任务线程/进程 当前只有 1 个正在运行460 个睡眠1 个停止0 个僵尸进程 进程状态非常健康。第三行CPU 使用率。us用户态占用 0.7% sy内核态占用 0.5% ni调整过 nice 值的进程占用 0% id空闲 98.5% → CPU 几乎完全闲置 wa等待 I/O 为 0% → 磁盘没有明显瓶颈 hi / si硬中断/软中断各 0.1%很低 st被虚拟化偷走的时间 0%物理机或没超分 CPU 非常空闲系统没有计算压力。第四行物理内存。总内存约 15.7 GB 空闲2.1 GB 已用12.0 GB 缓冲/缓存2.4 GB 注意这里的 used 包含了进程实际占用 共享内存等free 是完全没有使用的内存。第五行交换空间。交换分区总量8.0 GB 空闲仅 24.6 MB 已用8.0 GB → 几乎被完全用尽 可用内存3710.5 MB avail Mem 是估计可以分配给新进程的内存量包括空闲内存和可回收的缓存。虽然还有 3.7 GB 可用但 swap 已经被严重占用说明系统历史上曾经历了严重内存压力大量内存页被换出到磁盘。最后进程列表。VIRT虚拟内存大小包含所有映射的库、申请的空间等不代表实际使用RES常驻物理内存非 swap 部分SHR共享内存大小%CPU单核 CPU 占比多核时可超过 100%%MEM物理内存占比TIME累计 CPU 时间4.2 free- 物理与交换内存监控free -h以人类可读的单位GB/MB显示内存状态。[rootOFDC1YYUAT233 dfyy_api]# free -h total used free shared buff/cache available Mem: 15Gi 11Gi 2.0Gi 546Mi 2.4Gi 3.6Gi Swap: 7.9Gi 7.9Gi 0.0Ki4.3 uptime # 系统运行时间与负载[rootOFDC1YYUAT233 dfyy_api]# uptime 15:33:03 up 71 days, 23:44, 3 users, load average: 0.25, 0.23, 0.225. 网络相关5.1 ss命令ss -tunlp | grep 8080-t(TCP)只显示 TCP 协议的 socket。-u(UDP)只显示 UDP 协议的 socket。-l(Listening)只显示当前正在监听Listen的端口。如果不加-l默认会显示所有已建立连接Established的 socket。-n(Numeric)不解析服务名和主机名直接显示 IP 地址和端口号。强烈建议带上这个参数否则ss会去查 DNS 反解析严重拖慢执行速度。-p(Process)显示使用该 socket 的进程名称和 PID需要 root 权限或sudo才能看到所有进程。输出示例Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process tcp LISTEN 0 128 0.0.0.0:8080 0.0.0.0:* users:((java,pid1234,fd15))5.2 curlcurl -v http://localhost:8080/api # 测试 HTTP 接口5.3 telnettelnet ip port # 测试端口连通性6. 权限与用户chmod 755 script.sh # 设置可执行权限 chown user:group file # 变更所有者 sudo -u tomcat cmd # 以特定用户执行

相关新闻