run_erl(1) Erlang Module Definition run_erl(1)

run_erl - تغییر مسیر جریان‌های ورودی و خروجی Erlang در سیستم‌های یونیکس

برنامه run_erl مختص سیستم‌های یونیکس است. این برنامه جریان‌های ورودی استاندارد و خروجی استاندارد را تغییر مسیر می‌دهد تا بتوان تمام خروجی‌ها را ثبت کرد. این برنامه همچنین به برنامه to_erl اجازه می‌دهد تا به کنسول Erlang متصل شود، و امکان نظارت و اشکال‌زدایی یک سامانه تعبیه‌شده را از راه دور فراهم می‌کند.

برای اطلاعات بیشتر درباره نحوه استفاده، به راهنمای کاربر سامانه تعبیه‌شده (Embedded System User's Guide) در مستندات سیستم مراجعه کنید.

run_erl [-daemon] pipe_dir/ log_dir "exec command arg1 arg2 ..."

آرگومان‌ها:

-daemon

استفاده از این گزینه اکیداً توصیه می‌شود. این گزینه باعث می‌شود run_erl در پس‌زمینه و کاملاً جدا از هرگونه ترمینال کنترلی اجرا شود و دستور فوراً کنترل را به فراخواننده بازمی‌گرداند. بدون این گزینه، run_erl باید با استفاده از ترفندهای گوناگون در شل اجرا شود تا هنگام راه‌اندازی، کاملاً از ترمینال در حال استفاده جدا گردد. این گزینه باید اولین آرگومان ورودی به run_erl در خط فرمان باشد.

pipe_dir

پایپ نام‌گذاری‌شده (named pipe)، معمولاً /tmp/. این مسیر باید با یک / (اسلش) پایان یابد؛ یعنی /tmp/epipes/، نه /tmp/epipes.

log_dir

فایل‌های لاگ، یعنی:
•یک فایل لاگ، run_erl.log، که پیشرفت و هشدارهای خودِ برنامه run_erl را ثبت می‌کند.
•حداکثر تا پنج فایل لاگ هر یک به اندازه بیشینه ۱۰۰ کیلوبایت حاوی محتوای جریان‌های استاندارد ارسالی به دستور و دریافتی از آن. (هم تعداد فایل‌های لاگ و هم اندازه‌های آن‌ها با متغیرهای محیط قابل تغییرند، بخش متغیرهای محیط در ادامه را ببینید.)

هنگامی که فایل‌های لاگ پر می‌شوند، run_erl قدیمی‌ترین فایل لاگ را حذف کرده و مجدداً استفاده می‌کند.

"exec command arg1 arg2 ..."

یک رشته جداشده با فاصله که برنامه مورد نظر برای اجرا را مشخص می‌کند. فیلد دوم معمولاً نام دستوری مانند erl است.

در حین اجرا، run_erl تمامی خروجی‌ها را بدون تفسیر به یک فایل لاگ می‌فرستد. این فایل erlang.log.N نام دارد که در آن N یک عدد صحیح است. وقتی لاگ «پر» شد (اندازه پیش‌فرض لاگ ۱۰۰ کیلوبایت است)، run_erl شروع به ثبت در فایل erlang.log.(N+1) می‌کند، تا زمانی که N به عدد مشخصی (پیش‌فرض ۵) برسد، که در این نقطه مقدار N دوباره از ۱ شروع شده و بازنویسی قدیمی‌ترین فایل‌ها آغاز می‌گردد.

اگر خروجی از شل Erlang دریافت نشود، اما ماشین Erlang همچنان فعال (زنده) به نظر برسد، یک پیام «ALIVE» در لاگ نوشته می‌شود؛ این پیام یک برچسب زمانی است و به‌طور پیش‌فرض پس از ۱۵ دقیقه عدم فعالیت ثبت می‌شود. همچنین، اگر خروجی از Erlang ثبت شود ولی بیش از ۵ دقیقه (پیش‌فرض) از آخرین باری که داده‌ای از Erlang دریافت شده گذشته باشد، یک برچسب زمانی در لاگ نوشته خواهد شد. پیام‌های «ALIVE» به صورت زیر هستند:

===== ALIVE <date-time-string>

سایر برچسب‌های زمانی به صورت زیر هستند:

===== <date-time-string>

مقدار date-time-string تاریخ و زمانی است که پیام در آن ثبت شده است، و به‌طور پیش‌فرض بر اساس زمان محلی است (در صورت نیاز می‌تواند به UTC تغییر یابد). این مقدار توسط تابع ANSI-C به نام strftime با استفاده از رشته قالبی %a %b %e %T %Z %Y قالب‌بندی می‌شود که پیام‌هایی مانند ===== ALIVE Thu May 15 10:13:36 MEST 2003 را تولید می‌کند؛ این قالب قابل تغییر است، بخش بعد را ببینید.

متغیرهای محیط زیر توسط run_erl شناسایی می‌شوند و رفتار ثبت لاگ را تغییر می‌دهند. برای اطلاعات بیشتر، بخش پیشین را ببینید.

RUN_ERL_LOG_ALIVE_MINUTES

مدت زمان انتظار برای خروجی (به دقیقه) پیش از نوشتن پیام «ALIVE» در لاگ. مقدار پیش‌فرض ۱۵ و حداقل آن ۱ است.

RUN_ERL_LOG_ACTIVITY_MINUTES

مدت زمانی که Erlang باید غیرفعال باشد پیش از آنکه در ابتدای خروجی یک برچسب زمانی درج شود. مقدار پیش‌فرض RUN_ERL_LOG_ALIVE_MINUTES div 3 و حداقل آن ۱ است.

RUN_ERL_LOG_ALIVE_FORMAT

یک رشته قالب‌بندی دیگر را برای استفاده در فراخوانی تابع strftime از کتابخانه C مشخص می‌کند. به این ترتیب، تعیین این مقدار به "%e-%b-%Y, %T %Z" پیام‌های لاگ را با برچسب‌های زمانی مانند 15-May-2003, 10:23:04 MET تولید می‌کند. برای اطلاعات بیشتر، به مستندات تابع strftime در کتابخانه C مراجعه کنید. مقدار پیش‌فرض "%a %b %e %T %Z %Y" است.

RUN_ERL_LOG_ALIVE_IN_UTC

اگر مقداری غیر از 0 تنظیم شود، باعث می‌شود تمام زمان‌های نمایش‌داده‌شده توسط run_erl به جای زمان محلی، به صورت UTC (شامل GMT، CET، MET، بدون ساعت تابستانی) باشند. این گزینه روی داده‌های دریافتی از Erlang تأثیری ندارد و فقط بر لاگ‌هایی که مستقیماً توسط run_erl خروجی داده می‌شوند اثر می‌گذارد. برنامه کاربردی SASL را نیز می‌توان با تنظیم متغیر برنامه Erlang با نام utc_log بر روی true به همین ترتیب تغییر داد.

RUN_ERL_LOG_GENERATIONS

تعداد فایل‌های لاگ نوشته‌شده را پیش از استفاده مجدد از فایل‌های قدیمی‌تر کنترل می‌کند. مقدار پیش‌فرض ۵، حداقل ۲ و حداکثر ۱۰۰۰ است.

توجه داشته باشید که run_erl به عنوان روشی برای نشان دادن جدیدترین فایل، قدیمی‌ترین فایل لاگ را حذف خواهد کرد تا یک «شکاف» را در توالی فایل‌ها حفظ کند. برای نمونه، اگر فایل‌های لاگ شماره ۱، ۲، ۴ و ۵ (#1, #2, #4 and #5) وجود داشته باشند، به این معناست که شماره ۲ جدیدترین و شماره ۴ قدیمی‌ترین است. از این رو شما حداکثر یک فایل لاگ کمتر از مقدار تعیین‌شده توسط RUN_ERL_LOG_GENERATIONS دریافت خواهید کرد.

RUN_ERL_LOG_MAXSIZE

اندازه بر حسب بایت برای یک فایل لاگ پیش از سوئیچ کردن به یک فایل لاگ جدید. مقدار پیش‌فرض ۱۰۰۰۰۰، حداقل ۱۰۰۰ و حداکثر در حدود 2^30 است.

RUN_ERL_DISABLE_FLOWCNTRL

در صورت تعریف شدن، کنترل جریان (flow control) ورودی و خروجی را برای pty باز شده توسط run_erl غیرفعال می‌کند. این گزینه زمانی مفید است که بخواهید خطر مسدود شدن تصادفی کنترل جریان با فشردن Ctrl-S (به جای Ctrl-D برای جدا شدن) را برطرف کنید؛ این اتفاق می‌تواند باعث مسدود شدن کل فرآیند Beam شود، و در صورت اجرای heart به عنوان سرپرست (supervisor)، حتی فرآیند heart نیز هنگام نوشتن پیام لاگ روی ترمینال مسدود شده و از انجام وظایف خود بازمی‌ماند.

start(1), start_erl(1)

erts 17.0.6 Ericsson AB