“ps -U”未按预期列出进程

“ps -U”未按预期列出进程

为什么该命令没有ps -U列出用户名的进程0x00,而是列出了 root 的进程。

$ id     
uid=1000(0x00) gid=1000(0x00) groups=1000(0x00),3(sys),90(network),98(power),108(vboxusers),952(libvirt),956(docker),991(lp),998(wheel)
                                                                                                                                                                                      
$ whoami             
0x00
                                                                                                                                                                                      
$ ps -fu 0x00 | grep -i vbox | grep -v grep
root         468       2  0 09:02 ?        00:00:00 [iprt-VBoxTscThread]
                                                                                                                                                                                      
$ ps -fu 1000 | grep -i vbox | grep -v grep
0x00       35855    1332  0 10:44 ?        00:00:02 /usr/lib/virtualbox/VBoxXPCOMIPCD
0x00       35861    1332  0 10:44 ?        00:00:05 /usr/lib/virtualbox/VBoxSVC --auto-shutdown

我可以创建一个以数字开头的用户名而不会出现错误。

$ sudo useradd -M -s /usr/bin/nologin 0x01
                                                                                                                                                                                      
$ id 0x01
uid=1001(0x01) gid=1001(0x01) groups=1001(0x01)                                          

Linux的用户名是不是不建议以数字来设置呢?

内核的补充信息:

$ uname -a                  
Linux 0xff1 6.7.4-2-MANJARO #1 SMP PREEMPT_DYNAMIC Sat Feb 10 09:41:20 UTC 2024 x86_64 GNU/Linux

答案1

我可以创建一个以数字开头的用户名而不会出现错误。

有些 Linux 发行版不强制执行用户名必须以字母开头的规则。甚至禁止使用特殊字符。
请参阅为什么 Linux 用户名不能以数字开头?
一个答案报告说Ubuntu接受用户名&#%^()!@~*?<>=|

Linux的用户名是不是不建议以数字来设置呢?

不建议使用以(十进制)数字字符开头的用户名。最好使用字母字符。这样用户名就很容易与用户 ID(数字值)区分开来。

如果您确实创建了一个奇怪的用户名(尤其是看起来像用户 ID 的用户名,即数值),则可能会破坏某些命令或得到奇怪的结果。
正如您所发现的,ps -u命令可能并不总是提供您想要/期望的结果。该u选项接受用户名或用户 ID。当您提供看起来像用户 ID(即数字)的用户名时,此选项可能会做出错误的选择并将参数视为用户 ID,而不是实际的 ID。
如果您坚持使用不遵守严格规则的非常规用户名,那么您将不得不应对后果。

一种解决方法是,当有选择时,始终提供用户 ID 而不是(模糊的)用户名。

相关内容