एक पाइप से पढ़ें, एक फ़ाइल पर लिखें
यदि आप चाहते हैं कि डेमॉन कुछ मनमानी प्रक्रिया द्वारा निर्मित इनपुट को पढ़ें, तो आपको उस प्रक्रिया को एक पाइप से कनेक्ट करना होगा। यहां मनमानी प्रक्रिया आप कमांडों को गूंज रहे हैं, और यह एक अलग संदर्भ में चलने वाला है। इसलिए एक नामित पाइप बनाएं (जिसे अक्सर यूनिक्स संदर्भों में फीफो कहा जाता है)।
mkfifo /var/run/daemon.fifo
</var/run/daemon.fifo /path/to/daemond --option >daemon.log
और बस पाइप पर कमांड लिखें:
echo 'FORWARD 10' >/var/run/daemon.fifo
echo 'LEFT 72' >/var/run/daemon.fifo
हालांकि यह काम करने की संभावना नहीं है, हालांकि: एक अच्छा मौका है कि डेमन बाहर निकल जाएगा जब वह अपने मानक इनपुट पर फ़ाइल का अंत देखता है, जो कि पाइप को लिखने वाली पहली प्रक्रिया जैसे ही होता है। आप tail -f
उस समस्या से बचने के लिए उपयोग कर सकते हैं ।
</var/run/daemon.fifo tail -c +1 -f | {
echo $$ >/var/run/daemon.pid
exec /path/to/daemond --option >daemon.log
}
कुछ tail
कार्यान्वयन के साथ , आपको बफरिंग द्वारा काट लिया जा सकता है: tail
प्रक्रिया तब तक प्रतीक्षा करेगी जब तक कि यह कुछ आउटपुट उत्सर्जित करने के लिए पर्याप्त बाइट्स नहीं जमा कर ले। मुझे नहीं लगता कि यह POSIX टूलबॉक्स में हल करने योग्य है; यदि यह समस्या है, तो एक तुच्छ C या पर्ल या पायथन प्रोग्राम का उपयोग करें। जहां तक मैं tail
जीएनयू कोर्यूटिल्स से कह सकता हूं (जैसा कि लिनक्स और अन्य जगहों पर पाया जाता है) इस सम्मान पर सुरक्षित है।
जब आप डेमन को रोकते हैं, echo >/var/run/daemon.fifo
तो tail
प्रक्रिया को मार देगा ।
स्क्रीन के अंदर कार्यक्रम शुरू करना
अपने सेवा प्रबंधक से सीधे डेमन को आमंत्रित करने के बजाय (क्या आप वास्तव में सिर्फ SysV init का उपयोग कर रहे हैं, या कुछ अतिरिक्त जैसे रैपर स्क्रिप्ट या अपस्टार्ट?), आह्वान करते हैं।
screen -c daemon.screenrc -L -d -m -S daemon_name /path/to/daemond --option
चूंकि डेमन सेवा प्रबंधक की बाल प्रक्रिया नहीं होगी, इसलिए आपको सही प्रक्रिया के लिए एक संकेत भेजने के लिए सुनिश्चित करना होगा। यह कैसे करना है कि वास्तव में डेमन कैसे शुरू होता है और किस पर निर्भर करता है।
यह तकनीकी रूप से संभव एक टर्मिनल के लिए किसी चल प्रक्रिया संलग्न करने के लिए है, लेकिन वहाँ एक जोखिम आप इस कार्यक्रम दुर्घटना होगी, तो यह एक उत्पादन प्रणाली के लिए बाहर निश्चित रूप से है।
-L
विकल्प स्क्रीन लिखने सब कुछ है कि एक फाइल करने के लिए अपने विंडो में दिखाई देता बनाता है। निर्देश के daemon.screenrc
साथ फ़ाइल का नाम दिया गया है logfile
।