在Linux服务器运维和日常开发调试中,系统管理命令是与机器交互最直接的方式。不同于图形界面,命令行通过参数组合可以精确控制资源查看、进程管理和服务调度。理解这些命令及其参数,能帮助我们在无界面环境下快速定位问题。

一、磁盘与文件系统管理命令
磁盘空间不足是常见的系统故障源头,df和du是两个最基础但容易被混淆的命令。df用于报告文件系统整体挂载点的使用情况,而du用来统计具体目录或文件的磁盘占用。很多新手在排查“空间明明够却写不进文件”时,忽略了df -i查看inode用量的参数,导致找不到真正瓶颈。
以下示例展示了如何用df查看人类可读的容量,以及用du定位大目录:
# 查看所有挂载点,以GB/MB单位显示 df -h # 查看根分区inode使用率,避免inode耗尽 df -i # 统计当前目录下各子目录大小,按易读单位 du -h --max-depth=1 .
从参数设计上看,-h(human-readable)是多数Linux命令通用的友好参数,把字节转为K、M、G。而du的--max-depth则限定递归深度,防止在海量小文件目录中卡死。掌握这些参数后,我们可以写一个简单的巡检脚本,在crontab里定期报警。
1.1 参数使用的注意事项
在使用df时,如果挂载了网络文件系统(如NFS),远端无响应会导致df命令挂起。此时可加上-x nfs排除特定类型,或用timeout命令包裹。对于du,避免在/ proc等虚拟文件系统运行,否则会读出无意义数据并拖慢系统。
实际生产中,我们更推荐组合使用:先用df -h定位哪个挂载点满,再用du -h定位具体目录,最后用ls -lh看文件级别。这种分层排查法比单条命令更有效。
二、进程管理与监控命令
当系统负载突增,ps和top是第一时间要用的工具。ps用于静态快照,top提供动态实时视图。参数组合上,ps aux是查看所有用户进程的标准写法,a表示所有终端,u输出用户导向格式,x包含无控制终端的进程。
下面代码演示了如何过滤特定进程并提取CPU占用:
# 查看所有进程及资源,管道给grep找nginx ps aux | grep nginx # 只显示PID、命令、CPU和内存 ps -eo pid,comm,%cpu,%mem --sort=-%cpu | head # 动态查看,每2秒刷新 top -d 2
top命令内部还可以按P按CPU排序、按M按内存排序,这对现场救火非常实用。与之相比,ps更适合写进脚本做条件判断,比如检查某服务是否存活。
2.1 kill命令的信号参数
很多人习惯用kill -9强制结束进程,但-9(SIGKILL)不允许进程做任何清理,可能造成数据丢失。常规应先发-15(SIGTERM),给程序优雅退出机会。以下示例展示区别:
# 优雅终止PID为1234的进程 kill -15 1234 # 强制杀死,慎用 kill -9 1234
在系统管理脚本里,通常先try kill -15,等待几秒再用ps检测,若仍在运行才kill -9。这种参数策略体现了命令背后Unix信号机制的设计哲学。
三、系统服务与运行状态命令
现代Linux发行版普遍采用systemd,systemctl成为管理服务的主入口。它替代了旧的service和chkconfig,参数更统一。status子命令可看服务活跃状态、日志尾部和依赖,restart用于重载,enable控制开机自启。
基础用法如下:
# 查看ssh服务状态 systemctl status sshd # 重启网络服务 systemctl restart network # 设置开机启动 systemctl enable nginx
除了systemctl,uptime可看负载和运行时长,free -m以MB显示内存,这些都属于系统状态速览命令。把它们组合起来,就是一份最简巡检清单。
3.1 参数组合实践
写运维脚本时,常用systemctl is-active判断服务,再配合free -m阈值判断。比如内存低于100MB且服务异常则报警。这种参数级联使用,比单一命令更能适应复杂环境。
总体而言,Linux系统管理命令的参数并非随意设计,而是对应了具体的系统调用或proc文件系统字段。弄清df、ps、systemctl等核心命令及常用参数,是每一个服务端开发者和运维人员的必修课。