Erlang 21 - 1. Embedded Solaris

1 एंबेडेड सोलारिस




erlang

1 एंबेडेड सोलारिस

यह खंड ओटीपी के ऑपरेटिंग सिस्टम-विशिष्ट भागों का वर्णन करता है जो सोलारिस से संबंधित हैं।

1.1 मेमोरी उपयोग

सोलारिस 64 एमबी कुल रैम के साथ सिस्टम पर लगभग 17 एमबी रैम लेता है। यह अनुप्रयोगों के लिए लगभग 47 एमबी छोड़ देता है। यदि सिस्टम स्वैपिंग का उपयोग करता है, तो इन आंकड़ों में सुधार नहीं किया जा सकता है क्योंकि अनावश्यक डेमॉन प्रक्रियाओं को स्वैप किया जाता है। हालाँकि, यदि स्वैपिंग अक्षम है, या यदि स्वैप स्थान सिस्टम में सीमित संसाधन का है, तो अनावश्यक डेमॉन प्रक्रियाओं को मारना आवश्यक हो जाता है।

1.2 डिस्क स्थान का उपयोग

कोर उपयोगकर्ता समर्थन स्थापना का उपयोग करके सोलारिस द्वारा आवश्यक डिस्क स्थान को कम से कम किया जा सकता है। इसके लिए लगभग 80 एमबी डिस्क स्थान की आवश्यकता होती है। यह सोलारिस को बूट करने और चलाने के लिए आवश्यक न्यूनतम सॉफ्टवेयर स्थापित करता है। अनावश्यक व्यक्तिगत फ़ाइलों को हटाकर डिस्क स्थान को और कम किया जा सकता है। हालांकि, जब तक कि डिस्क स्थान एक महत्वपूर्ण संसाधन है, जिसके लिए आवश्यक प्रयास और इसमें शामिल जोखिमों को उचित नहीं ठहराया जा सकता है।

1.3 एंबेडेड सिस्टम इंस्टॉल करना

यह खंड एक एम्बेडेड सिस्टम स्थापित करने के बारे में है। निम्नलिखित विषयों पर विचार किया जाता है:

  • उपयोगकर्ता और स्थापना निर्देशिका बनाना
  • एक एम्बेडेड सिस्टम स्थापित करना
  • बूट पर स्वत: प्रारंभ कॉन्फ़िगर करना
  • एक हार्डवेयर प्रहरी उपलब्ध कराना
  • रिबूट की अनुमति बदलना
  • TERM पर्यावरण चर सेट करना
  • पैच जोड़ना
  • अनुप्रयोग os_mon में मॉड्यूल os_sup स्थापित करना

इस खंड की कई प्रक्रियाओं में सोलारिस ऑपरेटिंग सिस्टम के विशेषज्ञ ज्ञान की आवश्यकता होती है। उनमें से अधिकांश के लिए सुपर उपयोगकर्ता विशेषाधिकार की आवश्यकता है।

उपयोगकर्ता और स्थापना निर्देशिका बनाना

यह अनुशंसा की जाती है कि एम्बेडेड वातावरण एक साधारण उपयोगकर्ता द्वारा चलाया जाता है, अर्थात, एक उपयोगकर्ता जिसके पास सुपर उपयोगकर्ता विशेषाधिकार नहीं हैं।

इस खंड में, यह माना जाता है कि उपयोगकर्ता नाम otpuser और उस उपयोगकर्ता की होम निर्देशिका है:

/export/home/otpuser

यह भी माना जाता है कि otpuser की होम डायरेक्टरी में otpuser नाम की एक डायरेक्टरी है, जिसका पूरा रास्ता है:

/export/home/otpuser/otp

यह निर्देशिका एम्बेडेड वातावरण की स्थापना निर्देशिका है।

एंबेडेड सिस्टम स्थापित करना

एक एम्बेडेड सिस्टम को स्थापित करने की प्रक्रिया साधारण सिस्टम के लिए समान है (स्थापना गाइड देखें), सिवाय निम्नलिखित के:

  • उपर्युक्त परिभाषित अधिष्ठापन निर्देशिका में (संपीड़ित) टेप संग्रह फ़ाइल निकाली जानी है।
  • स्टार्ट स्क्रिप्ट को किसी स्टैंडर्ड डायरेक्टरी जैसे /usr/local/bin से लिंक करने की जरूरत नहीं है।

बूट पर स्वत: प्रारंभ कॉन्फ़िगर करना

सिस्टम बूट होने पर एक सही एम्बेडेड सिस्टम शुरू होना चाहिए। यह खंड उस प्राप्त करने के लिए आवश्यक आवश्यक कॉन्फ़िगरेशन के लिए खाता है।

एम्बेडेड सिस्टम और सभी एप्लिकेशन स्वचालित रूप से शुरू होते हैं यदि नीचे दी गई स्क्रिप्ट फ़ाइल निर्देशिका /etc/rc3.d में जोड़ी /etc/rc3.d । फ़ाइल को root स्वामित्व और पठनीय होना चाहिए। इसका नाम मनमाने ढंग से नहीं सौंपा जा सकता है; निम्नलिखित नाम की सिफारिश की गई है:

S75otp.system

इनिशियलाइज़ेशन (और समाप्ति) स्क्रिप्ट्स के अधिक विवरण और उसके नामकरण के लिए, सोलारिस प्रलेखन देखें।

#!/bin/sh
#  
#  File name:  S75otp.system
#  Purpose:    Automatically starts Erlang and applications when the 
#              system starts
#  Author:     [email protected]
#  Resides in: /etc/rc3.d
#

if [ ! -d /usr/bin ]
then                    # /usr not mounted
        exit
fi

killproc() {            # kill the named process(es)
        pid=`/usr/bin/ps -e |
             /usr/bin/grep -w $1 |
             /usr/bin/sed -e 's/^  *//' -e 's/ .*//'`
        [ "$pid" != "" ] && kill $pid
}

# Start/stop processes required for Erlang

case "$1" in
'start')
        # Start the Erlang emulator
        #
        su - otpuser -c "/export/home/otpuser/otp/bin/start" &
        ;;
'stop')
        killproc beam
        ;;
*)
        echo "Usage: $0 { start | stop }"
        ;;
esac

फ़ाइल /export/home/otpuser/otp/bin/start उपरोक्त स्क्रिप्ट में शुरू start ठीक Erlang में वर्णित start स्क्रिप्ट है। स्क्रिप्ट चर OTP_ROOT उस start स्क्रिप्ट में इस अनुभाग में उपयोग किए गए निम्न उदाहरण पथ से मेल खाती है:

/export/home/otpuser/otp

start स्क्रिप्ट को उसी के अनुसार संपादित किया जाना है।

उपरोक्त स्क्रिप्ट में killproc प्रक्रिया का उपयोग erl_call के लिए कॉल के साथ जोड़ा जा सकता है, उदाहरण के लिए:

$SOME_PATH/erl_call -n Node init stop

erl_call(1) शान से नीचे ले जाने के लिए, erl_call(1) मैनुअल पेज erl_interface पर erl_call के उपयोग के विवरण के लिए देखें। हालाँकि, इसके लिए आवश्यक है कि एर्लांग एक वितरित नोड के रूप में चले, जो हमेशा ऐसा नहीं होता है।

killproc प्रक्रिया को हटाया नहीं जाना है। उद्देश्य यहां रन स्तर 3 (नेटवर्किंग संसाधनों के साथ बहु-उपयोगकर्ता मोड) से स्तर 2 (ऐसे संसाधनों के बिना बहु-उपयोगकर्ता मोड) को चलाने के लिए है, जिसमें एर्लैंग को चलाना नहीं है।

हार्डवेयर वॉचडॉग उपलब्ध कराना

फोर्स कंप्यूटर से VME बोर्डों पर चलने वाले सोलारिस के लिए, ऑनबोर्ड हार्डवेयर वॉचडॉग को सक्रिय किया जा सकता है, बशर्ते कि एक VME बस चालक ऑपरेटिंग सिस्टम में जोड़ा जाता है (स्थापना समस्याएं भी देखें)।

कर्नेल में heart(3) मैनुअल पेज भी देखें।

रिबूट के लिए अनुमतियाँ बदलना

यदि HEART_COMMAND पर्यावरण चर को Erlang शुरू start की start स्क्रिप्ट में सेट किया जाना है, और यदि मान को Solaris reboot कमांड के पथ पर सेट किया जाना है, तो यह है:

HEART_COMMAND=/usr/sbin/reboot

उसके बाद स्वामित्व /usr/sbin/reboot फ़ाइल अनुमतियाँ /usr/sbin/reboot को निम्नानुसार बदलना चाहिए:

chown 0 /usr/sbin/reboot
chmod 4755 /usr/sbin/reboot

कर्नेल में heart(3) मैनुअल पेज भी देखें।

टर्मिनल पर्यावरण चर सेट करना

जब Erlang रनटाइम सिस्टम स्वचालित रूप से S75otp.system स्क्रिप्ट से शुरू होता है, तो TERM वातावरण चर सेट किया जाना चाहिए। निम्नलिखित एक न्यूनतम सेटिंग है:

TERM=sun

इसे start स्क्रिप्ट में जोड़ा जाना है।

पैच जोड़ना

सोलारिस 2.5.1 पर डिस्क में फाइल सिस्टम डेटा को फ्लशिंग करने के समुचित कार्य के लिए, ऑपरेटिंग सिस्टम में 103640-02 नंबर वाले संस्करण-विशिष्ट पैच को जोड़ना होगा। अन्य पैच की आवश्यकता हो सकती है, रिलीज़ README फ़ाइल <ERL_INSTALL_DIR>/README

अनुप्रयोग os_mon में मॉड्यूल os_sup स्थापित करना

निम्नलिखित चार स्थापना प्रक्रियाओं में सुपर उपयोगकर्ता विशेषाधिकार की आवश्यकता होती है:

स्थापना
  • syslogd लिए Solaris मानक कॉन्फ़िगरेशन फ़ाइल की एक प्रतिलिपि बनाएँ:
    • syslogd लिए Solaris मानक कॉन्फ़िगरेशन फ़ाइल की एक प्रतिलिपि बनाएँ। इस फ़ाइल को आमतौर पर syslog.conf नाम दिया syslog.conf और निर्देशिका /etc में पाया जाता है।
    • कॉपी का फ़ाइल नाम syslog.conf.ORIG होना चाहिए। निर्देशिका स्थान वैकल्पिक है; आमतौर पर यह /etc । ऐसा करने का एक सरल तरीका निम्नलिखित कमांड जारी करना है:
      cp /etc/syslog.conf /etc/syslog.conf.ORIG
  • syslogd लिए एक Erlang- विशिष्ट कॉन्फ़िगरेशन फ़ाइल बनाएं:
    • पहले की गई बैकअप कॉपी की एक संपादित प्रतिलिपि बनाएँ।
    • फ़ाइल नाम syslog.conf.OTP होना चाहिए। पथ बैकअप प्रति के समान होना चाहिए।
    • कॉन्फ़िगरेशन फ़ाइल का प्रारूप syslog.conf(5) मैनुअल पेज में पाया जाता है, कमांड man syslog.conf जारी man syslog.conf
    • आमतौर पर एक लाइन जोड़ी जाती है जो राज्य के लिए है:
      • किस प्रकार की जानकारी की देखरेख Erlang द्वारा की जानी है
      • फ़ाइल का नाम (वास्तव में एक नामित पाइप) जो जानकारी प्राप्त करना है
    • यदि, उदाहरण के लिए, केवल UNIX कर्नेल से उत्पन्न होने वाली जानकारी की देखरेख की जानी है, तो लाइन को kern.LEVEL से शुरू करना है। LEVEL के संभावित मूल्यों के लिए, syslog.conf(5)
    • कम से कम एक टैब-कैरेक्टर के बाद, जोड़ी गई लाइन में नामांकित पाइप का पूरा नाम होता है, जहां syslogd अपनी जानकारी लिखता है। पथ syslog.conf.ORIG और syslog.conf.OTP फ़ाइलों के लिए समान होना चाहिए। फ़ाइल नाम syslog.otp होना चाहिए।
    • यदि फ़ाइलों के लिए निर्देशिका syslog.conf.ORIG और syslog.conf.OTP है /etc , syslog.conf.OTP में लाइन इस प्रकार है:
      kern.LEVEL                /etc/syslog.otp
  • कॉन्फ़िगरेशन फ़ाइलों की फ़ाइल विशेषाधिकारों की जाँच करें:
    • कॉन्फ़िगरेशन फ़ाइलें rw-r--r-- फ़ाइल विशेषाधिकार हैं और रूट के स्वामित्व में हैं।
    • ऐसा करने का एक सरल तरीका इन आदेशों को जारी करना है:
      chmod 644 /etc/syslog.conf
      chmod 644 /etc/syslog.conf.ORIG
      chmod 644 /etc/syslog.conf.OTP
    • ध्यान दें कि यदि फ़ाइलें syslog.conf.ORIG और syslog.conf.OTP निर्देशिका /etc में नहीं हैं, तो दूसरे और तीसरे आदेश में फ़ाइल पथ को संशोधित किया जाना चाहिए।
  • संशोधित करें फ़ाइल विशेषाधिकार और mod_syslog उपयोगिता का स्वामित्व:
    • फ़ाइल विशेषाधिकार और mod_syslog उपयोगिता के स्वामित्व को संशोधित किया जाना चाहिए।
    • द्विआधारी निष्पादन योग्य फ़ाइल का पूरा नाम फ़ाइल सिस्टम में एप्लिकेशन os_mon की स्थिति /priv/bin/mod_syslog जोड़कर /priv/bin/mod_syslog । द्विआधारी निष्पादन योग्य फ़ाइल का सामान्य पूरा नाम इस प्रकार है:

      <OTP_ROOT>/lib/os_mon-<REV>/priv/bin/mod_syslog

      उदाहरण: यदि otp-root का पथ /usr/otp , तो os_mon एप्लिकेशन का पथ /usr/otp/lib/os_mon-1.0 (संशोधन 1.0 मान रहा है) और बाइनरी निष्पादन योग्य फ़ाइल का पूरा नाम /usr/otp/lib/os_mon-1.0/priv/bin/mod_syslog

    • द्विआधारी निष्पादन योग्य फ़ाइल को मूल रूप से स्वामित्व में होना चाहिए, इसमें rwsr-xr-x फ़ाइल विशेषाधिकार हैं, विशेष रूप से उपयोगकर्ता का सेट बिट सेट होना चाहिए।
    • ऐसा करने का एक सरल तरीका निम्नलिखित आदेश जारी करना है:

      cd <OTP_ROOT>/lib/os_mon-<REV>/priv/bin/mod_syslog
      chmod 4755 mod_syslog
      chown root mod_syslog
एप्लिकेशन कॉन्फ़िगरेशन फ़ाइल का परीक्षण करना

निम्नलिखित प्रक्रिया को मूल विशेषाधिकार की आवश्यकता नहीं है:

  • सुनिश्चित करें कि os_mon अनुप्रयोग में os_sup मॉड्यूल के लिए कॉन्फ़िगरेशन पैरामीटर सही हैं।
  • एप्लिकेशन कॉन्फ़िगरेशन फ़ाइल ब्राउज़ करें (इसे संपादित करें)। एप्लिकेशन कॉन्फ़िगरेशन फ़ाइल का पूरा नाम /ebin/os_mon.app जोड़कर फ़ाइल सिस्टम में os_mon एप्लिकेशन की स्थिति से लिया गया है।

    फ़ाइल का सामान्य पूरा नाम इस प्रकार है:

    <OTP_ROOT>/lib/os_mon-<REV>/ebin/os_mon.app.

    उदाहरण: यदि otp-root का पथ /usr/otp , तो os_mon एप्लिकेशन का पथ /usr/otp/lib/os_mon-1.0 (संशोधन 1.0 मान रहा है) और बाइनरी निष्पादन योग्य फ़ाइल का पूरा नाम /usr/otp/lib/os_mon-1.0/ebin/os_mon.app

  • सुनिश्चित करें कि निम्न कॉन्फ़िगरेशन पैरामीटर में सही मान हैं:
पैरामीटर समारोह मानक मूल्य
start_os_sup निर्दिष्ट करता है कि os_sup प्रारंभ किया जाना है या नहीं। हार्डवेयर पर पहली बार के लिए true ; दूसरे उदाहरणों के लिए false
os_sup_own निर्देशिका (1) बैक-अप कॉपी और (2) एरलांग-विशिष्ट कॉन्फ़िगरेशन फ़ाइल के लिए syslogd "/etc"
os_sup_syslogconf syslogd लिए Solaris मानक विन्यास फाइल का पूरा नाम "/etc/syslog.conf"
error_tag एरलांग रनटाइम सिस्टम में त्रुटि लकड़हारे को भेजे गए संदेशों के लिए टैग std_error

तालिका 1.1: कॉन्फ़िगरेशन पैरामीटर

यदि os_mon.app में सूचीबद्ध मान आपकी आवश्यकताओं के अनुरूप नहीं हैं, तो उस फ़ाइल को संपादित करें। सिस्टम कॉन्फ़िगरेशन फ़ाइल में मानों को ओवरराइड करने के बजाय, पूर्ण पथनाम, जो कमांड लाइन पर erl को दिया गया है।

उदाहरण: एक एप्लिकेशन कॉन्फ़िगरेशन फ़ाइल की सामग्री:

[{os_mon, [{start_os_sup, true}, {os_sup_own, "/etc"}, 
{os_sup_syslogconf, "/etc/syslog.conf"}, {os_sup_errortag, std_error}]}].
संबंधित दस्तावेज

os_mon(3) एप्लिकेशन, कर्नेल में application(3) मैनुअल पेज और ERTS में erl(1) मैनुअल पेज देखें।

स्थापना समस्याएं

हार्डवेयर वॉचडॉग टाइमर, जिसे heart पोर्ट प्रोग्राम द्वारा नियंत्रित किया जाता है, के लिए पैकेज FORCEvme आवश्यकता होती है, जिसमें VME बस ड्राइवर होता है, जिसे इंस्टॉल किया जाना है। हालाँकि, यह ड्राइवर सन mcp ड्राइवर से mcp सकता है और सिस्टम को बूट करने से मना कर सकता है। इस समस्या को ठीक करने के लिए, निम्नलिखित पंक्तियों को /etc/system जोड़ा जाना चाहिए:

  • exclude: drv/mcp
  • exclude: drv/mcpzsa
  • exclude: drv/mcpp
चेतावनी

झड़प से बचने के लिए इन पंक्तियों को जोड़ने की सिफारिश की जाती है। टकराव सिस्टम को बूट करना असंभव बना सकता है।

१.४ एरलांग शुरू

यह खंड बताता है कि एक एम्बेडेड सिस्टम कैसे शुरू किया जाता है। चार कार्यक्रम शामिल हैं और वे आमतौर पर निर्देशिका में रहते हैं <ERL_INSTALL_DIR>/bin । एकमात्र अपवाद start कार्यक्रम है, जिसे कहीं भी स्थित किया जा सकता है, और यह एकमात्र कार्यक्रम भी है जिसे उपयोगकर्ता द्वारा संशोधित किया जाना चाहिए।

एक एम्बेडेड सिस्टम में, आमतौर पर कोई इंटरैक्टिव शेल नहीं होता है। हालाँकि, एक ऑपरेटर कमांड to_erl द्वारा Erlang सिस्टम को संलग्न कर सकता है। ऑपरेटर तब एरलैंग शेल से जुड़ा होता है और साधारण एर्लैंग कमांड दे सकता है। इस शेल के माध्यम से सिस्टम के साथ सभी इंटरैक्शन एक विशेष निर्देशिका में लॉग इन किया जाता है।

मूल रूप से, प्रक्रिया इस प्रकार है:

  • मशीन start प्रोग्राम को कहा जाता है।
  • यह run_erl कॉल करता है, जो चीजों को सेट करता है ताकि ऑपरेटर सिस्टम से जुड़ सके।
  • यह start_erl कॉल start_erl , जो सही boot और config फ़ाइलों के साथ erlexec (जो <ERL_INSTALL_DIR>/erts-EVsn/bin ) के सही संस्करण को कॉल करता है।

1.5 कार्यक्रम

शुरु

मशीन चालू होने पर इस प्रोग्राम को कहा जाता है। इसे एक विशेष प्रणाली के अनुरूप संशोधित या फिर से लिखा जा सकता है। डिफ़ॉल्ट रूप से, इसे <ERL_INSTALL_DIR>/bin में start और निवास कहा जाना चाहिए। एक और स्टार्ट प्रोग्राम का उपयोग किया जा सकता है, एप्लिकेशन start_prg में कॉन्फ़िगरेशन पैरामीटर start_prg का उपयोग करके।

प्रारंभ कार्यक्रम को नीचे दिखाए अनुसार run_erl को कॉल करना होगा। इसे एक वैकल्पिक पैरामीटर भी लेना होगा, जो <ERL_INSTALL_DIR>/releases/start_erl.data

यह प्रोग्राम स्थिर पैरामीटर और पर्यावरण चर जैसे कि -sname Name और HEART_COMMAND को मशीन को रिबूट करने के लिए HEART_COMMAND करना है।

<RELDIR> निर्देशिका वह है जहाँ नए रिलीज़ पैकेट स्थापित किए जाते हैं, और जहाँ रिलीज़ हैंडलर रिलीज़ के बारे में जानकारी रखता है। अधिक जानकारी के लिए, SASL में release_handler(3) मैनुअल पेज देखें।

निम्न स्क्रिप्ट प्रोग्राम के डिफ़ॉल्ट व्यवहार को दिखाता है:

#!/bin/sh
# Usage: start [DataFile]
#
ROOTDIR=/usr/local/otp

if [ -z "$RELDIR" ]
then
   RELDIR=$ROOTDIR/releases
fi

START_ERL_DATA=${1:-$RELDIR/start_erl.data}

$ROOTDIR/bin/run_erl /tmp/ $ROOTDIR/log "exec $ROOTDIR/bin/start_erl \ 
                     $ROOTDIR $RELDIR $START_ERL_DATA" > /dev/null 2>&1 &

निम्न स्क्रिप्ट एक संशोधन को दिखाता है जहां नोड को cp1 नाम दिया गया है, और जहां वातावरण HEART_COMMAND और TERM को पिछले स्क्रिप्ट में जोड़ा गया है:

#!/bin/sh
# Usage: start [DataFile]
#
HEART_COMMAND=/usr/sbin/reboot
TERM=sun
export HEART_COMMAND TERM

ROOTDIR=/usr/local/otp

if [ -z "$RELDIR" ]
then
   RELDIR=$ROOTDIR/releases
fi

START_ERL_DATA=${1:-$RELDIR/start_erl.data}

$ROOTDIR/bin/run_erl /tmp/ $ROOTDIR/log "exec $ROOTDIR/bin/start_erl \ 
      $ROOTDIR $RELDIR $START_ERL_DATA -heart -sname cp1" > /dev/null 2>&1 &

यदि कोई डिस्क रहित और / या केवल-पढ़ने वाला क्लाइंट नोड शुरू होने वाला है, तो फ़ाइल start_erl.data मास्टर नोड में क्लाइंट निर्देशिका में स्थित है। इस प्रकार, START_ERL_DATA पंक्ति इस तरह दिखती है:

CLIENTDIR=$ROOTDIR/clients/clientname
START_ERL_DATA=${1:-$CLIENTDIR/bin/start_erl.data}

run_erl

इस प्रोग्राम का उपयोग एमुलेटर को शुरू करने के लिए किया जाता है, लेकिन आप शेल से कनेक्ट नहीं होंगे। to_erl का उपयोग Erlang शेल से कनेक्ट करने के लिए किया जाता है।

Usage: run_erl pipe_dir/ log_dir "exec command [parameters ...]"

यहाँ:

  • pipe_dir/ is to /tmp/ ( to_erl डिफ़ॉल्ट रूप से इस नाम का उपयोग करता है)।
  • log_dir वह जगह है जहां लॉग फाइलें लिखी जाती हैं।
  • command [parameters] निष्पादित किया जाता है।
  • stdin और stdout को लिखी गई हर चीज log_dir में लॉग log_dir

log_dir में लॉग फाइलें लिखी log_dir । प्रत्येक लॉग फ़ाइल का नाम erlang.log.N , जहां N एक पीढ़ी संख्या होती है, जिसमें 1 से 5 तक होता है। प्रत्येक लॉग फ़ाइल 100 kB पाठ तक होती है। जैसे-जैसे समय बीतता है, लॉग फ़ाइल निर्देशिका में निम्न लॉग फाइलें पाई जाती हैं:

erlang.log.1
erlang.log.1, erlang.log.2
erlang.log.1, erlang.log.2, erlang.log.3
erlang.log.1, erlang.log.2, erlang.log.3, erlang.log.4
erlang.log.2, erlang.log.3, erlang.log.4, erlang.log.5
erlang.log.3, erlang.log.4, erlang.log.5, erlang.log.1
...

प्रत्येक पंक्ति में सबसे हाल की लॉग फ़ाइल सबसे सही है। यही है, सबसे हाल की फ़ाइल सबसे अधिक संख्या वाली एक है, या अगर पहले से ही चार फाइलें हैं, तो स्किप से पहले।

जब एक लॉग फ़ाइल खोली जाती है (एप्लाइड या बनाई गई) के लिए, फ़ाइल पर एक टाइम स्टैम्प लिखा जाता है। यदि 15 मिनट के लिए लॉग फ़ाइलों में कुछ भी नहीं लिखा गया है, तो एक रिकॉर्ड डाला जाता है जो कहता है कि हम अभी भी जीवित हैं।

to_erl

इस प्रोग्राम का उपयोग रनिंग एअरलैंग के साथ शुरू होने वाले रनिंग एर्लांग रनटाइम सिस्टम से run_erl

Usage: to_erl [pipe_name | pipe_dir]

यहाँ / pipe_name डिफॉल्ट करता है

Erlang सिस्टम से बाहर निकलने के बिना शेल से डिस्कनेक्ट करने के लिए, Ctrl-D टाइप करें।

start_erl

यह प्रोग्राम -boot एमुलेटर को पैरामीटर -boot और -config सेट से शुरू करता है। यह डेटा को पढ़ता है कि ये फ़ाइलें start_erl.data नामक फ़ाइल से कहाँ स्थित हैं, जो <RELDIR> में स्थित है। प्रत्येक नई रिलीज़ एक नई डेटा फ़ाइल पेश करती है। यह फ़ाइल Erlang में रिलीज़ हैंडलर द्वारा स्वचालित रूप से जेनरेट की जाती है।

निम्नलिखित स्क्रिप्ट कार्यक्रम के व्यवहार को दिखाता है:

#!/bin/sh
#
# This program is called by run_erl. It starts
# the Erlang emulator and sets -boot and -config parameters.
# It should only be used at an embedded target system.
#
# Usage: start_erl RootDir RelDir DataFile [ErlFlags ...]
#
ROOTDIR=$1
shift
RELDIR=$1
shift
DataFile=$1
shift

ERTS_VSN=`awk '{print $1}' $DataFile`
VSN=`awk '{print $2}' $DataFile`

BINDIR=$ROOTDIR/erts-$ERTS_VSN/bin
EMU=beam
PROGNAME=`echo $0 | sed 's/.*\///'`
export EMU
export ROOTDIR
export BINDIR
export PROGNAME
export RELDIR

exec $BINDIR/erlexec -boot $RELDIR/$VSN/start -config $RELDIR/$VSN/sys $*

यदि SASL कॉन्फ़िगरेशन पैरामीटर static_emulator साथ एक डिस्क रहित और / या केवल पढ़ने योग्य क्लाइंट नोड शुरू होने वाला है, -boot और -config झंडे को बदलना होगा।

इस तरह के एक ग्राहक एक नई start_erl.data फ़ाइल नहीं पढ़ सकता है (फ़ाइल को गतिशील रूप से नहीं बदला जा सकता है)। बूट और कॉन्फिग फाइल हमेशा एक ही स्थान से प्राप्त की जाती हैं (लेकिन नई सामग्री के साथ यदि कोई नया रिलीज़ स्थापित किया गया है)।

जब भी कोई नई रिलीज़ स्थाई की जाती है, तो ये फ़ाइल क्लाइंट निर्देशिका में bin निर्देशिका में इन फ़ाइलों को bin निर्देशिका में कॉपी कर release_handler

उपरोक्त के रूप में एक ही CLIENTDIR को मानते हुए, अंतिम पंक्ति इस प्रकार है:

exec $BINDIR/erlexec -boot $CLIENTDIR/bin/start \ 
     -config $CLIENTDIR/bin/sys $*