Unix server software maken doorgaans gebruik van een pidfile om hun PID op te slaan, zodat scripts later de server kunnen afsluiten door die PID een signal te sturen. Zo'n beetje alle Unix servers doen dit, en veel Unix tools bieden ondersteuning voor pidfiles. Bijvoorbeeld GOD, een tool voor Ruby om server software te beheren (de admin kan de pidfile specificeren, en specificeren wat er moet gebeuren als een server plotseling dood gaat).
Maar is dat niet ontzettend onhandig? Als de server opeens dood gaat, bijvoorbeeld door stroomstoring of een segmentation fault, dan krijg je een stale pidfile. Bij veel server software, zoals Mongrel, moet je die pidfile handmatig verwijderen, anders start hij niet eens op. Dit lijkt me niet echt ideaal.
Wat ik in mijn server software doe is gebruik maken van zowel een pidfile als een lockfile. Met de lockfile controleer ik of de server wel daadwerkelijk draait (dus of de pidfile eigenlijk wel geldig is). Dit verwijst wat werk maar is robuuster. Aan de andere kant, lock files werken niet op o.a. NFS shares.
Dus waarom gebruiken Unix servers nog primitieve pid files? Is er wel een beter alternatief die overal werkt? Wat ik eigenlijk zoek is een tijdelijke resource waarin de PID staat, en die gebonden is aan een proces en benaderd kan worden via een naam - als de proces dood gaat dan zal de kernel ervoor zorgen dat de resource gegarandeerd vrijgegeven wordt. Bestaat wel zoiets?
Maar is dat niet ontzettend onhandig? Als de server opeens dood gaat, bijvoorbeeld door stroomstoring of een segmentation fault, dan krijg je een stale pidfile. Bij veel server software, zoals Mongrel, moet je die pidfile handmatig verwijderen, anders start hij niet eens op. Dit lijkt me niet echt ideaal.
Wat ik in mijn server software doe is gebruik maken van zowel een pidfile als een lockfile. Met de lockfile controleer ik of de server wel daadwerkelijk draait (dus of de pidfile eigenlijk wel geldig is). Dit verwijst wat werk maar is robuuster. Aan de andere kant, lock files werken niet op o.a. NFS shares.
Dus waarom gebruiken Unix servers nog primitieve pid files? Is er wel een beter alternatief die overal werkt? Wat ik eigenlijk zoek is een tijdelijke resource waarin de PID staat, en die gebonden is aan een proces en benaderd kan worden via een naam - als de proces dood gaat dan zal de kernel ervoor zorgen dat de resource gegarandeerd vrijgegeven wordt. Bestaat wel zoiets?