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):只显示该 pidmem 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/THR | nice / 状态 / 线程数 |
| 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)}'