隔壁老王 | 【閒聊】Unix 上的PID會大於65535嗎? 如題 其實之前小弟自己的觀念都是PID(Process ID)應該是在1~655355之間 但是前幾天公司聽朋友說PID>99999會造成某些問題 所以想請問一下各位先進 是不是我的觀念一直都是錯誤的呢 Thanks. |
回覆 |
進階會員 | FreeBSD default 支援到最大的 UID 是 32000 man page 裡邊有提到 man adduser uid Automatically generated or your choice, must be less than 32000. adduser 的 source 有這麼一行 $uid_end = 32000; # max. uid 另外 solaris default 支援到最大的 UID 是 2147483647 man page 有提到 -u uid The UID of the new user. This UID must be a non- negative decimal integer below MAXUID as defined in <sys/param.h>. The UID defaults to the next available (unique) number above the highest number currently assigned. For example, if UIDs 100, 105, and 200 are assigned, the next default UID number will be 201. (UIDs from 0-99 are reserved for possible use in future applications.) 看看 /usr/include/sys/param.h 這支 裡面定義了 #define MAXUID 2147483647 /* max user id */ 太大的 UID 會造成什麼問題? 不妨提出來大家討論討論。 |
回覆 |
隔壁老王 | 這個問題我們後來找到原因了 證實的確PID是有可能會>99999 一般照理來說PID是會被reuse的 所以我們不常看到這麼大的PID 出狀況的是客戶的AIX,因為上面某個AP產生了一堆zombie 把PID用了一堆 至於會有甚麼問題,對系統本身應該是還好 但是對一些上面的ap如果沒考慮到這點的話就有危險 比如說用regular expression去切的時候就有可能出錯.... |
回覆 |
進階會員 | sorry 我答非所問...我把PID看成UID了 如果PID>99999,大部分的情形就是你所說的那樣 有些程式 run 到 zombie,佔住了PID number,所以沒有reuse 也很有可能 parent process 沒有正常的收拾掉已經工作完成(或是工作不正常)child process ,釋放 PID number,來提供系統reuse 。 有時候,這些zombie process太多會拖垮系統亦或是大大的降低系統的效能。 更有些時候zombie 硬 kill 也砍不掉,搞到最後,只有將機器reboot一途。 |
回覆 |
|
XML | RSS 2.0 | RSS |
本論壇所有文章僅代表留言者個人意見,並不代表本站之立場,討論區以「即時留言」方式運作,故無法完全監察所有即時留言,若您發現文章可能有異議,請 email :[email protected] 處理。