mem/men:进程管理

mem / men:进程管理(已进用户环境,gen327/328)

同一脚本装两个命令名,完全等效。落点 /etc/nixos/modules/system/service/ps-mem.{nix,sh,txt};完整运行手册见 ps-mem.txt,台账见 docs/ps-mem-command.md。

过滤(无参=帮助)

  • mem:帮助
  • mem list:Top10(表头+10 行)
  • mem N(1~50):Top N;mem PID(>50):只显示该 pid
  • mem a,b,c:全数字逗号=pid 列表
  • mem 关键词 / mem k1,k2:COMMAND/完整命令行包含(大小写不敏感,任一命中)

排序(-s,只能给一个;缺省 RSS 从大到小)

mem|men|memory=%MEM↓ cpu|rss|vsz|swap|thr=对应字段↓ pid|process=PID↑ time=运行最久在前 command=短名升序。例:mem 5 -s cpu、mem chrome -s cpu、光 mem -s swap=按换出量的 Top10。

结束进程(只收 pid,逐行回显 发送/核验)

  • mem kill pid[,..]:SIGKILL 强制杀
  • mem stop pid[,..]:SIGSTOP 暂停(kill -CONT pid 恢复)
  • mem terminal pid[,..]:SIGTERM 终止
  • mem quit pid[,..]:SIGQUIT 退出(会产生 core)

拒绝 pid 1 / 自身 / 祖先链 / pid 0。退出码:0 全成;1 发送失败/拒绝/核验未过;2 用法错。注意:已 STOP 的进程收 TERM/QUIT 后信号挂起,核验报“仍在运行”是 Unix 语义。

列(14 列,COMMAND 前、WCHAN 变长垫底)

PID/PPID/USER进程号 / 父进程号 / 属主
%CPU/%MEM启动至今平均 CPU% / 物理内存占比
RSS/VSZ/SWAP物理 / 虚拟 / 换出量(人类可读 K/M/G;SWAP 走 /proc VmSwap)
NI/STAT/THRnice / 状态 / 线程数
ELAPSED已运行时间
COMMAND内核短名 comm(15 字符截断,如 .plasmashell-wra)
WCHAN内核等待点(/proc wchan;R 态常为 0 或空,属正常)

其它 Linux 复用:一句话命令(复制粘贴即用)

等价于 mem list(表头+10 行,按 RSS 从大到小)。改 head -n 数字调行数(N+1=表头+ N 行)。依赖:ps(procps)+ awk + /proc 可读。

ps -eo pid,ppid,user,%cpu,%mem,rss,vsz,ni,stat,nlwp,etime,comm --sort=-rss | head -n 11 | awk 'function h(k){if(k>=1048576)return sprintf("%.1fG",k/1048576);if(k>=1024)return sprintf("%.1fM",k/1024);return k"K"} function sw(p, l,a,v){v="-";while((getline l<("/proc/"p"/status"))>0){if(l~/^VmSwap:/){split(l,a,/[ \t]+/);v=a[2];break}}close("/proc/"p"/status");return v} function wc(p, w){w="-";if((getline w<("/proc/"p"/wchan"))>0){if(w=="")w="0"}close("/proc/"p"/wchan");return w} NR==1{printf "%-8s%-8s%-8s%-6s%-6s%-8s%-8s%-8s%-4s%-6s%-6s%-12s%-16s%s\n","PID","PPID","USER","%CPU","%MEM","RSS","VSZ","SWAP","NI","STAT","THR","ELAPSED","COMMAND","WCHAN";next} {s=sw($1);printf "%-8s%-8s%-8s%-6s%-6s%-8s%-8s%-8s%-4s%-6s%-6s%-12s%-16s%s\n",$1,$2,$3,$4,$5,h($6),h($7),(s=="-"?"-":h(s+0)),$8,$9,$10,$11,$12,wc($1)}'