Erlang 21

heart




erlang

heart

मॉड्यूल

दिल

मॉड्यूल सारांश

एर्लांग रनटाइम सिस्टम की दिल की धड़कन की निगरानी।

विवरण

इस मॉड्यूल में heart प्रक्रिया के लिए इंटरफ़ेस है। heart आवधिक दिल की धड़कन को बाहरी बंदरगाह कार्यक्रम में भेजता है, जिसे heart भी कहा जाता heart heart पोर्ट प्रोग्राम का उद्देश्य यह जांचना है कि एरलंग रनटाइम सिस्टम की देखरेख अभी भी चल रही है। यदि पोर्ट प्रोग्राम को HEART_BEAT_TIMEOUT सेकंड (60 सेकंड में चूक) के भीतर कोई दिल की धड़कन नहीं मिली है, तो सिस्टम को रिबूट किया जा सकता है।

हार्ट प्रोग्राम द्वारा मॉनिटर की जाने वाली एरलांग रनटाइम प्रणाली को कमांड-लाइन फ्लैग -heart (यह भी देखें erl(1) ) के साथ शुरू किया जाना है। heart प्रक्रिया तब स्वतः शुरू हो जाती है:

% erl -heart ...

यदि अनुपस्थित ह्रदय की धड़कन के कारण सिस्टम को रिबूट किया जाना है, या एक समाप्त HEART_COMMAND रनटाइम सिस्टम, सिस्टम शुरू होने से पहले पर्यावरण चर HEART_COMMAND को सेट किया जाना चाहिए। यदि यह चर सेट नहीं है, तो एक चेतावनी पाठ मुद्रित किया जाता है, लेकिन सिस्टम रिबूट नहीं करता है।

विंडोज पर रिबूट करने के लिए, HEART_COMMAND को heart -shutdown ( heart -shutdown डिलीवरी में शामिल) या किसी अन्य उपयुक्त प्रोग्राम में सेट किया जा सकता है जो रिबूट को सक्रिय कर सकता है।

पर्यावरण चर HEART_BEAT_TIMEOUT का उपयोग दिल के समय- HEART_BEAT_TIMEOUT को कॉन्फ़िगर करने के लिए किया जा सकता है; इससे पहले कि एरलैंग शुरू हो या कमांड लाइन पर निर्दिष्ट किया जाए, इसे ऑपरेटिंग सिस्टम शेल में सेट किया जा सकता है:

% erl -heart -env HEART_BEAT_TIMEOUT 30 ...

मान (सेकंड में) 10 <X <= 65535 सीमा में होना चाहिए।

जब मोनोटोनिक समय के लिए समर्थन की कमी वाले ओएस पर चल रहा है, तो heart HEART_BEAT_TIMEOUT सेकंड से अधिक के सिस्टम घड़ी समायोजन के लिए अतिसंवेदनशील है। जब ऐसा होता है, तो heart बाहर निकल जाता है और सिस्टम को रिबूट करने की कोशिश करता है। यह हो सकता है, उदाहरण के लिए, यदि सिस्टम घड़ी प्रोटोकॉल टाइम प्रोटोकॉल (NTP) के उपयोग से स्वचालित रूप से समायोजित हो जाती है।

यदि कोई क्रैश होता है, तो एक erl_crash.dump तब तक नहीं लिखा जाता है जब तक कि पर्यावरण चर ERL_CRASH_DUMP_SECONDS सेट न हो:

% erl -heart -env ERL_CRASH_DUMP_SECONDS 10 ...

यदि एक नियमित कोर डंप चाहता है, तो पर्यावरण चर HEART_KILL_SIGNAL=SIGABRT का उपयोग करके किल सिग्नल सेट करके heart जानें। यदि SIGKILL नहीं है, या SIGKILL सेट नहीं है, तो डिफ़ॉल्ट व्यवहार SIGKILL का उपयोग करके एक किल सिग्नल है:

% erl -heart -env HEART_KILL_SIGNAL SIGABRT ...

यदि दिल को HEART_NO_KILL=TRUE रनटाइम सिस्टम को नहीं मारना चाहिए, तो यह पर्यावरण चर HEART_NO_KILL=TRUE का उपयोग करके इंगित किया जा सकता है। यह उपयोगी हो सकता है अगर दिल से निष्पादित कमांड इस का ख्याल रखता है, उदाहरण के लिए एक विशिष्ट सफाई अनुक्रम के हिस्से के रूप में। यदि परेशान नहीं है, या TRUE सेट नहीं किया गया है, तो डिफ़ॉल्ट व्यवहार ऊपर बताए अनुसार मारना होगा।

% erl -heart -env HEART_NO_KILL 1 ...

इसके अलावा, ERL_CRASH_DUMP_SECONDS का heart पर निम्न व्यवहार है:

ERL_CRASH_DUMP_SECONDS=0

एक क्रैश डंप फ़ाइल के लेखन को पूरी तरह से दबा देता है, इस प्रकार रनटाइम सिस्टम को तुरंत रिबूट करता है। यह पर्यावरण चर को स्थापित नहीं करने के समान है।

ERL_CRASH_DUMP_SECONDS=-1

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

ERL_CRASH_DUMP_SECONDS=S

क्रैश सेकंड फ़ाइल को लिखने देने के लिए S सेकंड के लिए heart प्रतीक्षा करता है। S सेकंड के बाद, heart रनटाइम सिस्टम को रिबूट करता है, चाहे क्रैश डंप फ़ाइल लिखी गई हो या नहीं।

निम्नलिखित विवरणों में, सभी कार्य कारण badarg साथ विफल हो badarg यदि heart शुरू नहीं heart है।

जानकारी का प्रकार

heart_option() = check_schedulers

निर्यात

set_cmd (Cmd) -> ठीक | {त्रुटि, {bad_cmd, Cmd}}

प्रकार

एक अस्थायी रिबूट कमांड सेट करता है। इस कमांड का उपयोग तब किया जाता है, जब सिस्टम को रिबूट करने के लिए पर्यावरण चर के साथ निर्दिष्ट HEART_COMMAND उपयोग किया जाता है। नए Erlang रनटाइम सिस्टम का उपयोग करता है (यदि यह गलत व्यवहार करता है) रिबूट करने के लिए पर्यावरण चर HEART_COMMAND

सीमाएं: कमांड स्ट्रिंग Cmd heart प्रोग्राम को आईएसओ लैटिन -1 या यूटीएफ -8 एन्कोडेड बाइनरी के रूप में भेजा जाता है, जो एमुलेटर के फ़ाइल नाम एन्कोडिंग मोड पर निर्भर करता है ( file:native_name_encoding/0 देखें file:native_name_encoding/0 )। एन्कोडेड बाइनरी का आकार 2047 बाइट्स से कम होना चाहिए।

clear_cmd () -> ठीक है

अस्थायी बूट कमांड को साफ़ करता है। यदि सिस्टम समाप्त हो जाता है, तो सामान्य HEART_COMMAND को रीबूट करने के लिए उपयोग किया जाता है।

get_cmd () -> {ठीक है, Cmd}

प्रकार

अस्थायी रिबूट कमांड प्राप्त करता है। यदि कमांड साफ़ हो जाती है, तो खाली स्ट्रिंग वापस आ जाती है।

set_callback (मॉड्यूल, फ़ंक्शन) ->
ठीक है | {त्रुटि, {bad_callback, {मॉड्यूल, फ़ंक्शन}}}

प्रकार

यह सत्यापन कॉलबैक किसी भी दिल की धड़कन को पोर्ट प्रोग्राम में भेजे जाने से पहले निष्पादित किया जाएगा। सत्यापन के लिए सफल होने के लिए इसे मूल्य ok साथ वापस करना होगा।

कॉलबैक के भीतर एक अपवाद को सत्यापन विफलता के रूप में माना जाएगा।

यदि सिस्टम रिबूट होता है तो कॉलबैक को हटा दिया जाएगा।

clear_callback () -> ठीक है

दिल की धड़कन से पहले सत्यापन कॉलबैक कॉल को हटा देता है।

get_callback () -> {ठीक है, {मॉड्यूल, फंक्शन}} | कोई नहीं

प्रकार

सत्यापन कॉलबैक प्राप्त करें। यदि कॉलबैक को मंजूरी दे दी जाती है, तो none वापस none जाएगा।

set_options (विकल्प) -> ठीक | {त्रुटि, {bad_options, विकल्प}}

प्रकार

मान्य विकल्प set_options हैं:

check_schedulers

सक्षम होने पर, प्रत्येक शेड्यूलर को उसकी जवाबदेही जाँचने के लिए एक संकेत भेजा जाएगा। पोर्ट प्रोग्राम पर भेजे जाने वाले किसी भी दिल की धड़कन से पहले सिस्टम की जांच होती है। यदि कोई शेड्यूलर उत्तरदायी नहीं है, तो हृदय कार्यक्रम उसके दिल की धड़कन को प्राप्त नहीं करेगा और इस तरह नोड को समाप्त कर देगा।

यदि विकल्प मान्य हैं ok तो मान ok है।

get_options () -> {ठीक है, विकल्प} | कोई नहीं

प्रकार

रिटर्न {ok, Options} जहां Options दिल के लिए सक्षम वर्तमान विकल्पों की एक सूची है। यदि कॉलबैक को मंजूरी दे दी जाती है, तो none वापस none जाएगा।