ฉันมักจะเห็นว่าโปรแกรมระบุไฟล์ pid และล็อค และฉันไม่แน่ใจว่าพวกเขาทำอะไร
ตัวอย่างเช่นเมื่อรวบรวม nginx:
--pid-path=/var/run/nginx.pid \
--lock-path=/var/lock/nginx.lock \
ใครบางคนสามารถส่องแสงบางอย่างในนี้ได้หรือไม่?
ฉันมักจะเห็นว่าโปรแกรมระบุไฟล์ pid และล็อค และฉันไม่แน่ใจว่าพวกเขาทำอะไร
ตัวอย่างเช่นเมื่อรวบรวม nginx:
--pid-path=/var/run/nginx.pid \
--lock-path=/var/lock/nginx.lock \
ใครบางคนสามารถส่องแสงบางอย่างในนี้ได้หรือไม่?
คำตอบ:
ไฟล์ pid ถูกเขียนโดยบางโปรแกรมเพื่อบันทึก ID กระบวนการขณะที่กำลังเริ่ม สิ่งนี้มีวัตถุประสงค์หลายประการ:
kill
คำสั่งธรรมดาหากต้องการจบมันการมีไฟล์ pid เพียงอย่างเดียวไม่รับประกันว่า id กระบวนการเฉพาะนั้นกำลังทำงานอยู่ดังนั้นวิธีนี้จึงไม่สามารถป้องกันได้ 100% แต่ "ดีพอ" ในหลายกรณี การตรวจสอบว่ามี PID ที่เฉพาะเจาะจงอยู่ในตารางกระบวนการหรือไม่นั้นไม่สามารถพกพาข้ามระบบปฏิบัติการแบบ UNIX ได้อย่างสมบูรณ์เว้นแต่คุณต้องการพึ่งพาps
ยูทิลิตี้ซึ่งอาจไม่เหมาะที่จะโทรหาในทุกกรณี (และฉันเชื่อว่าระบบปฏิบัติการ UNIX ดำเนินการps
แตกต่างกันอยู่แล้ว)
โปรแกรมล็อคไฟล์ถูกใช้โดยโปรแกรมเพื่อให้แน่ใจว่าอินสแตนซ์ที่แยกออกจากกันสองโปรแกรม (ซึ่งมีพฤติกรรมดี) ซึ่งอาจทำงานพร้อมกันในระบบเดียวไม่สามารถเข้าถึงสิ่งอื่นในเวลาเดียวกัน แนวคิดคือก่อนที่โปรแกรมจะเข้าถึงทรัพยากรของมันมันจะตรวจสอบว่ามีไฟล์ล็อคอยู่หรือไม่และหากมีไฟล์ล็อกอยู่อาจเกิดข้อผิดพลาดหรือรอให้มันหายไป เมื่อไม่มีโปรแกรมที่ต้องการ "รับ" ทรัพยากรจะสร้างไฟล์จากนั้นอินสแตนซ์อื่น ๆ ที่อาจเจอในภายหลังจะรอให้กระบวนการนี้ดำเนินการเสร็จ แน่นอนว่าสิ่งนี้ถือว่าโปรแกรม "กำลังรับ" การล็อกจริง ๆ แล้วปล่อยมันและอย่าลืมลบไฟล์ล็อค
สิ่งนี้ใช้งานได้เนื่องจากระบบไฟล์ภายใต้ระบบปฏิบัติการ UNIX ที่เหมือนกันบังคับใช้การทำให้เป็นอนุกรมซึ่งหมายถึงการเปลี่ยนแปลงเพียงครั้งเดียวกับระบบไฟล์ที่เกิดขึ้นจริงในเวลาใดก็ตาม เรียงลำดับเช่นล็อคกับฐานข้อมูลและเช่น
ไฟล์เหล่านี้มักใช้โดย daemons ที่ควรรันเพียงครั้งเดียวในระบบ ไฟล์ PID มักจะมีหมายเลข ID กระบวนการของโปรแกรมที่เปิดตัวและเรียกใช้แล้วหากมีอยู่ นอกจากนี้เมื่อมันเริ่มขึ้นมันจะสร้างไฟล์ล็อค ตราบใดที่มีไฟล์ล็อคอยู่ไฟล์นั้นจะไม่เริ่มใหม่หากไม่มีการแทรกแซงจากผู้ใช้ หากไฟล์ล็อกมีอยู่และรหัสกระบวนการที่กล่าวถึงในไฟล์ pid ไม่ทำงาน daemon จะถือว่าอยู่ในสถานะ "ตาย" หมายความว่าควรจะทำงาน แต่อาจไม่ได้เกิดจากความผิดพลาดหรือการปิดระบบที่ไม่เหมาะสม . สิ่งนี้อาจเริ่มต้นสถานการณ์การเริ่มต้น / รีสตาร์ทพิเศษสำหรับบางโปรแกรม การปิดอย่างถูกต้องจะเป็นการลบไฟล์ล็อค
ไฟล์ PID จะมี ID กระบวนการของกระบวนการที่กำลังทำงานอยู่ สิ่งนี้มีประโยชน์หลายอย่าง คุณสามารถอ่านและตรวจสอบว่ากระบวนการยังทำงานอยู่และดำเนินการตามความเหมาะสมหรืออ่านและฆ่ากระบวนการ
ไฟล์ล็อคเป็นแอพพลิเคชั่นที่เป็นไปได้มากที่สุด ไฟล์ล็อคถูกใช้เพื่อระบุว่ามีการใช้งานทรัพยากรบางอย่างและกระบวนการที่ต้องการเข้าถึงควรรอจนกว่าทรัพยากรจะได้รับการปลดปล่อยก่อนดำเนินการต่อ
.lck
ไฟล์ในไดเรกทอรีของ VM มิฉะนั้นจะแจ้งให้คุณทราบว่ามีการใช้งานอยู่เมื่อคุณพยายามเริ่มต้น