ps命令USER显示UID而不是USER

本文探讨了在Linux环境下使用ps命令时,为何显示的是UID而非完整的用户名,尤其是在用户名长度超过8位的情况下。文章提供了调整ps命令参数以正确显示长用户名的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天巡检时,检查进程发现ps命令查询结果显示UID而不是USER。
在这里插入图片描述
经查询得知,8位以及下用户名的账号能够显示完整的用户名,8位以上则显示UID。

ps -o ruser=longusername -e -o pid,ppid,c,stime,tty,time,cmd |grep XXX(进程关键字)

longusername:随便填写的,Linux会自动检查此字符串的长度,为12,则12位以下用户名都能正常显示

如图所示:
在这里插入图片描述

### 关于 `ps` 命令的用法 在 Linux 和 Unix 系统中,`ps` 是用于显示当前运行进程的状态信息的重要工具之一。最简单的使用方式是不带任何参数执行该命令,这会列出与终端关联的部分进程[^3]。 然而,在实际操作中通常需要更详细的控制来筛选特定条件下的进程列表。以下是几种常见的用法: #### 显示所有进程 为了查看系统中的所有进程而不仅仅是那些连接到某个终端上的进程,可以使用 `-e` 或者 `A` 参数: ```bash ps -e ``` 或者结合其他选项获取更多信息比如用户ID(`UID`)、父进程ID(`PPID`)等字段时可加上额外标志如 `-f` 表示完整格式化输出: ```bash ps -ef ``` 此形式非常有用因为它不仅限于展示自己的shell session内的程序而且涵盖了整个系统的活动状况。 #### 根据用户名过滤进程 如果只想看属于某位用户的全部作业,则可以通过指定相应的标记实现这一目标。例如查找由root账户启动的所有任务可以用下面这条语句完成: ```bash ps u -U root ``` 这里字母'u'代表采用BSD风格打印结果的同时还加入了更多细节描述;'-U username'部分则明确了只检索归属给定名称者的实例们。 #### 结合grep进一步缩小范围 当面对大量数据难以快速定位感兴趣的目标对象的时候,我们可以借助管道符'|'把前一步骤产生的原始资料传递至另一个实用的小型应用程序——即正则表达式的匹配引擎 grep 来辅助处理。假设我们希望找到名为httpd的服务进程是否存在并记录下来的话就可以这样写出来: ```bash ps aux | grep httpd ``` 上述例子先调用了带有 'aux' 组合开关版本号的 ps 功能列举出尽可能详尽的结果集之后再利用模式搜寻技术锁定关键字为"httpd"的相关条目。 ### 示例代码片段 下面是几个常用的脚本样例供参考学习: 1. 列举当前登录用户的每一个后台线程及其属性特征。 ```bash ps -u $USER ``` 2. 寻找占用CPU资源最高的那个实体单位编号(PID)以及其对应的指令字符串。 ```bash ps -eo pid,ppid,cmd,%cpu --sort=-%cpu | head -n 1 ``` 3. 删除名字叫做myprocess且状态处于僵死态(Zombie State)的一系列子项单元。 ```bash ps axo stat,euid,rss,vsize,args | egrep "^Z|^z" | awk '{print "kill -9",$2}'| sh ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值