「ps -U」未如預期列出進程

「ps -U」未如預期列出進程

為什麼該指令不ps -U列出 username 的進程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 而不是(不明確的)使用者名稱。

相關內容