PMGETOPT(1) General Commands Manual PMGETOPT(1)

pmgetopt - تجزیه‌کننده گزینه‌های اسکریپت شل در Performance Co-Pilot

$PCP_BINADM_DIR/pmgetopt [-u?] [-c file] [-D debug] [-p name] [--] [parameters]

دستور pmgetopt برای تجزیه گزینه‌های خط فرمان در اسکریپت‌های شلِ مورد استفاده در Performance Co-Pilot (مجموعه ابزار PCP) به کار می‌رود. این ابزار همچنین برای تولید پیام‌های نحوه استفاده (راهنما) برای آن اسکریپت‌ها استفاده می‌شود.

پارامترهای ارائه‌شده به pmgetopt به دو شکل هستند: در ابتدا، گزینه‌های مختص خودِ pmgetopt ارسال شده و با استفاده از سازوکار -- خاتمه می‌یابند. پس از آن، تمامی پارامترهای منتقل‌شده به اسکریپت شل باید ارسال شوند (که معمولاً این کار به‌سادگی با متغیر "$@" صورت می‌گیرد).

گزینه‌های خط فرمانِ موجود عبارتند از:

یک file پیکربندی با قالبی که در ادامه شرح داده شده است، با استفاده از این گزینه به pmconfig ارسال می‌شود. در صورت حذف این گزینه، pmconfig پیکربندی خود را از جریان ورودی استاندارد می‌خواند.
هنگام تجزیه پارامترهای اسکریپت شلِ فراخواننده، پیام‌های خطا و راهنما به جای ارجاع به خودِ pmgetopt به‌عنوان منبع خطا، شامل name برنامه داده‌شده خواهند بود.
با استفاده از این گزینه می‌توان پیام راهنمای مناسبی برای اسکریپت شل فراخواننده تولید کرد تا آن را به‌عنوان راهنمای خود ارائه دهد.
-?, --help
نمایش پیام نحوه استفاده برای خودِ pmgetopt و خروج.

pmgetopt پارامترهای داده‌شده را تجزیه کرده و خروجی را در قالبی مناسب برای بارگذاری (source کردن) در اسکریپت شل فراخواننده تولید می‌کند. هنگامی که طبق مشخصات هر دو فرم کوتاه و بلند یک آرگومان مجاز باشند، pmgetopt برای پردازش ساده‌تر در شل همواره فرم کوتاه را مشخص می‌کند. اگر آرگومان‌هایی ارائه شوند که با پیکربندی مطابقت نداشته باشند، درخواستی برای پیام نحوه استفاده (-?) تولید می‌شود تا اسکریپت فراخواننده به آن پاسخ دهد. هرگونه پارامتر غیراز گزینه، با قرار گرفتن نویسه جداکننده خط فاصله دوبل (--) در ابتدای آن، به اسکریپت فراخواننده بازگردانده می‌شود. بنابراین یک اسکریپت باید به محض شناسایی این جداکننده، پردازش گزینه‌ها را متوقف کرده و پردازش آرگومان‌های غیرگزینه‌ای را آغاز نماید.

برخلاف دستور داخلی شل getopt، متغیرهایی مانند $OPTARG مقداردهی نمی‌شوند و اسکریپت فراخواننده معمولاً از دستورهای داخلی شل نظیر eval، set و دستور جابه‌جایی موضعی shift استفاده می‌کند تا از پردازش صحیح گزینه‌ها اطمینان حاصل شود.

قالب پیکربندی مورد استفاده توسط pmgetopt به‌گونه‌ای طراحی شده است که شباهت نزدیکی به پیام راهنمایی داشته باشد که در صورت وجود آرگومان‌های نامعتبر (یا گزینه -?، --help) تولید می‌شود.

اساساً دو نوع خط پیکربندی وجود دارد - دستورها و گزینه‌ها. دستورها امکان ارسال فراداده به فرایند پردازش گزینه‌ها را فراهم می‌کنند، و گزینه‌ها همان گزینه‌های مجاز خط فرمان هستند که اسکریپت شل خواهد پذیرفت. ابتدای خطوط دستور نویسه هش (#) قرار می‌گیرد، در حالی که خطوط گزینه‌ها همواره با یک خط تیره (تک یا دوبل) آغاز می‌شوند. هر خط دیگر در پیکربندی، که ممکن است شامل سرآیندهای راهنما یا متون توضیحی باشد، هیچ اثری بر تجزیه گزینه‌ها ندارد و بدون تغییر در پیام راهنما کپی خواهد شد.

مجموعه دستورها عبارتند از: getopt (مشخصات گزینه‌های دارای آرگومان کوتاه را به‌صورت دستی ارائه می‌دهد؛ در صورت عدم وجود، از روی گزینه‌های ارائه‌شده تولید خواهد شد)، usage (خلاصه‌ای کوتاه و تک‌خطی ارائه می‌دهد که در ابتدای پیام راهنما استفاده می‌شود و پیش از گزارش، مقدار progname در ابتدای آن قرار می‌گیرد)، و end که به pmgetopt اعلام می‌کند پردازش دستورها و گزینه‌های بعدی را متوقف کند - هر متن دیگری پس از آن مشاهده شود، به‌سادگی به انتهای پیام راهنما پیوست خواهد شد.

برای هر یک از گزینه‌های استاندارد PCP، همان‌طور که در PCPIntro(1) شرح داده شده، یک نماد اختصاری وجود دارد. اگر هر یک از این گزینه‌ها (برای مثال --host) به‌صورت یک کلمه منفرد در هر خطی ظاهر شود، به گزینه مناسب برای اسکریپت شل تبدیل خواهد شد، شامل تمام فراداده‌های مربوط به آن گزینه (اینکه آیا آرگومانی می‌پذیرد، فرم‌های کوتاه و بلند گزینه و غیره).

استفاده از نماد مساوی («=») نشان‌دهنده وجود یک آرگومان الزامی برای هر گزینه، هم در فرم کوتاه و هم فرم بلند است. هر گزینه غیراستاندارد باید با توضیحی غیرخالی درباره آن آرگومان همراه باشد.

به‌عنوان مثال، موارد زیر یک پیکربندی معتبر است:

# Usage: [options] node...
Options:
    --archive
    -d, --delay            pause between updates for archive replay
    --host
    --interval
    -i=INST, --insts=INST  comma-separated metrics instance list
    -r                     output raw counters (no rate conversion)
    --width=N              set the width of each column of output
    --timezone
    --help


این پیکربندی در صورت اجرا به شکل نشان داده شده، پیام راهنمای زیر را تولید خواهد کرد.

$ pmgetopt --usage --progname=clusterstat -- "$@"
Usage: clusterstat [options] node...
Options:
  -a FILE, --archive=FILE
                        metrics source is a PCP archive
  -d, --delay           pause between updates for archive replay
  -h HOST, --host=HOST  metrics source is PMCD on host
  -t DELTA, --interval=DELTA
                        sampling interval
  -i INST, --insts=INST comma-separated metrics instance list
  -r                    output raw counters (no rate conversion)
  --width=N             set the width of each column of output
  -Z TZ, --timezone=TZ  set reporting timezone
  -?, --help            show this usage message and exit


چندین نمونه از کاربرد pmgetopt بخشی از مجموعه ابزار PCP را تشکیل می‌دهند؛ به‌ویژه اسکریپت‌های pcp(1) و pmlogmv(1) نمونه‌های مرجع بسیار خوبی هستند.

متغیرهای محیطی با پیشوند PCP_ برای پارامتریک‌سازی نام فایل‌ها و دایرکتوری‌های مورد استفاده PCP به کار می‌روند. در هر نصب، فایل /etc/pcp.conf حاوی مقادیر محلی برای این متغیرها است. می‌توان از متغیر $PCP_CONF برای مشخص کردن یک فایل پیکربندی جایگزین استفاده کرد، همان‌طور که در pcp.conf(5) شرح داده شده است.

گزینه -D یا --debug خروجی پیام‌های عیب‌یابی تکمیلی را در stderr فعال می‌کند تا به اولویت‌بندی و بررسی مشکلات کمک نماید، هرچند این اطلاعات گاهی پیچیده بوده و در وهله اول برای راهنمایی توسعه‌دهندگان در نظر گرفته شده است تا کاربران نهایی. آرگومان debug فهرستی از گزینه‌های اشکال‌زدایی است که با کاما از هم جدا شده‌اند؛ از pmdbg(1) همراه با گزینه -l استفاده کنید تا فهرستی از گزینه‌های اشکال‌زدایی موجود و مفهوم آن‌ها را به دست آورید.

pcp(1)، pmlogmv(1)، pmgetopt_r(3)، pcp.conf(5) و pcp.env(5).

PCP Performance Co-Pilot