SG_OPCODES(8) SG3_UTILS SG_OPCODES(8)

sg_opcodes - گزارش کدهای عملیاتی یا توابع مدیریت وظیفه پشتیبانی‌شده در SCSI

sg_opcodes [--alpha] [--compact] [--enumerate] [--help] [--hex] [--inhex=FN] [--json[=JO]] [--js-file=JFN] [--mask] [--mlu] [--no-inquiry] [--opcode=OP[,SA]] [--pdt=DT] [--raw] [--rctd] [--repd] [--rep-opts=RO] [--sa=SA] [--tmf] [--unsorted] [--verbose] [--version] DEVICE

sg_opcodes [-a] [-c] [-e] [-H] [-i=FN] [-j] [-m] [-M] [-n] [-o=OP] [-p=DT] [-q] [-R] [-s=SA] [-t] [-u] [-v] [-V] [-?] DEVICE

این ابزار دستور SCSI REPORT SUPPORTED OPERATION CODES (یا RSOC) یا دستور REPORT SUPPORTED TASK MANAGEMENT FUNCTIONS (یا RSTMF) را به DEVICE ارسال می‌کند و سپس پاسخ را نمایش می‌دهد. اقدام پیش‌فرض، گزارش کدهای عملیاتی پشتیبانی‌شده است. در این حالت، یا همه دستورات پشتیبانی‌شده را فهرست می‌کند یا اطلاعات دقیقی درباره یک دستور خاص که توسط گزینه --opcode=OP مشخص شده است (احتمالاً همراه با اطلاعات بیشتر از گزینه --sa=SA) ارائه می‌دهد.

نام یک دستور SCSI به نوع دستگاه جانبی آن (مانند یک دیسک) بستگی دارد. دستورات RSOC و RSTMF در مجموعه دستورات MMC برای دستگاه‌های CD و DVD پشتیبانی نمی‌شوند. این ابزار یک دستور INQUIRY برای دریافت نوع دستگاه جانبی انجام می‌دهد و رشته‌های سازنده، محصول و نگارش را چاپ می‌کند.

پیش‌تر قابلیت مشابهی برای پرس‌وجوی کدهای عملیاتی پشتیبانی‌شده از طریق بیت CmdDt در دستور SCSI INQUIRY در دسترس بود (به sg_inq(8) مراجعه کنید). با این حال آن قابلیت منسوخ شد و در فوریه ۲۰۰۲ در SPC-3 (نگارش ۴) با دستور RSOC جایگزین گردید.

این ابزار از دو نحو خط فرمان پشتیبانی می‌کند؛ نحو ترجیحی ابتدا در خلاصه دستور نشان داده شده و در این بخش توضیح داده می‌شود. بخش بعدی درباره نحو قدیمی خط فرمان، گروه دوم گزینه‌ها را شرح می‌دهد.

آرگومان‌های گزینه‌های طولانی برای گزینه‌های کوتاه نیز اجباری هستند.

هنگامی که تمام دستورات پشتیبانی‌شده فهرست می‌شوند، هیچ الزامی برای سرور دستگاه (یعنی DEVICE) برای مرتب‌سازی فهرست دستورات وجود ندارد. هنگامی که این گزینه داده شود، فهرست دستورات پشتیبانی‌شده بر اساس نام (به ترتیب الفبایی) مرتب می‌شود. هنگامی که نه این گزینه و نه گزینه --unsorted داده نشده باشند، فهرست دستورات پشتیبانی‌شده به صورت عددی مرتب می‌شود (ابتدا بر اساس کد عملیاتی و سپس بر اساس کنش خدمت).
نام برخی دستورات، به‌ویژه آن‌هایی که به برخی کنش‌های خدمت (service actions) مرتبط هستند، طولانی‌تر شده است. این امر ممکن است در حالت «یک سطر برای هر دستور» در برخی ترمینال‌ها باعث شکستن سطر شود. هنگامی که این گزینه داده شود، فیلدهای کد عملیاتی و کنش خدمت در یک فیلد واحد ترکیب می‌شوند که در آن کنش خدمت با پیشوند کاما مستقیماً پس از کد عملیاتی نشان داده می‌شود. اگر هیچ کنش خدمتی با دستور مرتبط نباشد، کاما و کنش خدمت پس از کد عملیاتی نمایش داده نمی‌شوند. با مشخص کردن این گزینه، فیلد اندازه CDB نمایش داده نمی‌شود.
این گزینه نام دستور SCSI را بر اساس کد عملیاتی داده‌شده، نوع دستگاه جانبی و در صورت تمایل کنش خدمت چاپ می‌کند. در صورت ارائه این گزینه، DEVICE نادیده گرفته می‌شود. اگر مقادیر کد عملیاتی، نوع دستگاه جانبی و کنش خدمت داده نشوند، مقدار پیش‌فرض صفر برای آن‌ها در نظر گرفته می‌شود؛ بنابراین اگر این گزینه تنها گزینه ارائه‌شده باشد، عبارت "Test Unit ready" در خروجی چاپ می‌شود، زیرا کد عملیاتی آن 0 است، کنش خدمت ندارد و از آنجا که در استاندارد(های) SCSI Primary Commands (یا SPC) تعریف شده، بین تمامی انواع دستگاه‌های جانبی مشترک است.
پیام نحوه استفاده که خلاصه‌ای از گزینه‌های خط فرمان است را نمایش داده و سپس خارج می‌شود. در صورت ارائه DEVICE، آن را نادیده می‌گیرد.
پاسخ را در قالب هگزادسیمال ASCII در خروجی استاندارد چاپ می‌کند. هنگامی که یک یا دو بار استفاده شود، هر سطر با یک نشانی نسبی (هگزادسیمال) که از 0 در اولین سطر هگز خروجی آغاز می‌شود شروع خواهد شد. تفاوت در این است که با دو بار استفاده، بایت‌های هگزادسیمال به صورت کاراکترهای ASCII در سمت راست هر سطر نمایش داده می‌شوند؛ کاراکترهای غیرقابل‌چاپ با "." جایگزین می‌شوند.
هنگامی که سه بار یا بیشتر استفاده شود، هیچ نشانی نسبی در ابتدای هر سطر وجود نخواهد داشت. این خروجی برای هدایت مجدد به فایلی که بعداً می‌تواند به گزینه --inhex=FN داده شود، مناسب است.
که در آن FN نام فایلی است که فرض می‌شود محتویات آن هگزادسیمال ASCII است. اگر DEVICE نیز داده شود، DEVICE نادیده گرفته می‌شود، یک هشدار صادر شده و ابزار با رمزگشایی فایل با نام FN به کار خود ادامه می‌دهد. برای اطلاعات بیشتر بخش "HEX, BINARY AND JSON FORMATS" را در صفحه راهنمای sg3_utils ببینید. اگر گزینه --raw نیز داده شود، محتویات FN به عنوان باینری تلقی می‌شود.
خروجی به جای متن ساده در قالب JSON ارائه می‌شود. توجه داشته باشید که آرگومان‌های شکل کوتاه و بلند خود اختیاری هستند و در صورت وجود با "=" شروع می‌شوند و هیچ فاصله‌ای در اطراف آن "=" مجاز نیست.
صفحه راهنمای sg3_utils_json را ببینید یا از '?' برای JO استفاده کنید تا خلاصه‌ای دریافت نمایید.
خروجی در قالب JSON خواهد بود و به فایلی با نام JFN ارسال می‌شود. اگر آن فایل از قبل وجود داشته باشد، محتوای آن پاک (truncate) می‌شود. به طور پیش‌فرض، خروجی JSON به خروجی استاندارد (stdout) ارسال می‌شود.
هنگامی که این گزینه داده شود، گزینه --json[=JO] به طور ضمنی فعال شده و نیازی به ذکر آن نیست. ممکن است برای تنظیم پارامتر JO به مقادیر غیرپیش‌فرض، همچنان به گزینه --json[=JO] نیاز باشد.
علاوه بر این، ماسک cdb را به صورت هگز چاپ می‌کند. بنابراین یک cdb دوازده بایتی دارای یک ماسک هگزادسیمال ۱۲ بایتی خواهد بود. اگر مقدار هگزادسیمال (در ذهن) به باینری بسط داده شود، "1" به این معنی است که موقعیت متناظر در cdb ممکن است تنظیم شود، و "0" به این معنی است که موقعیت متناظر در cdb نباید تنظیم شود. در مورد موقعیت‌های ماسک با مقدار "0" که کاربر سعی در تنظیم آن‌ها در یک cdb دارد، دستگاه ممکن است آن را نادیده بگیرد یا خطایی گزارش دهد که معمولاً با کلید حس (sense key) تحت عنوان "illegal request" همراه است.
علاوه بر این، نشانه‌ای (0 یا 1) را چاپ می‌کند که مشخص می‌سازد آیا دستور بر تمام واحدهای منطقی در هدف دربرگیرنده تأثیر می‌گذارد یا خیر. فیلد MLU (مخفف Multiple Logical Units) بیتی در پاسخ RSOC است که توسط پیشنهاد 18-045r1 (و احتمالاً در spc5r20) معرفی شده است. بدون این گزینه، قالب خروجی پیش‌فرض که همه کدهای عملیاتی را فهرست می‌کند، شامل نشانه MLU نخواهد بود.
پیش از فراخوانی یک دستور SCSI RSOC یا RSTMF، یک دستور SCSI INQUIRY اجرا می‌شود. دلیل این امر تعیین نوع دستگاه جانبی (pdt) مربوط به DEVICE است، چرا که این موضوع در تبدیل کدهای عملیاتی به نام دستورات مفید است. به طور پیش‌فرض این ابزار خلاصه‌ای از پاسخ دستور INQUIRY را در خروجی استاندارد چاپ می‌کند. اگر این گزینه (یا گزینه --raw) داده شود، آن خلاصه در stdout چاپ نمی‌شود.
تغییر حالت به گزینه‌های سبک قدیمی‌تر. لطفاً به عنوان اولین گزینه استفاده کنید.
دستگاه DEVICE برای کد عملیاتی داده‌شده (یعنی مقدار OP) که بایت اول یک دستور SCSI است، پرس‌وجو خواهد شد. در صورت تمایل، اگر مقدار SA داده شود، به عنوان کنش خدمت آن دستور SCSI استفاده خواهد شد. توجه داشته باشید که OP و OP,0 یکسان نیستند، زیرا SCSI اجازه می‌دهد کنش خدمت 0 باشد (اما نه در این دستور). مقادیر OP و SA ده‌دهی هستند مگر اینکه با "0x" پیشوند شده باشند یا یک پسوند "h" داشته باشند. مقدار OP باید در محدوده 0 تا 255 (0xff) شامل خود آن‌ها باشد. مقدار SA باید در محدوده 0 تا 65535 (0xffff) شامل خود آن‌ها باشد. هنگامی که این گزینه داده نشود، تمام دستورات SCSI در دسترس که توسط DEVICE پشتیبانی می‌شوند فهرست می‌گردند.
گزینه --rep-opts=RO در صورت ارائه، هرگونه تصمیم ضمنی در پاراگراف قبل در مورد تنظیم فیلد REPORTING OPTIONS در دستور RSOC را لغو می‌کند.
که در آن DT نوع دستگاه جانبی است. این گزینه همراه با --enumerate برای تمایز قائل شدن در مواردی که یک کد عملیاتی دستور (و شاید کنش خدمت) بین چندین نوع دستگاه مشترک است، استفاده می‌شود.
مقادیر عددی بین -1 و 31 (شامل خود آن‌ها) ممکن است استفاده شوند که در آن -1 بیانگر موارد موجود در SPC است. نام‌هایی مانند 'tape'، 'disk' و 'processor' نیز می‌توانند داده شوند.
این گزینه همچنین می‌تواند همراه با گزینه --no-inquiry برای جلوگیری از اجرای دستور INQUIRY توسط این ابزار استفاده شود، زیرا دلیل اصلی انجام آن یافتن نوع دستگاه جانبی DEVICE است.
پاسخ را به صورت باینری (در stdout) ارسال می‌کند مگر اینکه گزینه --inhex=FN نیز داده شده باشد. در آن حالت نام فایل ورودی (FN) به صورت باینری رمزگشایی می‌شود (و خروجی به صورت باینری نخواهد بود (اما ممکن است هگز باشد)).
بیت توصیف‌گر مهلت زمانی دستور (RCTD) را در cdb تنظیم می‌کند. پاسخ ممکن است حاوی توصیف‌گرهای مهلت زمانی دستور باشد یا نباشد. در صورت وجود، در خروجی نمایش داده می‌شوند. در صورت پشتیبانی، دو مقدار وجود دارد: مهلت زمانی اسمی دستور و مهلت زمانی توصیه‌شده دستور. واحد هر دو مقدار ثانیه است. مقدار صفر به این معنی است که هیچ مهلت زمانی نشان داده نشده و این موضوع در خروجی رمزگشایی‌شده مربوطه با "-" نمایش داده می‌شود.
بیت خواندن داده‌های پارامتر گسترش‌یافته (REPD) را در cdb گزارش توابع مدیریت وظیفه تنظیم می‌کند؛ ۱۶ بایت به جای ۴ بایت پیش‌فرض که در پاسخ انتظار می‌رود. این قابلیت در SPC-4 (نگارش ۲۶) اضافه شد.
مقدار RO مقدار فیلد گزینه‌های گزارش‌دهی است که در دستور RSOC (در cdb) قرار می‌گیرد. اگر این گزینه داده نشود و گزینه --opcode=OP[,SA] نیز داده نشده باشد، مقدار RO به طور پیش‌فرض 0 خواهد بود. تمام دستورات پشتیبانی‌شده زمانی که RO برابر با 0 باشد فهرست می‌شوند.
دستگاه DEVICE برای دستوری با کنش خدمت داده‌شده (یعنی مقدار SA) پرس‌وجو خواهد شد. در ترکیب با گزینه --opcode=OP استفاده می‌شود. اگر این گزینه داده نشود، اما --opcode=OP داده شده باشد و دستور مورد نظر دارای کنش خدمت باشد، مقدار 0 در نظر گرفته خواهد شد. مقدار SA ده‌دهی است و انتظار می‌رود در محدوده 0 تا 65535 (0xffff) شامل خود آن‌ها باشد.
فهرست کردن توابع مدیریت وظیفه پشتیبانی‌شده. این کار با دستور SCSI REPORT SUPPORTED TASK MANAGEMENT FUNCTIONS انجام می‌شود. هنگامی که این گزینه انتخاب شود، گزینه‌های --alpha، --opcode=OP، --rctd، --sa=SA و --unsorted نادیده گرفته می‌شوند.
هنگامی که تمام دستورات پشتیبانی‌شده فهرست می‌شوند، هیچ الزامی برای سرور دستگاه (یعنی DEVICE) برای مرتب‌سازی فهرست دستورات وجود ندارد. هنگامی که این گزینه داده شود، فهرست دستورات پشتیبانی‌شده به ترتیبی است که توسط DEVICE ارائه شده است. هنگامی که این گزینه داده نشود، دستورات پشتیبانی‌شده به صورت عددی مرتب می‌شوند (ابتدا بر اساس کد عملیاتی و سپس بر اساس کنش خدمت).
افزایش سطح پرحرفی خروجی. می‌تواند چندین بار استفاده شود.
رشته نسخه را چاپ کرده و سپس خارج می‌شود.

از نگارش ۸ استاندارد SPC-5، توابع مدیریت وظیفه شناخته‌شده عبارتند از: abort set، abort task set، clear ACA، clear task set، logical unit reset، query task، query asynchronous event، query task set و I_T nexus reset. در نگارش ۲۶ از SPC-4 توابع مدیریت وظیفه target reset و wakeup منسوخ شدند.

در سری ۲.۴ از هسته‌های لینوکس، DEVICE باید یک دستگاه عمومی SCSI (یعنی sg) باشد. در سری ۲.۶ دستگاه‌های بلوکی (مانند دیسک‌های SCSI و درایوهای DVD) نیز می‌توانند مشخص شوند. برای مثال "sg_opcodes /dev/sda" در هسته‌های سری ۲.۶ کار خواهد کرد.

وضعیت خروج sg_opcodes در صورت موفقیت‌آمیز بودن 0 است. در غیر این صورت به صفحه راهنمای sg3_utils(8) مراجعه کنید.

گزینه‌های موجود در این بخش تنها گزینه‌های در دسترس پیش از نسخه ۱.۲۳ از sg3_utils بودند. از آن زمان به بعد این ابزار به طور پیش‌فرض از گزینه‌های خط فرمان جدیدتر استفاده می‌کند که می‌توان با استفاده از --old (یا -O) به عنوان اولین گزینه، آن‌ها را لغو کرد. برای روشی دیگر جهت اجبار به استفاده از این گزینه‌های قدیمی خط فرمان، بخش متغیرهای محیطی را ببینید.

مرتب‌سازی الفبایی دستورات. معادل --alpha در توضیحات اصلی.
گزینه --compact را در بالا ببینید.
گزینه --enumerate را در بالا ببینید.
گزینه --hex را در بالا ببینید.
گزینه --mask را در بالا ببینید.
عدم چاپ خلاصه‌ای از پاسخ SCSI INQUIRY در stdout.
تغییر حالت به گزینه‌های سبک جدیدتر.
دستگاه DEVICE برای کد عملیاتی داده‌شده (یعنی OP) که بایت اول یک دستور SCSI است پرس‌وجو خواهد شد. مقدار OP هگزادسیمال است و انتظار می‌رود در محدوده 0 تا ff شامل خود آن‌ها باشد. هنگامی که این گزینه داده نشود، تمام دستورات SCSI در دسترس که توسط DEVICE پشتیبانی می‌شوند فهرست می‌گردند.
گزینه --pdt=DT را در بالا ببینید.
تنظیم بیت خواندن داده‌های پارامتر گسترش‌یافته (REPD) در cdb گزارش TMF. معادل --repd در توضیحات اصلی.
تنظیم بیت توصیف‌گر مهلت زمانی دستور گزارش (RCTD) در cdb. معادل --rctd در توضیحات اصلی.
دستگاه DEVICE برای دستوری با کنش خدمت داده‌شده (یعنی SA) پرس‌وجو خواهد شد. در ترکیب با گزینه -o=OP استفاده می‌شود. اگر این گزینه داده نشود، اما -o=OP داده شده باشد و دستور مورد نظر دارای کنش خدمت باشد، مقدار 0 در نظر گرفته خواهد شد. مقدار SA هگزادسیمال است و انتظار می‌رود در محدوده 0 تا ffff شامل خود آن‌ها باشد.
فهرست کردن توابع مدیریت وظیفه پشتیبانی‌شده. معادل --tmf در توضیحات اصلی.
خروجی دادن تمام دستورات پشتیبانی‌شده به ترتیبی که توسط DEVICE ارائه شده است. معادل --unsorted در توضیحات اصلی.
افزایش سطح پرحرفی خروجی. می‌تواند چندین بار استفاده شود.
رشته نسخه را چاپ کرده و سپس خارج می‌شود.
-?
نمایش پیام نحوه استفاده. نادیده گرفتن تمام پارامترهای دیگر.

مثال‌های این صفحه از نام‌های دستگاه در لینوکس استفاده می‌کنند. برای نام‌های دستگاه مناسب در سایر سیستم‌عامل‌های پشتیبانی‌شده به صفحه راهنمای sg3_utils(8) مراجعه کنید.

برای مشاهده اطلاعات مربوط به یک دستور خاص، کد عملیاتی آن را به گزینه '--op=' بدهید. ابتدا یک فراخوانی خط فرمان نشان داده شده و به دنبال آن یک پاسخ معمول آورده شده است:

 # sg_opcodes --op=93h /dev/sdb
Opcode=0x93
Command_name: Write same(16)
Command supported [conforming to SCSI standard]
Usage data: 93 e2 00 00 00 00 ff ff ff ff 00 00 ff ff 00 00

مثال بعدی توابع مدیریت وظیفه پشتیبانی‌شده را نشان می‌دهد:

   # sg_opcodes --tmf -n /dev/sdb
Task Management Functions supported by device:
    Abort task
    Abort task set
    Clear ACA
    Clear task set
    Logical unit reset
    Query task

گزینه Enumerate می‌تواند برای جستجوی نام یک دستور SCSI در غیاب دستگاهی که از آن دستور پشتیبانی می‌کند، استفاده شود. کد عملیاتی و کنش خدمت (در صورت نیاز) باید ارائه شوند:

 # sg_opcodes --enumerate --op=0x9b,0xa
SCSI command:
  Read buffer(16), read data from echo buffer

از نسخه ۱.۲۳ ابزار sg3_utils، متغیر محیطی SG3_UTILS_OLD_OPTS می‌تواند مشخص شود. در صورت وجود آن، این ابزار انتظار گزینه‌های قدیمی خط فرمان را خواهد داشت. بنابراین وجود این متغیر محیطی معادل استفاده از --old (یا -O) به عنوان اولین گزینه خط فرمان است.

نوشته‌شده توسط Douglas Gilbert.

گزارش باگ‌ها را به <dgilbert at interlog dot com> ارسال کنید.

Copyright © 2004-2023 Douglas Gilbert
این نرم‌افزار تحت مجوز GPL نگارش ۲ توزیع شده است. هیچ تضمینی وجود ندارد؛ حتی برای قابلیت فروش یا مناسب بودن برای یک هدف خاص.

sg_inq,sg3_utils_json(sg3_utils)

October 2023 sg3_utils-1.49