อ่าน 6 นาที
โปรซีเอฟ
ระบบ ไฟล์ proc ( procfs ) เป็นระบบไฟล์พิเศษใน ระบบปฏิบัติการ แบบ Unix ที่แสดงข้อมูลเกี่ยวกับ กระบวนการ และข้อมูลระบบอื่นๆ ในโครงสร้างแบบไฟล์ที่มีลำดับชั้น...
โปรซีเอฟ
ระบบไฟล์ proc ( procfs ) เป็นระบบไฟล์พิเศษใน ระบบปฏิบัติการ แบบ Unixที่แสดงข้อมูลเกี่ยวกับกระบวนการและข้อมูลระบบอื่นๆ ในโครงสร้างแบบไฟล์ที่มีลำดับชั้น ทำให้สามารถเข้าถึงข้อมูลกระบวนการที่เก็บไว้ในเคอร์เนลได้อย่างสะดวกและเป็นมาตรฐานมากกว่า วิธี การติดตาม แบบดั้งเดิม หรือการเข้าถึง หน่วยความจำ เคอร์เนล โดยตรง โดยทั่วไปแล้ว จะถูกแมปไปยังจุดเชื่อมต่อชื่อ/procในระหว่างการบูต ระบบไฟล์ proc ทำหน้าที่เป็นอินเทอร์เฟซสำหรับโครงสร้างข้อมูลภายในเกี่ยวกับกระบวนการที่กำลังทำงานอยู่ในเคอร์เนล ในLinuxยังสามารถใช้เพื่อรับข้อมูลเกี่ยวกับเคอร์เนลและเปลี่ยนแปลงพารามิเตอร์เคอร์เนลบางอย่างในระหว่างการทำงาน ( sysctl ) ได้อีกด้วย
ระบบปฏิบัติการที่คล้าย Unix หลายระบบรองรับระบบไฟล์ proc รวมถึงSystem V , Solaris , IRIX , Tru64 UNIX , BSD , Linux , IBM AIX , [ 1 ] QNXและPlan 9 จาก Bell Labs OpenBSD ยกเลิก การสนับสนุนในเวอร์ชัน 5.7 ซึ่งวางจำหน่ายในเดือน พฤษภาคม 2015 และไม่มีอยู่ในHP-UX [ 1 ]และmacOS [ 2 ]
เคอร์เนลของ ลินุกซ์ ขยายขอบเขตนี้ไปยังข้อมูลที่ไม่เกี่ยวข้องกับกระบวนการทำงาน
ระบบไฟล์ proc เป็นวิธีการสื่อสารระหว่างพื้นที่เคอร์เนลและพื้นที่ผู้ใช้ตัวอย่างเช่น คำสั่ง ps บนPlan 9และยูทิลิตี้รายงานกระบวนการps เวอร์ชัน GNUใช้ระบบไฟล์ proc เพื่อดึงข้อมูลโดยไม่ต้องใช้การเรียกใช้ระบบ เฉพาะใด ๆ
ประวัติศาสตร์
UNIX รุ่นที่ 8
Tom J. Killianได้นำ เวอร์ชัน /proc ของ UNIX รุ่นที่ 8 (V8) มาใช้ โดยเขาได้นำเสนอเอกสารเรื่อง"Processes as Files"ที่USENIXในเดือนมิถุนายน พ.ศ. 2527 การออกแบบ procfs มีเป้าหมายเพื่อแทนที่ การเรียกใช้ระบบ ptraceที่ใช้สำหรับการติดตามกระบวนการ สามารถดูเอกสารโดยละเอียดได้ในหน้า คู่มือ proc(4)
เอสวีอาร์3
ระบบปฏิบัติการ AT&T System V Release 3 (SVR3) รุ่นดั้งเดิม (ซึ่งมีให้ใช้งานภายใน AT&T ในปี 1986 และใช้งานทั่วไปในปี 1987) ไม่ได้มาพร้อมกับ ระบบไฟล์ /procแต่เวอร์ชันที่พัฒนาขึ้นในภายหลังได้เพิ่มระบบไฟล์นี้เข้ามา โดยมีเฉพาะไฟล์ที่แสดงถึงกระบวนการทำงานเท่านั้น ไม่ใช่ไดเร็กทอรีย่อยแบบที่พบได้ทั่วไปในปัจจุบัน
เอสวีอาร์4
Roger FaulknerและRon Gomesได้พอร์ต V8 /procไปยังSVR4และตีพิมพ์บทความชื่อ"The Process File System and Process Model in UNIX System V"ในงาน USENIX เมื่อเดือนมกราคม 1991 ระบบไฟล์ procfs ประเภทนี้รองรับการสร้างpsแต่ไฟล์สามารถเข้าถึงได้ด้วยฟังก์ชันread() , write()และioctl () เท่านั้น ระหว่างปี 1995 ถึง 1996 Roger Faulkner ได้สร้างอินเทอร์เฟซ procfs-2 สำหรับ Solaris-2.6 ซึ่งมีระบบไฟล์ /proc ที่มีโครงสร้างพร้อมไดเร็กทอรีย่อย
แผน 9
Plan 9ได้นำระบบไฟล์สำหรับกระบวนการทำงานมาใช้ แต่ก้าวไปไกลกว่า V8 ระบบไฟล์สำหรับกระบวนการทำงานของ V8 ใช้ไฟล์เดียวต่อกระบวนการทำงาน แต่ Plan 9 สร้างลำดับชั้นของไฟล์แยกต่างหากเพื่อจัดเตรียมฟังก์ชันเหล่านั้น และทำให้ /proc เป็นส่วนหนึ่งของระบบไฟล์อย่างแท้จริง นอกจากนี้ แนวทางการพกพาของ Plan 9 ยังช่วยให้ระบบที่มีสถาปัตยกรรมและลำดับไบต์ที่แตกต่างกันสามารถดีบักกระบวนการทำงานของระบบอื่นได้
4.4BSD และเวอร์ชันที่พัฒนาต่อยอดจากเวอร์ชันนี้
4.4BSDคัดลอกการใช้งาน/procมาจาก Plan 9 ณ เดือนกุมภาพันธ์ 2011 procfs กำลังค่อยๆ ถูกยกเลิกใน FreeBSD [ 3 ]และได้เปลี่ยนไปใช้ ส่วนติดต่อ sysctlแทนสำหรับข้อมูลที่เกี่ยวข้องกับกระบวนการ เพื่อให้เข้ากันได้กับไบนารีกับโปรแกรมพื้นที่ผู้ใช้ของ Linux เคอร์เนลของ FreeBSD ยังมีlinprocfsซึ่งคล้ายกับ procfs ของ Linux [ 4 ] มันถูกลบออกจากOpenBSDในเวอร์ชัน 5.7 ซึ่งวางจำหน่ายในเดือนพฤษภาคม 2015 เนื่องจาก "มักประสบปัญหา race condition และตอนนี้ไม่ได้ใช้งานแล้ว" [ 5 ] macOSไม่ได้ใช้งาน procfs และโปรแกรมพื้นที่ผู้ใช้ต้องใช้ ส่วนติดต่อ sysctlเพื่อดึงข้อมูลกระบวนการ[ 2 ]
โซลาริส
/proc ใน Solaris มีให้ใช้งานมาตั้งแต่เริ่มต้น (มิถุนายน 1992) Solaris 2.6 ในปี 1996 ได้แนะนำ procfs2 จาก Roger Faulkner
ลินุกซ์
ลินุกซ์ได้เพิ่มระบบไฟล์ /proc เป็นครั้งแรกในเวอร์ชัน 0.97.3เมื่อเดือนกันยายน ปี 1992 และเริ่มขยายการใช้งานให้ครอบคลุมข้อมูลที่ไม่เกี่ยวข้องกับกระบวนการทำงานในเวอร์ชัน 0.98.6 เมื่อเดือนธันวาคม ปี 1992
ณ ปี 2020 การใช้งาน Linux มีไดเร็กทอรีสำหรับแต่ละกระบวนการที่กำลังทำงานอยู่ รวมถึง กระบวนการ เคอร์เนลโดยอยู่ในไดเร็กทอรีชื่อ/proc/PIDซึ่งPIDคือหมายเลขกระบวนการ แต่ละไดเร็กทอรีจะมีข้อมูลเกี่ยวกับหนึ่งกระบวนการ รวมถึง:
- /proc/PID/cmdlineคือคำสั่งที่เริ่มต้นกระบวนการในตอนแรก
- /proc/PID/cwdคือลิงก์สัญลักษณ์ไปยังไดเร็กทอรีการทำงานปัจจุบันของกระบวนการ
- /proc/PID/environประกอบด้วยชื่อและค่าของตัวแปรสภาพแวดล้อมที่มีผลต่อกระบวนการทำงาน
- /proc/PID/exeคือลิงก์สัญลักษณ์ไปยัง ไฟล์ ปฏิบัติการ ต้นฉบับ หากไฟล์นั้นยังคงอยู่ (กระบวนการอาจยังคงทำงานต่อไปได้แม้ว่าไฟล์ปฏิบัติการต้นฉบับจะถูกลบหรือถูกแทนที่แล้วก็ตาม)
- /proc/PID/fdคือไดเร็กทอรีที่มีลิงก์สัญลักษณ์สำหรับตัวระบุไฟล์ ที่เปิด อยู่ แต่ละตัว
- /proc/PID/fdinfoคือไดเร็กทอรีที่มีรายการต่างๆ ซึ่งอธิบายตำแหน่งและแฟล็กสำหรับตัวระบุไฟล์ที่เปิดอยู่แต่ละตัว
- /proc/PID/mapsคือไฟล์ข้อความที่มีข้อมูลเกี่ยวกับ ไฟล์และบล็อก ที่ถูกแมป (เช่น ฮีปและสแต็ก)
- /proc/PID/mem ซึ่งเป็นอิมเมจไบนารีที่แสดงถึง หน่วยความจำเสมือนของกระบวนการสามารถเข้าถึงได้โดยกระบวนการที่ใช้คำสั่งptrace เท่านั้น
- /proc/PID/rootคือลิงก์สัญลักษณ์ไปยังพาธรูทที่กระบวนการนั้นมองเห็น สำหรับกระบวนการส่วนใหญ่จะเป็นลิงก์ไปยัง / เว้นแต่ว่ากระบวนการนั้นกำลังทำงานอยู่ในสภาพแวดล้อมแบบchroot jail
- /proc/PID/statusมีข้อมูลพื้นฐานเกี่ยวกับกระบวนการทำงาน รวมถึงสถานะการทำงานและการใช้หน่วยความจำ
- /proc/PID/taskคือไดเร็กทอรีที่มีฮาร์ดลิงก์ไปยังงานใดๆ ที่เริ่มต้นโดยกระบวนการนี้ (เช่น กระบวนการหลัก)
(ผู้ใช้สามารถรับPID ได้ โดยใช้ยูทิลิตี้ เช่นpgrep , pidofหรือps :
$ ls -l /proc/ $( pgrep -n python3 ) /fd # แสดงรายการตัวระบุไฟล์ทั้งหมดของกระบวนการ `python3` ที่เริ่มต้นล่าสุดtotal 0 lrwx------ 1 baldur baldur 64 2020-03-18 12:31 0 -> /dev/pts/3 lrwx------ 1 baldur baldur 64 2020-03-18 12:31 1 -> /dev/pts/3 lrwx------ 1 baldur baldur 64 2020-03-18 12:31 2 -> /dev/pts/3 $ readlink /proc/ $( pgrep -n python3 ) /exe # แสดงรายการไฟล์ปฏิบัติการที่ใช้ในการเริ่มต้นกระบวนการ `python3` ล่าสุด /usr/bin/python3.8)
นอกจากนี้ /procยังรวมถึงข้อมูลระบบที่ไม่เกี่ยวข้องกับกระบวนการทำงานด้วย แม้ว่าในเคอร์เนลเวอร์ชัน 2.6 ข้อมูลส่วนใหญ่จะถูกย้ายไปยังระบบไฟล์เสมือนแยกต่างหากที่เรียกว่าsysfsซึ่งติดตั้งอยู่ภายใต้/sysก็ตาม
- ขึ้นอยู่กับโหมดการจัดการพลังงาน (ถ้ามี) อาจเป็นไดเร็กทอรี/proc/acpiหรือ/proc/apmซึ่งมีมาก่อน sysfs และมีข้อมูลต่างๆ เกี่ยวกับสถานะการจัดการพลังงาน
- /proc/buddyinfoข้อมูลเกี่ยวกับอัลกอริธึม buddyที่จัดการการแตกกระจายของหน่วยความจำ[ 6 ]
- /proc/busประกอบด้วยไดเร็กทอรีที่แสดงถึงบัสต่างๆ บนคอมพิวเตอร์ เช่นPCI / USB ปัจจุบัน ระบบไฟล์ sysfs ภายใต้ /sys/bus ได้เข้ามาแทนที่แล้วเนื่องจากให้ข้อมูลที่มากกว่ามาก
- /proc/fbรายการของเฟรมบัฟเฟอร์ที่มีอยู่
- /proc/cmdlineซึ่งระบุตัวเลือกการบูตที่ส่งไปยังเคอร์เนล
- /proc/cpuinfoมีข้อมูลเกี่ยวกับซีพียูเช่น ผู้ผลิต (และตระกูล รุ่น และชื่อรุ่นของซีพียู ซึ่งจะช่วยให้ผู้ใช้ระบุซีพียูได้) ความเร็ว ( ความเร็วสัญญาณนาฬิกา ของซีพียู ) ขนาดแคช จำนวนซีพียูพี่น้อง คอร์ และแฟล็กของซีพียูรูปแบบและข้อมูลที่มีให้จะแตกต่างกันไปตามสถาปัตยกรรม ในบางสถาปัตยกรรม/proc/cpuinfoจะมีค่า " bogomips " ซึ่งมักเข้าใจผิดว่าเป็นตัววัดความเร็วของซีพียู เหมือนกับการทดสอบประสิทธิภาพ แต่จริงๆ แล้วมันไม่ได้วัดค่าใดๆ ที่มีความหมาย (สำหรับผู้ใช้ทั่วไป) เลย มันเกิดขึ้นเป็นผลข้างเคียงของการปรับเทียบตัวจับเวลาของเคอร์เนล และให้ค่าที่แตกต่างกันอย่างมากขึ้นอยู่กับประเภทของซีพียู แม้ว่าความเร็วสัญญาณนาฬิกาจะเท่ากันก็ตาม
$ cat /proc/cpuinfo processor : 0 vendor_id : AuthenticAMD cpu family : 16 model : 6 model name : AMD Athlon II X2 270 Processor stepping : 3 microcode : 0x10000c8 cpu MHz : 2000.000 cache size : 1024 KB ... processor : 1 vendor_id : AuthenticAMD cpu family : 16 model : 6 model name : AMD Athlon II X2 270 Processor stepping : 3 microcode : 0x10000c8 cpu MHz : 800.000 cache size : 1024 KB ...บนซีพียูแบบมัลติคอร์ /proc/cpuinfo จะมีฟิลด์สำหรับ "siblings" และ "cpu cores" ซึ่งแสดงถึงการคำนวณต่อไปนี้ที่ใช้: [ 7 ]
"พี่น้อง" = (HT ต่อแพ็คเกจ CPU) * (จำนวนคอร์ต่อแพ็คเกจ CPU) "จำนวนคอร์ CPU" = (จำนวนคอร์ต่อแพ็คเกจ CPU)
แพ็คเกจ CPU หมายถึง CPU ทางกายภาพที่สามารถมีหลายคอร์ ( คอร์เดียวสำหรับหนึ่งคอร์, สองคอร์สำหรับสองคอร์, สี่คอร์สำหรับสี่คอร์) ซึ่งทำให้สามารถแยกความแตกต่างระหว่างไฮเปอร์เธรดดิ้งและคอร์คู่ได้ กล่าวคือ จำนวนไฮเปอร์เธรดต่อแพ็คเกจ CPU สามารถคำนวณได้จาก ค่า siblings / CPU coresหากค่าทั้งสองสำหรับแพ็คเกจ CPU เหมือนกัน แสดงว่าไม่รองรับไฮเปอร์เธรดดิ้ง[ 8 ]ตัวอย่างเช่น แพ็คเกจ CPU ที่มี siblings=2 และ "cpu cores"=2 คือ CPU แบบคอร์คู่ แต่ไม่รองรับไฮเปอร์เธรดดิ้ง
- /proc/cryptoคือรายการโมดูลการเข้ารหัสที่มีอยู่
- /proc/devicesคือรายการของอุปกรณ์อักขระและบล็อกที่เรียงลำดับตามรหัสอุปกรณ์ แต่จะแสดงส่วนสำคัญของ ชื่อ /devด้วย
- คำสั่ง `/proc/diskstats`จะแสดงข้อมูลบางอย่าง (รวมถึงหมายเลขอุปกรณ์) สำหรับอุปกรณ์ดิสก์เชิงตรรกะแต่ละตัว
- /proc/filesystemsคือรายการของระบบไฟล์ที่เคอร์เนลรองรับ ณ เวลาที่แสดงรายการนี้
- ไดเร็กทอรี/proc/interrupts , /proc/iomem , /proc/ioports และ /proc/irqให้รายละเอียดเกี่ยวกับอุปกรณ์ (ทั้งทางกายภาพและเชิงตรรกะ) ที่ใช้ทรัพยากรระบบ ต่างๆ
- /proc/kmsgซึ่งเก็บข้อความที่ส่งออกโดยเคอร์เนล[ 9 ]
- /proc/loadavgซึ่งประกอบด้วยสถิติเกี่ยวกับ ค่าเฉลี่ย โหลด ปัจจุบัน ในช่วงไม่กี่นาทีที่ผ่านมา
- /proc/meminfoซึ่งมีข้อมูลสรุปเกี่ยวกับการจัดการหน่วยความจำของเคอร์เนล
- /proc/modulesเป็นไฟล์ที่สำคัญที่สุดไฟล์หนึ่งใน/procซึ่งประกอบด้วยรายการโมดูลเคอร์เนลที่โหลดอยู่ในปัจจุบัน ไฟล์นี้ให้ข้อมูลบางส่วน (ซึ่งไม่ถูกต้องทั้งหมดเสมอไป) เกี่ยวกับความสัมพันธ์ระหว่างโมดูลต่างๆ
- /proc/mountsคือลิงก์สัญลักษณ์ไปยัง self/mounts ซึ่งประกอบด้วยรายการอุปกรณ์ที่เชื่อมต่ออยู่ในปัจจุบันและจุดเชื่อมต่อ (รวมถึงระบบไฟล์ที่ใช้งานอยู่และตัวเลือกการเชื่อมต่อที่ใช้)
- /proc/net/คือไดเร็กทอรีที่มีข้อมูลที่เป็นประโยชน์เกี่ยวกับสแต็กเครือข่าย โดยเฉพาะอย่างยิ่ง/proc/net/nf_conntrackซึ่งแสดงรายการการเชื่อมต่อเครือข่ายที่มีอยู่ (มีประโยชน์อย่างยิ่งสำหรับการติดตามการกำหนดเส้นทางเมื่อใช้iptables FORWARD เพื่อเปลี่ยนเส้นทางการเชื่อมต่อเครือข่าย)
- /proc/partitionsคือรายการหมายเลขอุปกรณ์ ขนาด และ ชื่อ /devที่เคอร์เนลระบุว่าเป็นพาร์ติชัน ที่มีอยู่
- /proc/scsiซึ่งให้ข้อมูลเกี่ยวกับอุปกรณ์ใดๆ ที่เชื่อมต่อผ่านคอนโทรลเลอร์SCSIหรือRAID
- ลิงก์เชิงสัญลักษณ์ไปยังกระบวนการปัจจุบัน (ที่กำลังสำรวจ) ที่/proc/self (เช่น/proc/PID/โดยที่PIDคือหมายเลขของกระบวนการปัจจุบัน)
- /proc/slabinfoแสดงสถิติเกี่ยวกับแคชของอ็อบเจ็กต์ที่ใช้งานบ่อยในเคอร์เนล Linux
- /proc/swapsคือรายการของพาร์ติชัน swap ที่ใช้งานอยู่ ขนาด และลำดับความสำคัญต่างๆ ของแต่ละพาร์ติชัน
- สามารถเข้าถึงตัวเลือกเคอร์เนลที่กำหนดค่าได้แบบไดนามิกได้ที่/proc/sysภายใต้/proc/sysจะมีไดเร็กทอรีที่แสดงถึงพื้นที่ของเคอร์เนล ซึ่งประกอบด้วยไฟล์เสมือน ที่สามารถอ่านและ เขียน ได้ ตัวอย่างเช่น ไฟล์เสมือนที่อ้างอิงบ่อยคือ /proc/sys/net/ipv4/ip_forwardเนื่องจากจำเป็นสำหรับการกำหนดเส้นทางไฟร์วอลล์หรืออุโมงค์ ไฟล์นี้จะมีค่าเป็น '1' หรือ '0': ถ้าเป็น 1 สแต็ก IPv4 จะส่งต่อแพ็กเก็ตที่ไม่ได้มีไว้สำหรับโฮสต์ภายในเครื่อง ถ้าเป็น 0 จะไม่ส่งต่อ
- /proc/sysvipcซึ่งมีข้อมูลเกี่ยวกับการแบ่งปันหน่วยความจำและการสื่อสารระหว่างกระบวนการ (IPC)
- /proc/ttyซึ่งมีข้อมูลเกี่ยวกับเทอร์มินัล / proc/tty/driverมีรายการไดรเวอร์ TTY และการใช้งาน[ 10 ]
- /proc/uptimeคือระยะเวลาที่เคอร์เนลทำงานนับตั้งแต่บูตเครื่อง และระยะเวลาที่อยู่ในโหมดไม่ได้ใช้งาน (ทั้งสองหน่วยเป็นวินาที)
- /proc/versionซึ่งประกอบด้วยเวอร์ชันของเคอร์เนล Linux หมายเลขการแจกจ่าย หมายเลขเวอร์ชันของ gcc (ที่ใช้ในการสร้างเคอร์เนล) และข้อมูลสำคัญอื่นๆ ที่เกี่ยวข้องกับเวอร์ชันของเคอร์เนลที่กำลังทำงานอยู่
- ไฟล์อื่นๆ ขึ้นอยู่กับฮาร์ดแวร์ การกำหนดค่าโมดูล และการเปลี่ยนแปลงในเคอร์เนลที่แตกต่างกันไป
ยูทิลิตี้พื้นฐานที่ใช้ /proc ภายใต้ Linux นั้นมีอยู่ในแพ็ก เกจ procps ( /proc processes) และจะทำงานได้ก็ต่อเมื่อมีการเมานต์/proc เท่านั้น
ไซกวิน
Cygwinได้นำระบบไฟล์ procfs มาใช้ ซึ่งโดยพื้นฐานแล้วเหมือนกับระบบไฟล์ procfs ของ Linux
แหล่งที่มา
- คู่มือ Unix รุ่นที่ 8 proc(2) หน้า - คำอธิบายของ procfs ดั้งเดิม
- หน้าคู่มือการใช้งาน ProCFS ของ Plan 9 - Plan 9 ได้ขยายแนวคิดของ ProCFS อย่างมาก โดยนำเสนออินเทอร์เฟซที่ครอบคลุมมากขึ้นสำหรับการควบคุมและจัดการกระบวนการต่างๆ
- หน้าคู่มือ Linux Proc(5)เอกสารคู่มือ Linux สำหรับ procfs
- Documentation/filesystems/proc.txtเอกสารประกอบเคอร์เนล Linux สำหรับ procfs
ลิงก์ภายนอก
- ประวัติโดยย่อของ /procบล็อกของ Eric Schrock
- การเข้าถึงเคอร์เนล Linux โดยใช้ Procfsบทความจาก IBM developerWorks โดย M. Tim Jones
- ลำดับชั้นของระบบไฟล์ Linuxโครงการเอกสารประกอบ Linux
- ค้นพบความเป็นไปได้ของไดเร็กทอรี /procโดย เฟเดริโก เคเรกิ
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ โปรซีเอฟ
ระบบ ไฟล์ proc ( procfs ) เป็นระบบไฟล์พิเศษใน ระบบปฏิบัติการ แบบ Unix ที่แสดงข้อมูลเกี่ยวกับ กระบวนการ และข้อมูลระบบอื่นๆ ในโครงสร้างแบบไฟล์ที่มีลำดับชั้น...
UNIX รุ่นที่ 8
Tom J. Killian ได้นำ เวอร์ชัน /proc ของ UNIX รุ่นที่ 8 (V8) มาใช้ โดยเขาได้นำเสนอเอกสารเรื่อง"Processes as Files"ที่ USENIX ในเดือนมิถุนายน พ.ศ.
เอสวีอาร์3
ระบบปฏิบัติการ AT&T System V Release 3 (SVR3) รุ่นดั้งเดิม (ซึ่งมีให้ใช้งานภายใน AT&T ในปี 1986 และใช้งานทั่วไปในปี 1987) ไม่ได้มาพร้อมกับ ระบบไฟล์ /proc แต่เวอร์ชันที่พัฒนาขึ้นในภายหลังได้เพิ่มระบบไฟล์นี้เข้ามา โดยมีเฉพาะไฟล์ที่แสดงถึงกระบวนการทำงานเท่านั้น...
เอสวีอาร์4
Roger Faulkner และ Ron Gomes ได้พอร์ต V8 /proc ไปยัง SVR4 และตีพิมพ์บทความชื่อ"The Process File System and Process Model in UNIX System V"ในงาน USENIX เมื่อเดือนมกราคม 1991 ระบบไฟล์ procfs ประเภทนี้รองรับการสร้าง ps แต่ไฟล์สามารถเข้าถึงได้ด้วยฟังก์ชัน read()...