Linux中查看进程信息的指令小结(ps 、ss、netstat、lsof 、pwdx、prtstat、ls -al /proc/[pid] )

本文总结了在Linux系统中使用ps、ss、netstat和lsof等命令来查看和管理进程的方法,包括查找Java进程、监控CPU和内存占用、检查端口占用以及定位进程与端口的关系。此外,还提到了当PHP CPU占用过高时的排查方法,并给出了一段用于查找进程与端口关联的脚本。这些工具对于日常系统管理和问题排查非常实用。

Linux中查看进程信息的指令小结:

一、 ps - report a snapshot of the current processes.

报告当前进程的快照

ps -aux | grep java

下图中的 61410 , 119323 为进程pid 。 这里我运行了两个tomcat,分别是端口8080和端口8081
在这里插入图片描述

ps -ef | grep java

在这里插入图片描述

找出占用CPU, 内存过高的进程

# cpu占用top10
ps -eo user,pid,pcpu,pmem,args --sort=-pcpu  |head -n 10
# 内存占用top10
ps -eo user,pid,pcpu,pmem,args --sort=-pmem  |head -n 10

jps指令是一个显示当前所有java进程pid的命令

二、ss和netstat

ss -naltp | grep java

ss - another utility to investigate sockets
在这里插入图片描述

netstat -naltp | grep java

netstat - Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships
在这里插入图片描述

三、lsof 、pwdx、prtstat、ls -al /proc/[pid]

top

lsof -i:8080

在这里插入图片描述

lsof -p [pid] 查看一个进程的执行文件

在这里插入图片描述
#2023-01补充
-i:显示所有连接PID。 lsof -t -i:8080(显示8080端口的PID) lsof -i@127.0.0.1(相当于ping)
在这里插入图片描述

ls -al /proc/[pid] | grep exe

在这里插入图片描述

pwdx [pid] 查看进程启动时用户的工作目录

在这里插入图片描述

prtstat [pid] 查看进程的详细信息

在这里插入图片描述

查看进程pid与端口之间关系的脚本

#!/bin/env bash
#write by ddcw at 2021.07.21
echo -e "PID \t PORT \t OPEN_FILEs \t cmdline"
for procnum in /proc/[0-9]*
do
	for inodes in $(ls -l ${procnum}/fd | grep  socket: | awk -F [ '{print $2}' | awk -F ] '{print $1}')
	do
		PORT=$(awk -v inode2="${inodes}" '{if ($10 == inode2) print $2}' /proc/net/tcp | awk -F : '{print $2}')
		PORT=$((0x${PORT}))
		if [[ ${PORT} -gt 0 ]];then
			echo -e "${procnum##*/} \t ${PORT} \t $(ls ${procnum}/fd | wc -l) \t\t $(cat ${procnum}/cmdline)"
		fi
	done
done

在这里插入图片描述

脚本来源:https://github.com/ddcw/ddcw/blob/master/shells/getLocalPortProcess.sh

php的cpu突然100怎么排查?怎么定位是那个函数或者配置

perf top -g -p(php-fpm进程号)

这些指令基本满足工作需求。被挖矿了产生了莫名其妙的进程,也可通过上述指令来查找对应的信息。

参考:https://blog.youkuaiyun.com/kevin_mails/article/details/91462426 《中了矿机xmrig的毒》

END

<think> 我们被要求介绍多个Linux命令的使用,包括ls, cat, find, vim, netstat, top, ps, lsof, cp, mv, ln, du, fdisk, mount。我们将按照命令的功能分类进行介绍,每个命令给出基本用法和常用选项,并配以示例。 注意:由于用户要求使用中文回答,并且按照指定的格式,我们会在适当的地方使用数学公式(如果有需要的话)和代码块。 同时,我们会参考之前提供的引用内容(如free命令的用法)但不局限于它,因为用户这次的需求是了解上述命令。 我们将命令分为以下几类: 1. 文件和目录操作:ls, cp, mv, ln, du 2. 文件内容查看与编辑:cat, vim 3. 文件搜索:find 4. 进程和系统监控:top, ps, netstat, lsof 5. 磁盘管理:fdisk, mount 注意:由于命令选项众多,我们只介绍最常用的部分。 </think> ### Linux 常用命令详解 #### **一、文件与目录操作** 1. **`ls`**: 列出目录内容 ```bash ls -l # 详细列表(权限/大小/时间) ls -a # 显示隐藏文件(以`.`开头) ls -lh # 人类可读的文件大小(如KB/MB)[^1] ``` > 示例:`ls -la /home` 查看家目录所有文件(含隐藏文件) 2. **`cp`**: 复制文件/目录 ```bash cp file1 file2 # 复制文件 cp -r dir1 dir2 # 递归复制目录 cp -p file1 backup/ # 保留原属性拷贝 ``` 3. **`mv`**: 移动或重命名 ```bash mv file1 dir/ # 移动文件 mv old.txt new.txt # 重命名文件 mv -i file* ~/docs # 交互式移动(覆盖前提示) ``` 4. **`ln`**: 创建硬链接/软链接 ```bash ln source.txt hard_link # 创建硬链接(共用inode) ln -s source.txt sym_link # 创建软链接(类似快捷方式) ``` 5. **`du`**: 查看磁盘使用 ```bash du -sh dir/ # 查看目录总大小 du -h --max-depth=1 # 显示一级子目录大小 du -ah | sort -rh # 列出所有文件大小并排序[^1] ``` --- #### **二、文件内容操作** 1. **`cat`**: 显示文件内容 ```bash cat file.txt # 输出全文 cat -n file.txt # 显示行号 cat file1 file2 > merged.txt # 合并文件 ``` 2. **`vim`**: 文本编辑器 ```bash vim file.txt # 编辑文件 ``` - **常用操作**: - `i` 进入编辑模式 → `Esc` 退出编辑 - `:wq` 保存退出 | `:q!` 强制退出 - `/keyword` 搜索 → `n` 跳转下一个匹配 --- #### **三、文件搜索** **`find`**: 高级文件搜索 ```bash find /path -name "*.log" # 按名称搜索 find . -size +10M # 查找大于10MB的文件 find /var -mtime -7 -exec rm {} \; # 删除7天前的文件 ``` > 逻辑运算符:`-and`(默认), `-or`, `-not` --- #### **四、系统与进程监控** 1. **`top`**: 动态进程监控 ```bash top # 实时显示进程资源占用 top -p PID # 监控指定进程 ``` - **交互命令**: - `P` 按CPU排序 | `M` 按内存排序 | `k` 终止进程 2. **`ps`**: 进程快照 ```bash ps aux # 显示所有运行中进程 ps -eo pid,cmd,%mem --sort=-%mem | head # 内存占用TOP5[^1] ``` 3. **`netstat`**: 网络连接监控 ```bash netstat -tuln # 查看所有监听端口 netstat -anp | grep :80 # 检查80端口占用进程 ``` 4. **`lsof`**: 查看打开的文件 ```bash lsof -i :22 # 查看SSH端口使用情况 lsof /var/log/syslog # 查看谁在读写日志文件 ``` --- #### **五、磁盘管理** 1. **`fdisk`**: 磁盘分区工具 ```bash sudo fdisk -l # 列出所有磁盘分区 sudo fdisk /dev/sdb # 对sdb磁盘分区(需交互操作) ``` 2. **`mount`**: 挂载文件系统 ```bash mount /dev/sdb1 /mnt # 挂载分区 mount -t nfs 192.168.1.10:/data /share # 挂载NFS umount /mnt # 卸载分区 ``` --- #### **命令关联示例** ```bash # 查找大文件并排序 find / -size +100M -exec du -h {} \; | sort -rh # 监控高内存进程 watch -n 1 "ps -eo pid,cmd,%mem --sort=-%mem | head -n 6" ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值