ปัญหาหลักที่ฉันเห็นเมื่อไม่นานมานี้คือ ps บน Solaris (10) มันหายไป 9 ตัวอักษร + ดังนั้นถ้าคุณต้องการ grep สำหรับชื่อผู้ใช้ที่ไม่ตรงกัน
$ sudo -u longusername ps -fu longusername
UID PID PPID C STIME TTY TIME CMD
longuser 14012 11985 0 09:58:39 pts/2 0:00 ps -fu longusername
หากคุณทำ ls -l ในไดเรกทอรีที่มีไฟล์ที่เป็นของผู้ใช้คอลัมน์จะถูกผลักออกจากการจัดตำแหน่ง
$ ls -ld /export/home/l*
drwxr-xr-x 2 lauser users 6 Mar 23 10:21 /export/home/lzuser
drwxr-xr-x 2 longusername users 6 May 4 10:02 /export/home/longusername
drwxr-xr-x 2 lzuser users 6 Mar 12 11:21 /export/home/lzuser
โดยทั่วไปคุณจะต้องระวังเครื่องมือใด ๆ ที่จัดการกับชื่อล็อกอินและไม่ใช่แค่ UID ซึ่งอาจรวมถึงสิ่งที่อ่านหรือเขียนไปยังล็อกไฟล์หรือฐานข้อมูลหรือใช้ผลลัพธ์ของเครื่องมือเช่นที่ผ่านมาใครนิ้วมือ ls, ps ฯลฯ
Google อย่างรวดเร็วเปิดหน้านี้:
http://fixunix.com/sun/113647-username-lenght-more-then-8-characters.html
ซึ่งเพิ่มเหตุผลเพิ่มเติมบางอย่าง
สำหรับแนวปฏิบัติที่ดีที่สุดสำหรับการสร้างชื่อผู้ใช้อาจมีความยุ่งยากในการใช้การเข้าสู่ระบบในเมืองหลวงแทนที่จะเป็นตัวพิมพ์เล็กดังนั้นจึงควรหลีกเลี่ยงเช่นกัน
เมื่อระบบ (เก่ากว่า) บางระบบเมื่อเห็นการเข้าสู่ระบบในเมืองหลวงเท่านั้นระบบจะใช้ค่าเริ่มต้นเป็นอย่างดีว่าสมมติว่าเทอร์มินัลของผู้ใช้ไม่รองรับตัวพิมพ์เล็กดังนั้นให้ตั้งค่า EVERYTHING ทุกอย่างเป็นตัวพิมพ์ใหญ่ คำสั่ง Unix เมื่อคุณเข้าสู่ระบบ!)
แก้ไข (16/04/2019):
ฉันเพิ่งสังเกตเห็นใน RHEL 7.5 ว่าผลลัพธ์ของ ps ไม่เล่นอย่างใดอย่างหนึ่ง:
$ ps -fulongusername
UID PID PPID C STIME TTY TIME CMD
longuse+ 1230 27243 0 Apr13 pts/0 00:00:00 vim somescript.sh
longuse+ 1701 27243 0 Apr05 pts/0 00:00:00 vim another-script.sh
longuse+ 3116 27243 0 Apr12 pts/0 00:00:01 vim test_script.sh
มันตัดทอนชื่อผู้ใช้ด้วย '+' ซึ่งไม่เป็นประโยชน์หากคุณไม่คุ้นเคยกับผู้ใช้รายใดที่จะเป็นและหมายความว่าคุณไม่สามารถพึ่งพาเอาต์พุตของ ps เช่นอินพุตของสคริปต์ที่จำเป็นต้องรู้ว่าใคร เป็นเจ้าของกระบวนการ