.TH run_erl 1 "erts 17.0.6" "Ericsson AB" "Erlang Module Definition" .SH "نام (NAME)" run_erl \- تغییر مسیر جریان‌های ورودی و خروجی Erlang در سیستم‌های یونیکس .SH "توضیحات (DESCRIPTION)" .PP برنامه \fIrun_erl\fR مختص سیستم‌های یونیکس است. این برنامه جریان‌های ورودی استاندارد و خروجی استاندارد را تغییر مسیر می‌دهد تا بتوان تمام خروجی‌ها را ثبت کرد. این برنامه همچنین به برنامه \fIto_erl\fR اجازه می‌دهد تا به کنسول Erlang متصل شود، و امکان نظارت و اشکال‌زدایی یک سامانه تعبیه‌شده را از راه دور فراهم می‌کند. .PP برای اطلاعات بیشتر درباره نحوه استفاده، به راهنمای کاربر سامانه تعبیه‌شده (Embedded System User's Guide) در مستندات سیستم مراجعه کنید. .IP .nf run_erl [-daemon] pipe_dir/ log_dir "exec command arg1 arg2 ..." .fi .PP آرگومان‌ها: -daemon .RS 2 استفاده از این گزینه اکیداً توصیه می‌شود. این گزینه باعث می‌شود \fIrun_erl\fR در پس‌زمینه و کاملاً جدا از هرگونه ترمینال کنترلی اجرا شود و دستور فوراً کنترل را به فراخواننده بازمی‌گرداند. بدون این گزینه، \fIrun_erl\fR باید با استفاده از ترفندهای گوناگون در شل اجرا شود تا هنگام راه‌اندازی، کاملاً از ترمینال در حال استفاده جدا گردد. این گزینه باید اولین آرگومان ورودی به \fIrun_erl\fR در خط فرمان باشد. .RE pipe_dir .RS 2 پایپ نام‌گذاری‌شده (named pipe)، معمولاً \fI/tmp/\fR. این مسیر باید با یک \fI/\fR (اسلش) پایان یابد؛ یعنی \fI/tmp/epipes/\fR، نه \fI/tmp/epipes\fR. .RE log_dir .RS 2 فایل‌های لاگ، یعنی: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\}.PP یک فایل لاگ، \fIrun_erl.log\fR، که پیشرفت و هشدارهای خودِ برنامه \fIrun_erl\fR را ثبت می‌کند. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\}.PP حداکثر تا پنج فایل لاگ هر یک به اندازه بیشینه ۱۰۰ کیلوبایت حاوی محتوای جریان‌های استاندارد ارسالی به دستور و دریافتی از آن. (هم تعداد فایل‌های لاگ و هم اندازه‌های آن‌ها با متغیرهای محیط قابل تغییرند، بخش متغیرهای محیط در ادامه را ببینید.) .PP هنگامی که فایل‌های لاگ پر می‌شوند، \fIrun_erl\fR قدیمی‌ترین فایل لاگ را حذف کرده و مجدداً استفاده می‌کند. .RE .RE "exec command arg1 arg2 ..." .RS 2 یک رشته جداشده با فاصله که برنامه مورد نظر برای اجرا را مشخص می‌کند. فیلد دوم معمولاً نام دستوری مانند \fIerl\fR است. .RE .SS "نکات مربوط به فایل‌های لاگ" .PP در حین اجرا، \fIrun_erl\fR تمامی خروجی‌ها را بدون تفسیر به یک فایل لاگ می‌فرستد. این فایل \fIerlang.log.N\fR نام دارد که در آن \fIN\fR یک عدد صحیح است. وقتی لاگ «پر» شد (اندازه پیش‌فرض لاگ ۱۰۰ کیلوبایت است)، \fIrun_erl\fR شروع به ثبت در فایل \fIerlang.log.(N+1)\fR می‌کند، تا زمانی که \fIN\fR به عدد مشخصی (پیش‌فرض ۵) برسد، که در این نقطه مقدار \fIN\fR دوباره از ۱ شروع شده و بازنویسی قدیمی‌ترین فایل‌ها آغاز می‌گردد. .PP اگر خروجی از شل Erlang دریافت نشود، اما ماشین Erlang همچنان فعال (زنده) به نظر برسد، یک پیام «ALIVE» در لاگ نوشته می‌شود؛ این پیام یک برچسب زمانی است و به‌طور پیش‌فرض پس از ۱۵ دقیقه عدم فعالیت ثبت می‌شود. همچنین، اگر خروجی از Erlang ثبت شود ولی بیش از ۵ دقیقه (پیش‌فرض) از آخرین باری که داده‌ای از Erlang دریافت شده گذشته باشد، یک برچسب زمانی در لاگ نوشته خواهد شد. پیام‌های «ALIVE» به صورت زیر هستند: .IP .nf ===== ALIVE .fi .PP سایر برچسب‌های زمانی به صورت زیر هستند: .IP .nf ===== .fi .PP مقدار \fIdate-time-string\fR تاریخ و زمانی است که پیام در آن ثبت شده است، و به‌طور پیش‌فرض بر اساس زمان محلی است (در صورت نیاز می‌تواند به UTC تغییر یابد). این مقدار توسط تابع ANSI-C به نام \fIstrftime\fR با استفاده از رشته قالبی \fI%a %b %e %T %Z %Y\fR قالب‌بندی می‌شود که پیام‌هایی مانند \fI===== ALIVE Thu May 15 10:13:36 MEST 2003\fR را تولید می‌کند؛ این قالب قابل تغییر است، بخش بعد را ببینید. .SS "متغیرهای محیط (ENVIRONMENT VARIABLES)" .PP متغیرهای محیط زیر توسط \fIrun_erl\fR شناسایی می‌شوند و رفتار ثبت لاگ را تغییر می‌دهند. برای اطلاعات بیشتر، بخش پیشین را ببینید. RUN_ERL_LOG_ALIVE_MINUTES .RS 2 مدت زمان انتظار برای خروجی (به دقیقه) پیش از نوشتن پیام «ALIVE» در لاگ. مقدار پیش‌فرض ۱۵ و حداقل آن ۱ است. .RE RUN_ERL_LOG_ACTIVITY_MINUTES .RS 2 مدت زمانی که Erlang باید غیرفعال باشد پیش از آنکه در ابتدای خروجی یک برچسب زمانی درج شود. مقدار پیش‌فرض \fIRUN_ERL_LOG_ALIVE_MINUTES div 3\fR و حداقل آن ۱ است. .RE RUN_ERL_LOG_ALIVE_FORMAT .RS 2 یک رشته قالب‌بندی دیگر را برای استفاده در فراخوانی تابع \fIstrftime\fR از کتابخانه C مشخص می‌کند. به این ترتیب، تعیین این مقدار به \fI"%e-%b-%Y, %T %Z"\fR پیام‌های لاگ را با برچسب‌های زمانی مانند \fI15-May-2003, 10:23:04 MET\fR تولید می‌کند. برای اطلاعات بیشتر، به مستندات تابع \fIstrftime\fR در کتابخانه C مراجعه کنید. مقدار پیش‌فرض \fI"%a %b %e %T %Z %Y"\fR است. .RE RUN_ERL_LOG_ALIVE_IN_UTC .RS 2 اگر مقداری غیر از \fI0\fR تنظیم شود، باعث می‌شود تمام زمان‌های نمایش‌داده‌شده توسط \fIrun_erl\fR به جای زمان محلی، به صورت UTC (شامل GMT، CET، MET، بدون ساعت تابستانی) باشند. این گزینه روی داده‌های دریافتی از Erlang تأثیری ندارد و فقط بر لاگ‌هایی که مستقیماً توسط \fIrun_erl\fR خروجی داده می‌شوند اثر می‌گذارد. برنامه کاربردی SASL را نیز می‌توان با تنظیم متغیر برنامه Erlang با نام \fIutc_log\fR بر روی \fItrue\fR به همین ترتیب تغییر داد. .RE RUN_ERL_LOG_GENERATIONS .RS 2 تعداد فایل‌های لاگ نوشته‌شده را پیش از استفاده مجدد از فایل‌های قدیمی‌تر کنترل می‌کند. مقدار پیش‌فرض ۵، حداقل ۲ و حداکثر ۱۰۰۰ است. .PP توجه داشته باشید که \fIrun_erl\fR به عنوان روشی برای نشان دادن جدیدترین فایل، قدیمی‌ترین فایل لاگ را حذف خواهد کرد تا یک «شکاف» را در توالی فایل‌ها حفظ کند. برای نمونه، اگر فایل‌های لاگ شماره ۱، ۲، ۴ و ۵ (#1, #2, #4 and #5) وجود داشته باشند، به این معناست که شماره ۲ جدیدترین و شماره ۴ قدیمی‌ترین است. از این رو شما حداکثر یک فایل لاگ کمتر از مقدار تعیین‌شده توسط \fIRUN_ERL_LOG_GENERATIONS\fR دریافت خواهید کرد. .RE RUN_ERL_LOG_MAXSIZE .RS 2 اندازه بر حسب بایت برای یک فایل لاگ پیش از سوئیچ کردن به یک فایل لاگ جدید. مقدار پیش‌فرض ۱۰۰۰۰۰، حداقل ۱۰۰۰ و حداکثر در حدود 2^30 است. .RE RUN_ERL_DISABLE_FLOWCNTRL .RS 2 در صورت تعریف شدن، کنترل جریان (flow control) ورودی و خروجی را برای pty باز شده توسط \fIrun_erl\fR غیرفعال می‌کند. این گزینه زمانی مفید است که بخواهید خطر مسدود شدن تصادفی کنترل جریان با فشردن Ctrl-S (به جای Ctrl-D برای جدا شدن) را برطرف کنید؛ این اتفاق می‌تواند باعث مسدود شدن کل فرآیند Beam شود، و در صورت اجرای heart به عنوان سرپرست (supervisor)، حتی فرآیند heart نیز هنگام نوشتن پیام لاگ روی ترمینال مسدود شده و از انجام وظایف خود بازمی‌ماند. .RE .SS "همچنین ببینید (SEE ALSO)" .PP \fIstart(1)\fR, \fIstart_erl(1)\fR