linux ps 命令用户名显示不全

老实说,我在使用Linux ps命令查看进程时,遇到过好几次用户名被截断的情况。
当时我看了一眼屏幕,发现用户名“long_username_example_for_testing Purpose_only”直接被砍成了“long_username_exam...”,相当烦人。

我尝试了几种方法,第一种效果最好。
正如您所说,使用 -o 参数指定列宽。
比如我在服务器上输入命令:ps -e -o user:6 4 ,pid,ppid,comm。
这里用户列宽设置为 6 4 个字符。
说实话,这个6 4 是一个随机数。
只需将它们调整为终端窗口的大小即可。
对于我的 1 4 英寸笔记本电脑,6 4 看起来不错,但如果我使用大显示器,我可能需要将其更改为 8 0 或 1 00。
执行命令后,缩短的用户名将立即完整显示。

第二种方法,我也使用过,是将多个字段组合起来输出。
例如,如果我除了用户名之外还想查看用户组,我会写: ps -e -o user:6 4 ,group,pid。
需要注意的是,每个字段必须用-o单独指定,而不是像Windows命令行那样用空格分隔,但是命令行通常很长,如果记不住全名,很容易出错。
我自己没有运行过,但我觉得这个方法只提取了第一列。
它可能适合在脚本中批量处理输出结果。
我需要提醒你更改系统用户名,使用 usermod -l Shortname -d /home/shortname -m 。
说实话,此时我不知道是否会出现这种情况。
是主目录权限的问题,不过这又弄坏了几个软链接,所以在改用户名之前,一定要先用ls -ld /home/old用户名确认下主目录的权限。

另外,我觉得top命令比ps好用,可以通过滚动鼠标滚轮来查看完整的用户名。
如果终端太紧,使用这些工具肯定比ps更好。
总之,要解决ps用户名缩短问题,显式指定列宽是最直接的方法,但是在更改系统用户名时必须特别小心,因为如果这样还不能完全解决,请改用top或htop之类的工具。

Linux命令行中ps命令的使用方法

要查看当前终端用户进程,请直接键入 ps 命令。
TTY 终端、TIMECPU 时间、CMD 命令名称。
ps aux,检查所有用户的所有进程。
用户,输入 u,没有 x 终端。
ps -ef,完整格式,e 全部,f 父进程。
ps -ef|grep nginx,检查nginx。
ps --forest -C bash,看一下bash进程树。
ps aux --sort=-%cpu|head -6 ,前 5 个 CPU。
ps aux --sort=-%mem|head -6 ,前5 个内存。
管道 grep 定位过程很快。