SG_TIMESTAMP(8) SG3_UTILS SG_TIMESTAMP(8)

sg_timestamp - گزارش یا تنظیم برچسب زمان در دستگاه SCSI

sg_timestamp [--elapsed] [--help] [--hex] [--milliseconds=MS] [--no-timestamp] [--origin] [--raw] [--readonly] [--seconds=SECS] [--srep] [--verbose] [--version] DEVICE

دستور REPORT TIMESTAMP یا SET TIMESTAMP اسکازی (SCSI) را به DEVICE ارسال می‌کند. این دستورات در پیش‌نویس استاندارد SPC-5 ویرایش ۷ (spc5r07.pdf) مشخص شده‌اند.

اگر یکی از گزینه‌های --milliseconds=MS یا --seconds=SECS مشخص شود (نمی‌توان هر دو را با هم مشخص کرد)، دستور SET TIMESTAMP ارسال می‌شود؛ در غیر این صورت، دستور REPORT TIMESTAMP فرستاده خواهد شد.

برچسب زمان به صورت تعداد میلی‌ثانیه‌های سپری‌شده از مبدأ زمانی (epoch) 1970-01-01 00:00:00 UTC از DEVICE فرستاده و دریافت می‌شود و در یک عدد صحیح بدون علامت ۴۸ بیتی نگهداری می‌گردد. همان مبدأ زمانی در ماشین‌های یونیکس نیز استفاده می‌شود، اما آن‌ها معمولاً تعداد ثانیه‌های سپری‌شده از آن مبدأ زمانی را نگه می‌دارند. دستور date یونیکس و به ویژه قالب "+%s" آن در تبدیل برچسب‌های زمانی به قالب‌های خواناتر برای انسان و بالعکس بسیار سودمند است. بخش «مثال‌ها» را در ادامه ببینید.

یک ابزار کمکی به نام sg_sat_datetime با گزینه‌های مشابه برای دسترسی یا تنظیم تاریخ و زمان در یک دستگاه ATA (معمولاً یک دیسک SATA) در دسترس است. ابزار sg_sat_datetime دستورات ATA را از طریق لایه ترجمه SCSI به ATA (موسوم به SAT) ارسال می‌کند.

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

فرض می‌کند که برچسب زمان در REPORT TIMESTAMP، زمان سپری‌شده از یک رویداد مانند چرخه راه‌اندازی مجدد برق (power cycle) یا بازنشانی سخت‌افزاری (hard reset) است و خروجی را به صورت '<n> days hh:mm:ss.xxx' قالب‌بندی می‌کند که در آن hh ساعت (00 تا 23)، mm دقیقه (00 تا 59)، ss ثانیه (00 تا 59) و xxx میلی‌ثانیه (000 تا 999) است. اگر تعداد روزها 0 باشد، عبارت '0 days' نمایش داده نمی‌شود مگر اینکه این گزینه دو بار یا بیشتر داده شود.
نمایش پیام راهنمای استفاده و سپس خروج.
پاسخ به REPORT TIMESTAMP را به صورت هگزادسیمال ASCII روی خروجی خطای استاندارد (stderr) چاپ می‌کند. پاسخ رمزگشایی نمی‌شود.
که در آن MS تعداد میلی‌ثانیه‌ها از مبدأ زمانی 1970-01-01 00:00:00 UTC است که باید با دستور SCSI SET TIMESTAMP روی DEVICE تنظیم شود.
هنگام فراخوانی REPORT TIMESTAMP، این گزینه از نمایش مقدار برچسب زمان (چه به ثانیه و چه به میلی‌ثانیه) جلوگیری می‌کند. این ممکن است در خلوت‌تر کردن خروجی هنگام تلاش برای رمزگشایی مبدأ برچسب زمان مفید باشد (گزینه --origin را ببینید).
داده‌های پارامتر بازگردانده‌شده از REPORT TIMESTAMP شامل یک فیلد «مبدأ برچسب زمان» (timestamp origin) است. هنگامی که این گزینه داده شود، این فیلد پیش از چاپ مقدار برچسب زمان رمزگشایی و نمایش داده می‌شود. عمل پیش‌فرض (یعنی زمانی که گزینه داده نشده باشد) عدم چاپ این فیلد رمزگشایی‌شده است.
کمیته T10 این فیلد را به عنوان «تازه‌ترین رویدادی که ساعت دستگاهِ گزارش‌شده را مقداردهی اولیه کرده است» تعریف می‌کند. مقدار 0 نشان می‌دهد که یک روشن شدن یا بازنشانی سخت‌افزاری ساعت را مقداردهی اولیه کرده است؛ مقدار 2 نشان می‌دهد که یک دستور SET TIMESTAMP ساعت را مقداردهی اولیه کرده و مقدار 3 نشان می‌دهد که روش دیگری ساعت را مقداردهی اولیه کرده است.
هنگامی که یک بار استفاده شود، یک رشته توصیفی چاپ می‌شود (در خطی پیش از مقدار برچسب زمان). هنگامی که دو بار استفاده شود، مقدار فیلد TIMESTAMP ORIGIN چاپ می‌شود (در مبنای ده، مقداری بین 0 تا 7 شامل هر دو). هنگامی که سه بار استفاده شود، خطی به فرم 'TIMESTAMP_ORIGIN=<value>' چاپ می‌شود.
پاسخ SCSI REPORT TIMESTAMP (یعنی بافر داده خروجی یا data-out) را به صورت باینری (در stdout) چاپ می‌کند. توجه داشته باشید که با تعیین این گزینه، گزینه‌های --origin و --srep نادیده گرفته می‌شوند. همچنین تمامی پیام‌های خطا و پیام‌های پرگویی به stderr ارسال می‌شوند.
دستگاه DEVICE را در حالت فقط‌خواندنی باز می‌کند. رفتار پیش‌فرض باز کردن DEVICE در حالت خواندن و نوشتن است.
که در آن SECS تعداد ثانیه‌ها از 1970-01-01 00:00:00 UTC است که باید با دستور SCSI SET TIMESTAMP روی DEVICE تنظیم شود. مقدار SECS پیش از استفاده در دستور SET TIMESTAMP در 1000 ضرب می‌شود.
تعداد ثانیه‌ها از 1970-01-01 00:00:00 UTC را گزارش می‌دهد. این کار با تقسیم مقدار بازگردانده‌شده توسط دستور SCSI REPORT TIMESTAMP بر 1000 انجام می‌شود.
افزایش سطح پرگویی (یعنی خروجی اشکال‌زدایی).
چاپ رشته نسخه برنامه و سپس خروج.

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

بیت‌های TCMOS و SCSIP در صفحه حالت Control extension (به sdparm مراجعه کنید) رفتار برچسب زمان نگهداری‌شده توسط یک DEVICE را تغییر می‌دهند.

در حال حاضر تنها پارامترهای «میزان بهره‌وری بر اساس تاریخ و زمان» (Utilization usage rate based on date and time) در صفحه لاگ Utilization (فایل sbc4r09.pdf) از برچسب‌های زمانی استفاده می‌کنند. به ابزار sg_logs مراجعه کنید. دستورات و صفحات اختصاصی سازنده نیز ممکن است از برچسب‌های زمانی استفاده کنند.

در ماشین‌های یونیکس (مانند لینوکس، FreeBSD و سولاریس) دستور date هنگام کار با برچسب‌های زمانی کاربردی است.

برای واکشی برچسب زمان از یک DEVICE و نمایش آن به شکلی خوانا برای انسان، می‌توان از موارد زیر استفاده کرد:


# sg_timestamp -S /dev/sdb
1448993950
# date --date=@1448993950
Tue Dec 1 13:19:10 EST 2015
# date -R --date="@1448993950"
Tue, 01 Dec 2015 13:19:10 -0500

دو دستور اخیر date شکل‌های مختلفی از یک تاریخ یکسان را نشان می‌دهند (یعنی ۱۴۴۸۹۹۳۹۵۰ ثانیه از 1970-01-01 00:00:00 UTC). دستورات sg_timestamp و date را می‌توان با استفاده از بک‌تیک ترکیب کرد:


# date -R --date=@`sg_timestamp -S /dev/sdc`
Wed, 16 Dec 2015 20:12:59 -0500

برای تنظیم برچسب زمان روی DEVICE به زمان تقریبی فعلی می‌توان از دستورات زیر استفاده کرد:


# date +%s
1448993955
# sg_timestamp --seconds=1448993955 /dev/sdb

آن دو خط دستور را می‌توان با استفاده از بک‌تیک در یک خط ترکیب کرد:


# sg_timestamp --seconds=`date +%s` /dev/sdb

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

گزارش باگ‌ها به <dgilbert at interlog dot com>.

حق نشر © 2015-2018 Douglas Gilbert
این نرم‌افزار تحت مجوز BSD-2-Clause توزیع می‌شود. هیچ ضمانتی وجود ندارد؛ حتی برای قابلیت فروش یا تناسب با یک هدف خاص.

sdparm(sdparm), sg_logs(sg3_utils), sg_sat_datetime(sg3_utils)

April 2018 sg3_utils-1.43