在Unix/Linux系统中,查询命令是日常管理和运维的核心工具,通过这些命令可以高效获取系统状态、文件信息、进程数据等关键内容,以下从文件系统、系统状态、网络通信、用户与权限、进程管理五个维度,详细介绍Unix常用查询命令的功能与用法。

文件系统查询命令
文件系统查询是Unix操作中最频繁的操作之一,主要命令包括ls
、find
、du
、df
等。
ls
命令用于列出目录内容,其常用选项包括:-l
以长格式显示(包含权限、所有者、大小、修改时间等),-a
显示隐藏文件(以开头的文件),-h
以人类可读格式显示文件大小(如K、M、G),-t
按修改时间排序。ls -lath
会按修改时间从新到旧列出所有文件,包括隐藏文件,并以可读格式显示大小。
find
命令用于按条件查找文件,其基本语法为find 路径 条件
,常用条件包括:-name
按文件名匹配(支持通配符,如*.txt
),-type
按文件类型查找(f
为普通文件,d
为目录),-size
按文件大小查找(如+10M
表示大于10MB的文件),-mtime
按修改时间查找(如-7
表示7天内修改过的文件)。find /home -name "*.log" -mtime +30
会查找/home
目录下30天前修改过的所有.log
文件。
du
命令用于查看目录或文件占用的磁盘空间,常用选项-h
以可读格式显示,-s
仅显示总计大小(不显示子目录详情)。du -sh /var/log
会显示/var/log
目录的总占用空间。

df
命令用于查看文件系统的磁盘使用情况,常用选项-h
以可读格式显示,-T
显示文件系统类型。df -hT
会列出所有挂载点的磁盘使用量、文件系统类型及挂载点路径。
系统状态查询命令
系统状态查询主要涉及硬件资源、运行时间、系统负载等信息,常用命令有top
、free
、uptime
、uname
等。
top
命令实时显示系统进程状态,包括CPU占用率、内存使用、进程ID等信息,按P
按CPU占用排序,M
按内存占用排序,q
退出。top -b -n 1
可输出单次结果并退出,适合脚本处理。
free
命令查看内存使用情况,-h
选项以可读格式显示,-m
以MB为单位。free -h
会显示总内存、已用、空闲、缓冲区等数据。

uptime
命令显示系统运行时间和负载平均值(1分钟、5分钟、15分钟)。uptime 15:30:10
会显示当前时间及系统负载。
uname
命令显示系统信息,-a
显示所有信息(内核版本、主机名、系统架构等),-r
显示内核版本。uname -a
会输出类似Linux hostname 5.4.0-91-generic #102-Ubuntu SMP Fri Nov 5 16:31:19 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
的结果。
网络通信查询命令
网络相关命令用于检查连接、端口状态、路由等信息,常用命令包括netstat
、ss
、ping
、traceroute
等。
netstat
命令显示网络连接、路由表、接口信息等,常用选项-tuln
显示TCP/UDP监听端口(不解析主机名),-an
显示所有连接(以数字形式显示地址和端口)。netstat -tuln | grep :80
可查看80端口是否被监听。
ss
是netstat
的替代工具,性能更优,语法类似。ss -tulnp | grep :22
可查看22端口(SSH)的监听进程。
ping
命令测试网络连通性,-c
指定发送次数,-i
设置间隔时间。ping -c 4 8.8.8.8
向Google服务器发送4个ICMP包。
traceroute
(Linux中为traceroute
,macOS中为tracert
)显示数据包到目标主机的路径。traceroute www.baidu.com
会显示经过的路由器IP地址。
用户与权限查询命令
Unix是多用户系统,用户和权限查询常用命令有who
、w
、id
、chmod
等。
who
命令显示当前登录系统的用户及终端信息,-u
显示登录时间,-q
显示用户数量。who -u
会输出用户名、终端、登录时间及空闲时间。
w
命令是who
的增强版,显示用户正在执行的进程。w username
可查看指定用户的活动。
id
命令显示用户和组的ID信息,-u
显示用户ID,-g
显示主组ID,-G
显示所有组ID。id -u root
会返回0
(root用户ID)。
chmod
命令修改文件权限,-R
递归修改目录权限。chmod 755 script.sh
设置所有者可读写执行,组和其他用户可读执行。
进程管理查询命令
进程查询和管理是系统运维的核心,常用命令有ps
、pgrep
、kill
、jobs
等。
ps
命令查看当前进程,-ef
显示所有进程(完整格式),-aux
显示所有进程(包括用户信息),-ef | grep nginx
可查找nginx进程。ps -ef | grep sshd
会显示所有sshd进程。
pgrep
按名称查找进程ID,例如pgrep -f nginx
返回nginx进程的PID。
kill
命令终止进程,-9
强制终止,例如kill -9 1234
终止PID为1234的进程。
jobs
查看当前终端的后台任务,-l
显示进程ID,fg
将任务调到前台。jobs -l
会显示后台任务及其PID。
相关问答FAQs
Q1: 如何查找占用CPU最高的进程?
A: 使用top
命令,按P
键按CPU占用排序,或通过ps
命令结合sort
:ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head -n 10
,该命令会按CPU占用从高到低显示前10个进程。
Q2: 如何查看某个端口被哪个进程占用?
A: 使用netstat
或ss
命令,例如netstat -tuln | grep :8080
或ss -tuln | grep :8080
,会显示8080端口的监听进程;或使用lsof -i :8080
,直接显示占用8080端口的进程详情。