'\" t .\" Title: hwclock .\" Author: [see the "AUTHOR(S)" section] .\" Generator: Asciidoctor 2.0.26 .\" Date: 2026-05-18 .\" Manual: إدارة النظام .\" Source: util-linux 2.42.1 .\" Language: English .\" .TH "HWCLOCK" "8" "2026-05-18" "util\-linux 2.42.1" "إدارة النظام" .ie \n(.g .ds Aq \(aq .el .ds Aq ' .ss \n[.ss] 0 .nh .ad l .de URL \fI\\$2\fP <\\$1>\\$3 .. .als MTO URL .if \n[.g] \{\ . mso www.tmac . am URL . ad l . . . am MTO . ad l . . . LINKSTYLE blue R < > .\} .SH "الاسم" hwclock \- أداة لساعات الوقت .SH "موجز" .sp \fBhwclock\fP [\fIالوظيفة\fP] [\fIالخيار\fP.\|.\|.] .SH "الوصف" .sp \fBhwclock\fP هي أداة إدارة لساعات الوقت. يمكنها: عرض وقت ساعة العتاد؛ وضبط ساعة العتاد على وقت محدد؛ وضبط ساعة العتاد من ساعة النظام؛ وضبط ساعة النظام من ساعة العتاد؛ وتعويض انحراف ساعة العتاد؛ وتصحيح المقياس الزمني لساعة النظام؛ وضبط المنطقة الزمنية للنواة، والمقياس الزمني لميفاق وقت الشبكة (NTP)، والحقبة (لأجهزة Alpha فقط)؛ والتنبؤ بقيم ساعة العتاد المستقبلية بناءً على معدل انحرافها. .sp منذ الإصدار v2.26، أُجريت تغييرات مهمة على وظيفة \fB\-\-hctosys\fP والخيار \fB\-\-directisa\fP، وأُضيف خيار جديد \fB\-\-update\-drift\fP. انظر أوصافها المعنية أدناه. .SH "الوظائف" .sp الوظائف التالية متعارضة تبادليًا، يمكن إعطاء واحدة فقط في كل مرة. إذا لم يُعطَ أي منها، فإن المبدئي هو \fB\-\-show\fP. .sp \fB\-a, \-\-adjust\fP .RS 4 أضف أو اطرح وقتًا من ساعة العتاد لمراعاة الانحراف المنهجي منذ آخر مرة ضُبطت فيها الساعة أو عُدلت. انظر المناقشة أدناه، تحت عنوان \fBThe Adjust Function\fP. .RE .sp \fB\-\-getepoch\fP; \fB\-\-setepoch\fP .RS 4 هذه الوظائف مخصصة لحواسيب Alpha فقط، وهي متاحة فقط من خلال سائق RTC لنواة لينكس. .sp تُستخدم لقراءة وضبط قيمة حقبة ساعة عتاد النواة. الحقبة هي عدد السنين في التقويم الميلادي التي تشير إليها قيمة سنة الصفر في ساعة العتاد. على سبيل المثال، إذا ضبط BIOS الخاص بالحاسوب عداد السنين في ساعة العتاد ليحتوي على عدد السنين الكاملة منذ 1952، فيجب أن تكون قيمة حقبة ساعة عتاد النواة هي 1952. .sp تتطلب وظيفة \fB\-\-setepoch\fP استخدام خيار \fB\-\-epoch\fP لتحديد السنة. على سبيل المثال: .sp \fBhwclock \-\-setepoch \-\-epoch=1952\fP .sp يحاول سائق RTC تخمين قيمة الحقبة الصحيحة، لذا قد لا يكون ضبطها مطلوبًا. .sp تُستخدم قيمة الحقبة هذه كلما قرأت \fBhwclock\fP أو ضبطت ساعة العتاد على حاسوب Alpha. بالنسبة لحواسيب ISA، تستخدم النواة حقبة ساعة العتاد الثابتة 1900. .RE .sp \fB\-\-param\-get=\fP\fIالمعلمة\fP; \fB\-\-param\-set=\fP\fIالمعلمة\fP=\fI‎القيمة\fP .RS 4 اقرأ واضبط معلمة RTC. هذا مفيد، على سبيل المثال، لاسترداد ميزة RTC أو ضبط وضع تبديل النسخ الاحتياطي الخاص بـ RTC. .sp \fIالمعلمة\fP هي إما قيمة رقمية لمعلمة RTC (انظر \fIinclude/uapi/linux/rtc.h\fP الخاص بالنواة) أو اسم مستعار. انظر \fB\-\-help\fP لقائمة من الأسماء المستعارة الصحيحة. تُفسر \fIالمعلمة\fP و \fIالقيمة\fP، إذا سُبقت بـ 0x، على أنها قيم ست عشرية، وإلا فهي قيم عشرية. .RE .sp \fB\-\-param\-index\fP \fIرقم\fP .RS 4 اختر نسخة من نفس معامل RTC باستخدام رقم الفهرس الخاص به \fInumber\fP. القيمة المبدئية لـ \fInumber\fP هي 0. .RE .sp \fB\-\-predict\fP .RS 4 تنبأ بما ستقرأه ساعة العتاد في المستقبل بناءً على الوقت المعطى بواسطة خيار \fB\-\-date\fP والمعلومات الموجودة في \fI/etc/adjtime\fP. هذا مفيد، على سبيل المثال، لمراعاة الانحراف عند ضبط تنبيه (منبه) ساعة العتاد. انظر \fBrtcwake\fP(8). .sp لا تستخدم هذه الوظيفة إذا كان يجري تعديل ساعة العتاد بواسطة أي شيء آخر غير أمر \fBhwclock\fP لنظام التشغيل الحالي، مثل \*(Aqوضع 11 دقيقة\*(Aq أو من تمهيد مزدوج لنظام تشغيل آخر. .RE .sp \fB\-r\fP، \fB\-\-show\fP; \fB\-\-get\fP .RS 4 اقرأ ساعة العتاد واطبع وقتها إلى المخرج القياسي بتنسيق \fBISO 8601\fP. الوقت المعروض هو دائمًا بالتوقيت المحلي، حتى لو كنت تحتفظ بـ ساعة العتاد بتوقيت UTC. انظر خيار \fB\-\-localtime\fP. .sp عرض وقت ساعة العتاد هو المبدئي عندما لا تُحدد أي وظيفة. .sp تُطبق وظيفة \fB\-\-get\fP أيضًا تصحيح الانحراف على الوقت المقروء، بناءً على المعلومات الموجودة في \fI/etc/adjtime\fP. لا تستخدم هذه الوظيفة إذا كان يجري تعديل ساعة العتاد بواسطة أي شيء آخر غير أمر \fBhwclock\fP لنظام التشغيل الحالي، مثل \*(Aqوضع 11 دقيقة\*(Aq أو من تمهيد مزدوج لنظام تشغيل آخر. .RE .sp \fB\-s\fP، \fB\-\-hctosys\fP .RS 4 اضبط ساعة النظام من ساعة العتاد. يُعوَّض الوقت المقروء من ساعة العتاد لمراعاة الانحراف المنهجي قبل استخدامه لضبط ساعة النظام. انظر المناقشة أدناه، تحت عنوان \fBThe Adjust Function\fP. .sp يجب الإبقاء على ساعة النظام في مقياس توقيت UTC لتعمل تطبيقات الوقت والتاريخ بشكل صحيح بالاقتران مع المنطقة الزمنية التي ضُبطت للنظام. إذا كانت ساعة العتاد مُبقية بالتوقيت المحلي، فيجب إزاحة الوقت المقروء منها إلى مقياس توقيت UTC قبل استخدامه لضبط ساعة النظام. تقوم وظيفة \fB\-\-hctosys\fP بذلك بناءً على المعلومات الموجودة في ملف \fI/etc/adjtime\fP أو وسطاء سطر الأوامر \fB\-\-localtime\fP و \fB\-\-utc\fP. ملاحظة: لا يُجرى أي تعديل للتوقيت الصيفي. انظر المناقشة أدناه، تحت عنوان \fBLOCAL vs UTC\fP. .sp تحتفظ النواة أيضًا بقيمة للمنطقة الزمنية، وتضبطها وظيفة \fB\-\-hctosys\fP على المنطقة الزمنية التي ضُبطت للنظام. تُضبط المنطقة الزمنية للنظام بواسطة متغير البيئة \fBTZ\fP أو ملف \fI/etc/localtime\fP، كما يفسرهما \fBtzset\fP(3). حُقل \fItz_dsttime\fP المهمل لقيمة المنطقة الزمنية للنواة يُضبط على الصفر. (للحصول على تفاصيل حول ما كان يعنيه هذا الحقل، انظر \fBsettimeofday\fP(2).) .sp عند استخدامه في نص برمجي لبدء التشغيل، مما يجعل وظيفة \fB\-\-hctosys\fP المستدعِي الأول لـ \fBsettimeofday\fP(2) من التمهيد، فإنه سيضبط مقياس توقيت NTP \*(Aqوضع 11 دقيقة\*(Aq عبر متغير النواة \fIpersistent_clock_is_local\fP. إذا غُيّر ضبط المقياس الزمني لساعة العتاد، فإنه يلزم إعادة التشغيل لإبلاغ النواة. انظر المناقشة أدناه، تحت عنوان \fBAutomatic Hardware Clock Synchronization by the Kernel\fP. .sp هذه وظيفة جيدة للاستخدام في أحد نصوص بدء تشغيل النظام قبل وصل أنظمة الملفات للقراءة/الكتابة. .sp يجب عدم استخدام هذه الوظيفة أبداً على نظام قيد التشغيل. سيؤدي القفز في وقت النظام إلى حدوث مشكلات، مثل تلف الطوابع الزمنية لنظام الملفات. وأيضاً، إذا قام شيء ما بتغيير ساعة الأجهزة، مثل \*(Aqوضع 11 دقيقة\*(Aq الخاص بـ NTP، فإن \fB\-\-hctosys\fP سيضبط الوقت بشكل غير صحيح من خلال تضمين تعويض الانحراف. .sp يمكن تثبيط تعويض الانحراف عن طريق ضبط عامل الانحراف في \fI/etc/adjtime\fP على الصفر. سيكون هذا الإعداد مستمراً طالما لم يُستخدم خيار \fB\-\-update\-drift\fP مع \fB\-\-systohc\fP عند الإيقاف (أو في أي مكان آخر). وهناك طريقة أخرى لتثبيط هذا وهي استخدام خيار \fB\-\-noadjfile\fP عند استدعاء وظيفة \fB\-\-hctosys\fP. الطريقة الثالثة هي حذف ملف \fI/etc/adjtime\fP. عندها سيعود \fBHwclock\fP مبدئياً إلى استخدام المقياس الزمني UTC لساعة الأجهزة. إذا كانت ساعة الأجهزة تعمل بالتوقيت المحلي، فسيحتاج ذلك إلى تعريف في الملف. يمكن القيام بذلك عن طريق استدعاء \fBhwclock \-\-localtime \-\-adjust\fP؛ عندما لا يكون الملف موجوداً، لن يقوم هذا الأمر بضبط الساعة فعلياً، ولكنه سيُنشئ الملف مع ضبط الوقت المحلي، وعامل انحراف قيمته صفر. .sp من الحالات التي قد يُرغب فيها بتثبيط تصحيح انحراف \fBhwclock\fP هي عند الإقلاع المزدوج لعدة أنظمة تشغيل. فإذا قام نظام تشغيل آخر بتغيير قيمة ساعة الأجهزة أثناء توقف نسخة لينكس هذه، فعند تشغيل هذه النسخة مرة أخرى، سيكون تصحيح الانحراف المُطبّق غير صحيح. .sp ليعمل تصحيح انحراف \fBhwclock\fP بشكل صحيح، من الضروري ألا يقوم أي شيء بتغيير ساعة الأجهزة أثناء عدم تشغيل نسخة لينكس الخاصة بها. .RE .sp \fB\-\-set\fP .RS 4 يضبط ساعة الأجهزة على الوقت المعطى بواسطة خيار \fB\-\-date\fP، ويُحدّث الطوابع الزمنية في \fI/etc/adjtime\fP. مع خيار \fB\-\-update\-drift\fP، يُعاد أيضاً حساب عامل الانحراف. جربه دون الخيار إذا فشل \fB\-\-set\fP. راجع \fB\-\-update\-drift\fP أدناه. .RE .sp \fB\-\-systz\fP .RS 4 هذا بديل لوظيفة \fB\-\-hctosys\fP التي لا تقرأ ساعة الأجهزة ولا تضبط ساعة النظام؛ وبالتالي لا يوجد أي تصحيح للانحراف. الغرض منه هو استخدامه في سكربت بدء التشغيل على الأنظمة التي تحتوي على أنوية أعلى من الإصدار 2.6 حيث تعلم أن ساعة النظام قد ضُبطت من ساعة الأجهزة بواسطة النواة أثناء الإقلاع. .sp يقوم بالأمور التالية المفصلة أعلاه في وظيفة \fB\-\-hctosys\fP: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} يصحح المقياس الزمني لساعة النظام إلى UTC حسب الحاجة. ولكن بدلاً من تحقيق ذلك عن طريق ضبط ساعة النظام، يقوم \fBhwclock\fP ببساطة بإبلاغ النواة وهي تتولى التغيير. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} يضبط المقياس الزمني لـ \*(Aqوضع 11 دقيقة\*(Aq الخاص بـ NTP في النواة. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} يضبط المنطقة الزمنية للنواة. .RE .sp الأمران الأولان متاحان فقط عند الاستدعاء الأول لـ \fBsettimeofday\fP(2) بعد الإقلاع. وبالتالي فإن هذا الخيار يكون منطقياً فقط عند استخدامه في سكربت بدء التشغيل. إذا غُيّر تكوين المقياس الزمني لساعات الأجهزة، فسيلزم إعادة التشغيل لإبلاغ النواة. .RE .sp \fB\-w\fP، \fB\-\-systohc\fP .RS 4 يضبط ساعة الأجهزة من ساعة النظام، ويُحدّث الطوابع الزمنية في \fI/etc/adjtime\fP. مع خيار \fB\-\-update\-drift\fP، يُعاد أيضاً حساب عامل الانحراف. جربه دون الخيار إذا فشل \fB\-\-systohc\fP. راجع \fB\-\-update\-drift\fP أدناه. .RE .sp \fB\-\-vl\-read\fP، \fB\-\-vl\-clear\fP .RS 4 بعض أجهزة RTC قادرة على مراقبة جهد البطارية الاحتياطية وبالتالي توفر وسيلة للمستخدم لمعرفة وجوب استبدال البطارية. تسترجع وظيفة \fB\-\-vl\-read\fP معلومات انخفاض الجهد وتفك ترميز النتيجة إلى شكل مقروء للبشر. وتقوم وظيفة \fB\-\-vl\-clear\fP بإعادة تعيين معلومات انخفاض الجهد، وهو أمر ضروري لبعض أجهزة RTC بعد استبدال البطارية. .sp راجع \fIinclude/uapi/linux/rtc.h\fP في النواة للحصول على تفاصيل حول قطع المعلومات التي قد تُرجع. لاحظ أنه ليست كل أجهزة RTC تمتلك قدرة المراقبة هذه، ولا تدعم جميع التعريفات بالضرورة قراءة المعلومات. .RE .sp \fB\-h\fP، \fB\-\-help\fP .RS 4 اعرض نص المساعدة ثم اخرج. .RE .sp \fB\-V\fP، \fB\-\-version\fP .RS 4 اعرض الإصدار واخرج. .RE .SH "الخيارات" .sp \fB\-\-adjfile=\fP\fIاسم_الملف\fP .RS 4 يتجاوز مسار ملف \fI/etc/adjtime\fP المبدئي. .RE .sp \fB\-\-date=\fP\fIنص_التاريخ\fP .RS 4 يجب استخدام هذا الخيار مع وظائف \fB\-\-set\fP أو \fB\-\-predict\fP، وإلا فسيُتجاهل. .sp \fBhwclock \-\-set \-\-date=\*(Aq16:45\*(Aq\fP .sp \fBhwclock \-\-predict \-\-date=\*(Aq2525\-08\-14 07:11:05\*(Aq\fP .sp يجب أن يكون المعامل بالتوقيت المحلي، حتى لو كنت تحتفظ بساعة الأجهزة بتوقيت UTC. راجع خيار \fB\-\-localtime\fP. لذلك، يجب ألا يتضمن المعامل أي معلومات عن المنطقة الزمنية. كما يجب ألا يكون وقتاً نسبياً مثل "+5 دقائق"، لأن دقة \fBhwclock\fP تعتمد على الارتباط بين قيمة المعامل ووقت الضغط على مفتاح الإدخال. تُحذف أجزاء الثواني بصمت. هذا الخيار قادر على فهم العديد من تنسيقات الوقت والتاريخ، ولكن يجب مراعاة المعايير السابقة. .RE .sp \fB\-\-delay=\fP\fIثانية\fP .RS 4 يتجاوز هذا الخيار التأخير المبدئي المستخدم عند ضبط وقت الساعة. القيمة المبدئية هي \fB0.5\fP (500 ملي ثانية) لـ rtc_cmos؛ أما لأنواع RTC الأخرى فالتأخير هو \fB0\fP. إذا تعذر تحديد نوع RTC (من sysfs)، فإن التأخير يعود مبدئياً إلى \fB0.5\fP ليكون متوافقاً مع الإصدارات السابقة. .sp تعتمد القيمة المبدئية 500 ملي ثانية على ساعة العتاد (x86) المتوافقة مع MC146818A الشائعة الاستخدام. لا يمكن ضبط ساعة العتاد هذه إلا على وقت صحيح إضافة إلى نصف ثانية. الوقت الصحيح مطلوب لعدم وجود واجهة لجلب أو ضبط أجزاء من الثانية. نصف الثانية الإضافي سببه أن ساعة العتاد تُحدث الثانية التالية بدقة بعد 500 ملي ثانية من ضبط الوقت الجديد. للأسف، هذا السلوك محدد بالعتاد وفي بعض الحالات يلزَم تأخير مختلف. .RE .sp \fB\-D\fP، \fB\-\-debug\fP .RS 4 استخدم \fB\-\-verbose\fP. أُهمل الخيار \fB\-\-debug\fP وقد يُعاد استخدامه لغرض آخر أو يُزال في إصدار مستقبلي. .RE .sp \fB\-\-directisa\fP .RS 4 هذا الخيار ذو أهمية للحواسيب المتوافقة مع ISA في عائلتي x86 و x86_64. أما للحواسيب الأخرى، فليس له أي تأثير. يخبر هذا الخيار \fBhwclock\fP باستخدام تعليمات إدخال/إخراج صريحة للوصول إلى ساعة الحاسوب. دون هذا الخيار، سيستخدم \fBhwclock\fP ملف جهاز rtc، والذي يفترض أنه يُقاد بواسطة تعريف جهاز لينكس RTC. بدءاً من الإصدار v2.26 لن يُستخدم directisa آلياً عند عدم توفر تعريف rtc؛ فقد كان ذلك يسبب حالة غير آمنة قد تسمح لعمليتين بالوصول إلى ساعة الحاسوب في الوقت نفسه. ينبغي ألا يُستخدم الوصول المباشر للعتاد من مساحة المستخدم إلا للاختبار، واستكشاف الأخطاء وإصلاحها، وكملجأ أخير عند فشل كافة الطرق الأخرى. انظر الخيار \fB\-\-rtc\fP. .RE .sp \fB\-\-epoch=\fP\fIسنة\fP .RS 4 هذا الخيار مطلوب عند استخدام وظيفة \fB\-\-setepoch\fP. الحد الأدنى لقيمة \fIسنة\fP هو 1900. أما الحد الأقصى فيعتمد على النظام (\fBULONG_MAX \- 1\fP). .RE .sp \fB\-f\fP، \fB\-\-rtc=\fP\fIاسم_الملف\fP .RS 4 تجاوز اسم ملف جهاز rtc المبدئي لـ \fBhwclock\fP. وإلا فإنه سيستخدم أول ملف يُعثر عليه بهذا الترتيب: \fI/dev/rtc\fP، \fI/dev/rtc0\fP، \fI/dev/misc/rtc\fP. بالنسبة لـ \fBIA\-64:\fP \fI/dev/efirtc\fP \fI/dev/misc/efirtc\fP .RE .sp \fB\-l\fP، \fB\-\-localtime\fP; \fB\-u\fP، \fB\-\-utc\fP .RS 4 حدد أي مقياس زمني ضُبطت عليه ساعة الحاسوب. .sp قد تُضبط ساعة الحاسوب لاستخدام إما المقياس الزمني العالمي (UTC) أو المحلي، ولكن لا يوجد شيء في الساعة نفسها يوضح أي الخيارين مستخدم. يمنح الخياران \fB\-\-localtime\fP أو \fB\-\-utc\fP هذه المعلومات لأمر \fBhwclock\fP. إذا حددت الخيار الخاطئ (أو لم تحدد أياً منهما واتُخذ خيار مبدئي خاطئ)، فسيكون كل من ضبط وقراءة ساعة الحاسوب غير صحيحين. .sp إذا لم تحدد \fB\-\-utc\fP ولا \fB\-\-localtime\fP، فسيُستخدم الخيار الأخير الذي أُعطي مع وظيفة ضبط (\fB\-\-set\fP، أو \fB\-\-systohc\fP، أو \fB\-\-adjust\fP)، كما هو مسجل في \fI/etc/adjtime\fP. إذا لم يكن ملف adjtime موجوداً، فإن المبدئي هو UTC. .sp ملاحظة: قد تكون تغييرات التوقيت الصيفي غير متسقة عندما تُحفظ ساعة الحاسوب بالتوقيت المحلي. انظر المناقشة أدناه، تحت \fBLOCAL vs UTC\fP. .RE .sp \fB\-\-noadjfile\fP .RS 4 عطل التسهيلات التي يوفرها \fI/etc/adjtime\fP. لن يقرأ \fBhwclock\fP هذا الملف ولن يكتب فيه مع هذا الخيار. يجب تحديد إما \fB\-\-utc\fP أو \fB\-\-localtime\fP عند استخدام هذا الخيار. .RE .sp \fB\-\-test\fP .RS 4 لا تغير أي شيء فعلياً في النظام، أي الساعات أو \fI/etc/adjtime\fP (\fB\-\-verbose\fP متضمن ضمنياً مع هذا الخيار). .RE .sp \fB\-\-update\-drift\fP .RS 4 حدث عامل انزياح ساعة الحاسوب في \fI/etc/adjtime\fP. لا يُمكن استخدامه إلا مع \fB\-\-set\fP أو \fB\-\-systohc\fP. .sp يُشترط وجود فترة زمنية لا تقل عن أربع ساعات بين عمليات الضبط. وذلك لتجنب الحسابات غير الصالحة. كلما طالت الفترة، زادت دقة عامل الانزياح الناتج. .sp أُضيف هذا الخيار في v2.26، لأن من المعتاد أن تستدعي الأنظمة \fBhwclock \-\-systohc\fP عند الإيقاف؛ ومع السلوك القديم كان ذلك سيعيد حساب عامل الانزياح آلياً مما سبب مشاكل عدة: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} عند استخدام NTP مع نواة بوضع \*(Aq11 دقيقة\*(Aq، كان عامل الانزياح سيُسحق ليقترب من الصفر. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} لم يكن ليسمح باستخدام تصحيح الانزياح \*(Aqالبارد\*(Aq. في معظم التشكيلات، يعطي استخدام الانزياح \*(Aqالبارد\*(Aq نتائج أفضل. بارد تعني عندما يكون الحاسوب مطفأً، وهو ما قد يؤثر بشكل كبير على عامل الانزياح. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} تؤدي إعادة (حساب) عامل الانحراف عند كل إغلاق إلى نتائج غير مثالية. على سبيل المثال، إذا تسببت ظروف عابرة في جعل الحاسوب ساخنًا بشكل غير طبيعي فإن حساب عامل الانحراف سيكون خارج النطاق. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} زادت أوقات إغلاق النظام بشكل ملحوظ (اعتبارًا من الإصدار v2.31 عند عدم استخدام \fB\-\-update\-drift\fP لا تُقرأ RTC). .RE .sp يعد جعل \fBhwclock\fP يحسب عامل الانحراف نقطة بداية جيدة، ولكن للحصول على نتائج مثالية، فمن المرجح أن يحتاج الأمر إلى تعديله عن طريق التحرير المباشر لملف \fI/etc/adjtime\fP. بالنسبة لمعظم التشكيلات، بمجرد صياغة عامل الانحراف الأمثل للحاسوب، فلا ينبغي أن يحتاج إلى تغيير. لذلك، غُيّر السلوك القديم لحساب الانحراف آلياً وأصبح يتطلب الآن استخدام هذا الخيار. انظر المناقشة أدناه، تحت عنوان \fBThe Adjust Function\fP. .br يتطلب هذا الخيار قراءة ساعة العتاد قبل ضبطها. إذا تعذرت قراءتها، فسيؤدي هذا الخيار إلى فشل دوال الضبط. يمكن أن يحدث هذا، على سبيل المثال، إذا تعطلت ساعة العتاد بسبب انقطاع الطاقة. في هذه الحالة، يجب ضبط الساعة أولاً دون هذا الخيار. وبالرغم من عدم عمله، فإن عامل تصحيح الانحراف الناتج سيكون غير صالح على أي حال. .RE .sp \fB\-v\fP، \fB\-\-verbose\fP .RS 4 اعرض مزيداً من التفاصيل حول ما يفعله \fBhwclock\fP داخلياً. .RE .SH "ملاحظات" .SS "الساعات في نظام لينكس" .sp هناك نوعان من ساعات التاريخ والوقت: .sp \fBساعة العتاد:\fP هذه الساعة هي جهاز عتادي مستقل، مع نطاق طاقة خاص به (بطارية، مكثف، إلخ)، يعمل عندما يكون الحاسوب مطفأً، أو حتى مفصولاً عن الكهرباء. .sp في الأنظمة المتوافقة مع ISA، حُددت هذه الساعة كجزء من معيار ISA. يمكن لبرنامج تحكم أن يقرأ أو يضبط هذه الساعة فقط لثانية كاملة، ولكن يمكنه أيضاً كشف حواف تكات الساعة البالغة 1 ثانية، لذا فإن للساعة فعلياً دقة لانهائية افتراضياً. .sp تُسمى هذه الساعة عادةً ساعة العتاد، وساعة الوقت الحقيقي (RTC)، وساعة BIOS، وساعة CMOS. صِيغ مصطلح Hardware Clock، بصيغته الكبيرة، لاستخدامه بواسطة \fBhwclock\fP. تشير إليها نواة لينكس أيضاً باسم الساعة المستمرة. .sp تمتلك بعض الأنظمة غير المتوافقة مع ISA بضع ساعات وقت حقيقي، واحدة منها فقط لها نطاق طاقة خاص بها. قد تُستخدم رقاقة ساعة I2C أو SPI خارجية منخفضة الطاقة جداً مع بطارية احتياطية كـ ساعة عتاد لتهيئة ساعة وقت حقيقي مدمجة أكثر وظيفية تُستخدم لمعظم الأغراض الأخرى. .sp \fBساعة النظام:\fP هذه الساعة هي جزء من نواة لينكس وتُقاد بواسطة مقاطعة الموقّت. (في أجهزة ISA، تعد مقاطعة الموقّت جزءاً من معيار ISA). لها معنى فقط أثناء تشغيل لينكس على الحاسوب. وقت النظام هو عدد الثواني منذ 00:00:00 في 1 يناير 1970 UTC (أو باختصار أكثر، عدد الثواني منذ 1969 UTC). وقت النظام ليس عدداً صحيحاً، بل له دقة لانهائية افتراضياً. .sp وقت النظام هو الوقت الأهم. الغرض الأساسي لساعة العتاد هو حفظ الوقت عندما لا يكون لينكس قيد التشغيل بحيث يمكن تهيئة ساعة النظام منها عند الإقلاع. لاحظ أنه في DOS، الذي صُمم ISA من أجله، كانت ساعة العتاد هي ساعة الوقت الحقيقي الوحيدة. .sp من المهم ألا يحتوي وقت النظام على أي انقطاعات مثلما سيحدث إذا استُخدم برنامج \fBdate\fP(1) لضبطه أثناء تشغيل النظام. ومع ذلك، يمكنك القيام بما تريد بساعة العتاد أثناء تشغيل النظام، وفي المرة القادمة التي يبدأ فيها تشغيل لينكس، سيفعل ذلك بالوقت المعدل من ساعة العتاد. ملاحظة: حالياً لا يمكن القيام بذلك في معظم الأنظمة لأن \fBhwclock \-\-systohc\fP يُستدعى عند الإيقاف. .sp يُضبط النطاق الزمني لنواة لينكس بواسطة \fBhwclock\fP. ولكن لا تنخدع \- لا أحد تقريباً يهتم بالنطاق الزمني الذي تعتقد النواة أنها فيه. بدلاً من ذلك، تستخدم البرامج التي تهتم بالنطاق الزمني (ربما لأنها تريد عرض توقيت محلي لك) دائماً تقريباً طريقة أكثر تقليدية لتحديد النطاق الزمني: حيث تستخدم متغير البيئة \fBTZ\fP أو ملف \fI/etc/localtime\fP، كما هو موضح في صفحة الدليل لـ \fBtzset\fP(3). ومع ذلك، تستخدم بعض البرامج والأجزاء الهامشية من نواة لينكس مثل أنظمة الملفات قيمة النطاق الزمني للنواة. مثال على ذلك هو نظام ملفات vfat. إذا كانت قيمة النطاق الزمني للنواة خاطئة، فسيسجل نظام ملفات vfat ويضبط طوابع زمنية خاطئة على الملفات. مثال آخر هو وضع \*(Aq11 دقيقة\*(Aq لـ NTP في النواة. إذا كانت قيمة النطاق الزمني للنواة و/أو متغير \fIpersistent_clock_is_local\fP خاطئة، فستُضبط ساعة العتاد بشكل غير صحيح بواسطة \*(Aqوضع 11 دقيقة\*(Aq. انظر المناقشة أدناه، تحت \fBمزامنة ساعة العتاد الآلية بواسطة النواة\fP. .sp يضبط \fBhwclock\fP النطاق الزمني للنواة على القيمة المشار إليها بواسطة \fBTZ\fP أو \fI/etc/localtime\fP باستخدام وظائف \fB\-\-hctosys\fP أو \fB\-\-systz\fP. .sp تتكون قيمة النطاق الزمني للنواة فعلياً من جزأين: 1) حقل tz_minuteswest يوضح عدد دقائق تأخر التوقيت المحلي (غير المعدل للتوقيت الصيفي) عن UTC، و 2) حقل tz_dsttime يوضح نوع اتفاقية التوقيت الصيفي (DST) المعمول بها في المنطقة في الوقت الحالي. هذا الحقل الثاني لا يُستخدم تحت لينكس ويكون دائماً صفراً. انظر أيضاً \fBsettimeofday\fP(2). .SS "طرق الوصول إلى ساعة العتاد" .sp يستخدم \fBhwclock\fP طرقاً مختلفة عديدة لجلب وقيم ساعة العتاد وضبطها. الطريقة الأكثر اعتيادية هي إجراء إدخال/إخراج (I/O) إلى ملف جهاز rtc الخاص، والذي يُفترض أنه يُقاد بواسطة تعريف جهاز rtc. أيضاً، أنظمة لينكس التي تستخدم إطار عمل rtc مع udev، قادرة على دعم عدة ساعات عتاد. قد يؤدي هذا إلى الحاجة لتجاوز جهاز rtc المبدئي عبر تحديد واحد باستخدام خيار \fB\-\-rtc\fP. .sp ومع ذلك، هذه الطريقة ليست متاحة دائماً لأن الأنظمة الأقدم لا تمتلك تعريف rtc. في هذه الأنظمة، تعتمد طريقة الوصول إلى ساعة العتاد على عتاد النظام. .sp في الأنظمة المتوافقة مع ISA، يمكن لـ \fBhwclock\fP الوصول مباشرة إلى سجلات "ذاكرة CMOS" التي تشكل الساعة، عن طريق إجراء إدخال/إخراج إلى المنافذ 0x70 و 0x71. يقوم بذلك باستخدام تعليمات إدخال/إخراج فعلية وبالتالي لا يمكنه فعل ذلك إلا إذا وُجه بمعرف مستخدم له صلاحيات المستخدم الخارق. يمكن استخدام هذه الطريقة بتحديد خيار \fB\-\-directisa\fP. .sp هذه طريقة سيئة حقاً للوصول إلى الساعة، لجميع الأسباب التي تمنع برامج مساحة المستخدم عموماً من إجراء إدخال/إخراج مباشر وتعطيل المقاطعات. يوفر \fBhwclock\fP هذه الطريقة للاختبار، واستكشاف الأخطاء وإصلاحها، ولأنها قد تكون الطريقة الوحيدة المتاحة في أنظمة ISA التي لا تملك تعريف جهاز rtc يعمل. .SS "وظيفة الضبط" .sp عادةً ما تكون ساعة العتاد غير دقيقة للغاية. ومع ذلك، فإن الكثير من عدم دقتها يمكن التنبؤ به تماماً \- فهي تكتسب أو تفقد نفس القدر من الوقت كل يوم. يسمى هذا الانجراف المنهجي. تتيح لك وظيفة \fB\-\-adjust\fP في \fBhwclock\fP تطبيق تصحيحات الانجراف المنهجي على ساعة العتاد. .sp تعمل الآلية كالتالي: يحتفظ \fBhwclock\fP بملف، \fI/etc/adjtime\fP، يحفظ بعض المعلومات التاريخية. يسمى هذا ملف adjtime. .sp افترض أنك بدأت دون ملف adjtime. أصدرت أمر \fBhwclock \-\-set\fP لضبط ساعة الحاسوب على الوقت الحالي الحقيقي. ينشئ \fBhwclock\fP ملف adjtime ويسجل فيه الوقت الحالي كآخر وقت عويرت فيه الساعة. بعد خمسة أيام، تقدمت الساعة 10 ثوانٍ، لذا أصدرت أمر \fBhwclock \-\-set \-\-update\-drift\fP لإعادتها 10 ثوانٍ للخلف. يحدث \fBhwclock\fP ملف adjtime ليظهر الوقت الحالي كآخر وقت عويرت فيه الساعة، ويسجل ثانيتين يومياً كمعدل انزياح منتظم. تمر 24 ساعة، ثم تصدر أمر \fBhwclock \-\-adjust\fP. يراجع \fBhwclock\fP ملف adjtime ويرى أن الساعة تتقدم ثانيتين يومياً عندما تُترك وحدها وأنها تُرِكت كذلك ليوم واحد بالضبط. لذا يطرح ثانيتين من ساعة الحاسوب. ثم يسجل الوقت الحالي كآخر وقت ضُبطت فيه الساعة. تمر 24 ساعة أخرى وتصدر أمر \fBhwclock \-\-adjust\fP آخر. يقوم \fBhwclock\fP بالشيء نفسه: يطرح ثانيتين ويحدث ملف adjtime بالوقت الحالي كآخر وقت ضُبطت فيه الساعة. .sp عند استخدام خيار \fB\-\-update\-drift\fP مع \fB\-\-set\fP أو \fB\-\-systohc\fP، يُعاد حساب معدل الانجراف المنتظم بمقارنة وقت ساعة العتاد الحالي المصحح كلياً مع الوقت الجديد المضبوط، ومن ذلك يُشتق معدل الانجراف لمدة 24 ساعة بناءً على آخر طابع زمني جُورِيَ من ملف adjtime. يُحفظ عامل الانجراف المحدث هذا في \fI/etc/adjtime\fP. .sp يتسلل مقدار ضئيل من الخطأ عند ضبط ساعة العتاد، لذا يمتنع \fB\-\-adjust\fP عن إجراء أي تعديل يقل عن ثانية واحدة. لاحقاً، عند طلب تعديل مرة أخرى، سيكون الانجراف المتراكم أكثر من ثانية واحدة وسيقوم \fB\-\-adjust\fP بإجراء التعديل بما في ذلك أي مقدار كسري. .sp يستخدم \fBhwclock \-\-hctosys\fP أيضاً بيانات ملف adjtime لتعويض القيمة المقروءة من ساعة العتاد قبل استخدامها لضبط ساعة النظام. لا يشترك هذا الخيار في قيد الثانية الواحدة الخاص بـ \fB\-\-adjust\fP، وسيقوم بتصحيح قيم الانجراف التي تقل عن ثانية فوراً. لا يغير هذا الخيار وقت ساعة العتاد ولا ملف adjtime. قد يغني هذا عن الحاجة لاستخدام \fB\-\-adjust\fP، ما لم يحتاج شيء آخر في النظام إلى تعويض ساعة العتاد. .SS "ملف Adjtime" .sp رغم تسميته لغرضه التاريخي المتمثل في التحكم في التعديلات فقط، إلا أنه يحتوي فعلياً على معلومات أخرى يستخدمها \fBhwclock\fP من استدعاء لآخر. .sp تنسيق ملف adjtime هو، بترميز ASCII: .sp السطر 1: ثلاثة أرقام تفصل بينها فراغات: 1) معدل الانجراف المنتظم بالثواني في اليوم، كسر عشري؛ 2) عدد الثواني الناتج منذ عام 1969 UTC لآخر تعديل أو معايرة، عدد صحيح عشري؛ 3) صفر (للتوافق مع \fBclock\fP(8)) ككسر عشري. .sp السطر 2: رقم واحد: عدد الثواني الناتج منذ 1969 UTC لأحدث معايرة. صفر إذا لم تكن هناك معايرة بعد أو إذا عُرف أن أي معايرة سابقة أصبحت لاغية (على سبيل المثال، لأنه وُجد أن ساعة العتاد، منذ تلك المعايرة، لا تحتوي على وقت صالح). هذا عدد صحيح عشري. .sp السطر 3: "UTC" أو "LOCAL". يوضح ما إذا كانت ساعة العتاد مضبوطة على التوقيت العالمي المنسق أو الوقت المحلي. يمكنك دائماً تجاوز هذه القيمة باستخدام الخيارات في سطر أوامر \fBhwclock\fP. .sp يمكنك استخدام ملف adjtime كان قد استُخدم سابقاً مع برنامج \fBclock\fP(8) مع \fBhwclock\fP. .SS "مزامنة ساعة العتاد الآلية بواسطة النواة" .sp يجب أن تكون على دراية بطريقة أخرى لمزامنة ساعة العتاد في بعض الأنظمة. تمتلك نواة لينكس وضعاً تقوم فيه بنسخ وقت النظام إلى ساعة العتاد كل 11 دقيقة. هذا الوضع هو خيار وقت التصريف، لذا لن تمتلك جميع النوى هذه القدرة. هذا وضع جيد للاستخدام عند استعمال شيء متطور مثل NTP للحفاظ على مزامنة ساعة النظام. (NTP هو وسيلة للحفاظ على مزامنة وقت النظام إما مع خادم وقت في مكان ما على الشبكة أو مع ساعة راديو متصلة بحاسوبك. انظر RFC 1305.) .sp إذا صُرِفت النواة مع خيار \*(Aqوضع الـ 11 دقيقة\*(Aq، فسيكون نشطاً عندما يكون انضباط ساعة النواة في حالة مزامنة. في هذه الحالة، تكون البتة 6 (البتة المضبوطة في القناع 0x0040) لمتغير \fItime_status\fP الخاص بالنواة غير مضبوطة. تظهر هذه القيمة في سطر \*(Aqstatus\*(Aq لأوامر \fBadjtimex \-\-print\fP أو \fBntptime\fP. .sp يتطلب الأمر تأثيراً خارجياً، مثل عفريت NTP، لوضع انضباط ساعة النواة في حالة مزامنة، وبالتالي تشغيل \*(Aqوضع الـ 11 دقيقة\*(Aq. يمكن إيقافه عن طريق تشغيل أي شيء يضبط ساعة النظام بالطريقة القديمة، بما في ذلك \fBhwclock \-\-hctosys\fP. ومع ذلك، إذا كان عفريت NTP لا يزال قيد التشغيل، فسيعيد تشغيل \*(Aqوضع الـ 11 دقيقة\*(Aq مرة أخرى في المرة القادمة التي يزامن فيها ساعة النظام. .sp إذا كان نظامك يعمل مع تشغيل \*(Aqوضع الـ 11 دقيقة\*(Aq، فقد يحتاج إلى استخدام إما \fB\-\-hctosys\fP أو \fB\-\-systz\fP في برنامج بدء التشغيل، خاصة إذا كانت ساعة العتاد مضبوطة لاستخدام المقياس الزمني المحلي. ما لم تُخطر النواة بالمقياس الزمني الذي تستخدمه ساعة العتاد، فقد تفسده بمقياس خاطئ. تستخدم النواة UTC مبدئياً. .sp يقوم أول أمر في مساحة المستخدم لضبط ساعة النظام بإخطار النواة بالمقياس الزمني الذي تستخدمه ساعة العتاد. يحدث هذا عبر متغير النواة \fIpersistent_clock_is_local\fP. إذا كان \fB\-\-hctosys\fP أو \fB\-\-systz\fP هو الأول، فإنه سيضبط هذا المتغير وفقاً لملف adjtime أو وسيط سطر الأوامر المناسب. لاحظ أنه عند استخدام هذه القدرة وتغيير ضبط المقياس الزمني لساعة العتاد، يلزم إعادة التشغيل لإخطار النواة. .sp ينبغي ألا يُستخدم \fBhwclock \-\-adjust\fP مع \*(Aqوضع الـ 11 دقيقة\*(Aq لـ NTP. .SS "قيمة القرن لساعة حاسوب ISA" .sp يوجد نوع من المعايير الذي يحدد البايت 50 في ذاكرة CMOS على حواسيب ISA كمؤشر للقرن الحالي. لا يستخدم \fBhwclock\fP هذا البايت ولا يضبطه لأن هناك حواسيب لا تعرف البايت بتلك الطريقة، ولأنه ليس ضرورياً حقاً على أي حال، بما أن سنة القرن تقوم بمهمة جيدة في الإشارة إلى أي قرن نحن فيه. .sp إذا كان لديك استخدام حقيقي معتبر لبايت القرن في CMOS، فاتصل بمسؤول صيانة \fBhwclock\fP؛ فقد يكون من المناسب إضافة خيار لذلك. .sp لاحظ أن هذا القسم وثيق الصلة فقط عند استخدام طريقة "ISA المباشرة" للوصول إلى ساعة العتاد. يوفر ACPI طريقة قياسية للوصول إلى قيم القرن، عندما يدعمها العتاد. .SH "ضبط التاريخ والوقت" .SS "الحفاظ على الوقت دون مزامنة خارجية" .sp يعتمد هذا النقاش على الشروط التالية: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} لا يوجد شيء قيد التشغيل يغير ساعات التاريخ والوقت، مثل عفريت NTP أو مهمة cron." .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} النطاق الزمني للنظام مضبوط للوقت المحلي الصحيح. انظر أدناه، تحت \fBPOSIX vs \*(AqRIGHT\*(Aq\fP. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} في وقت مبكر أثناء بدء التشغيل، تُستدعى الأوامر التالية بهذا الترتيب: \fBadjtimex \-\-tick\fP \fIقيمة\fP \fB\-\-frequency\fP \fIقيمة\fP \fBhwclock \-\-hctosys\fP .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} أثناء إيقاف التشغيل، يُستدعى ما يلي: \fBhwclock \-\-systohc\fP .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} الأنظمة التي لا تتوفر فيها \fBadjtimex\fP يمكنها استخدام \fBntptime\fP. .RE .RE .sp سواء كنت تحافظ على دقة الوقت باستخدام عفريت NTP أم لا، فمن المنطقي ضبط النظام للحفاظ على تاريخ ووقت جيدين بشكل معقول من تلقاء نفسه. .sp الخطوة الأولى لتحقيق ذلك هي الحصول على فهم واضح للصورة الكبيرة. يوجد جهازان عتاديان منفصلان تماماً يعملان بسرعتهما الخاصة وينجرفان عن الوقت \*(Aqالصحيح\*(Aq بمعدلاتهما الخاصة. تختلف طرق وبرمجيات تصحيح الانجراف لكل منهما. ومع ذلك، ضُبطت معظم الأنظمة لتبادل القيم بين هاتين الساعتين عند بدء التشغيل وإيقافه. الآن، تُنقل أخطاء ضبط الوقت لكل جهاز ذهاباً وإياباً بينهما. إن محاولة ضبط تصحيح الانجراف لأحدهما فقط ستؤدي إلى تراكب انجراف الآخر عليه. .sp يمكن تجنب هذه المشكلة عند ضبط تصحيح الانجراف لساعة النظام ببساطة عن طريق عدم إيقاف تشغيل الجهاز. هذا، بالإضافة إلى حقيقة أن كل دقة \fBhwclock\fP (بما في ذلك حساب عوامل الانجراف) تعتمد على كون معدل ساعة النظام صحيحاً، يعني أنه يجب ضبط ساعة النظام أولاً. .sp يُصحح انجراف ساعة النظام باستخدام خياري \fB\-\-tick\fP و \fB\-\-frequency\fP لأمر \fBadjtimex\fP(8). يعمل هذان الخياران معاً: tick هو التعديل التقريبي و frequency هو التعديل الدقيق. (بالنسبة للأنظمة التي لا تحتوي على حزمة \fBadjtimex\fP، يمكن استخدام \fBntptime \-f\fP \fIppm\fP بدلاً من ذلك.) .sp تحاول بعض توزيعات لينكس حساب انزياح ساعة النظام آليًّا باستخدام عملية المقارنة الخاصة بالأداة \fBadjtimex\fP. إن محاولة تصحيح ساعة مُنزاحة باستخدام ساعة مُنزاحة أخرى كمرجع تشبه كلبًا يحاول مطاردة ذيله؛ قد يتحقق النجاح في النهاية، ولكن يسبقه مجهود كبير وإحباط شديد. قد يقدم هذا الأتمتة تحسنًا مقارنة بعدم الضبط، ولكن توقع نتائج مثلى سيكون خطأً. الخيار الأفضل للضبط اليدوي هو خيارات \fB\-\-log\fP الخاصة بالأداة \fBadjtimex\fP. .sp قد يكون من الأكثر فاعلية تتبع انزياح ساعة النظام ببساطة باستخدام \fBsntp\fP، أو الأمر \fBdate \-Ins\fP وساعة دقيقة، ثم حساب التصحيح يدويًّا. .sp بعد ضبط قيم التكة (tick) والتردد، استمر في اختبار وتحسين التعديلات حتى تحافظ ساعة النظام على وقت جيد. راجع \fBadjtimex\fP(2) لمزيد من المعلومات وللمثال الذي يوضح حسابات الانزياح اليدوية. .sp بمجرد أن تعمل ساعة النظام بسلاسة، انتقل إلى ساعة العتاد. .sp كقاعدة عامة، سيعمل الانزياح البارد (cold drift) بشكل أفضل في معظم حالات الاستخدام. يجب أن ينطبق هذا حتى على الأجهزة التي تعمل على مدار الساعة والتي تقتصر فترات توقفها على إعادة التشغيل. في هذه الحالة، لا تشكل قيمة معامل الانزياح فرقًا كبيرًا. ولكن في الحالات النادرة التي يُغلق فيها الحاسوب لفترة طويلة، فإن الانزياح البارد سيعطي نتائج أفضل. .sp \fBخطوات حساب الانزياح البارد:\fP .sp 1 .RS 4 \fBتأكد من عدم إطلاق عفريت NTP عند بدء التشغيل.\fP .RE .sp 2 .RS 4 يجب أن يكون وقت \fIساعة النظام\fP صحيحًا عند الإغلاق! .RE .sp 3 .RS 4 أغلق النظام. .RE .sp 4 .RS 4 اترك فترة طويلة تمر دون تغيير ساعة العتاد. .RE .sp 5 .RS 4 ابدأ تشغيل النظام. .RE .sp 6 .RS 4 استخدم \fBhwclock\fP فورًا لضبط الوقت الصحيح، مع إضافة خيار \fB\-\-update\-drift\fP. .RE .sp ملاحظة: إذا استُخدم خيار \fB\-\-systohc\fP في الخطوة 6، فيجب ضبط ساعة النظام بشكل صحيح (الخطوة 6أ) قبل القيام بذلك مباشرة. .sp يعد جعل \fBhwclock\fP يحسب معامل الانزياح نقطة بداية جيدة، ولكن للوصول إلى نتائج مثلى سيتعين غالبًا تعديله عبر تحرير ملف \fI/etc/adjtime\fP مباشرة. استمر في اختبار وتحسين معامل الانزياح حتى تُصحح ساعة العتاد بشكل سليم عند بدء التشغيل. للتحقق من ذلك، تأكد أولاً من أن وقت النظام صحيح قبل الإغلاق، ثم استخدم \fBsntp\fP، أو الأمر \fBdate \-Ins\fP وساعة دقيقة فورًا بعد بدء التشغيل. .SS "الوقت المحلي مقابل التوقيت العالمي (UTC)" .sp يؤدي الاحتفاظ بساعة الحاسوب بمقياس زمني محلي إلى نتائج غير متسقة في التوقيت الصيفي: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} إذا كان لينكس قيد التشغيل أثناء تغيير التوقيت الصيفي، فسيُعدل الوقت المكتوب في ساعة العتاد ليناسب التغيير. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} إذا لم يكن لينكس قيد التشغيل أثناء تغيير التوقيت الصيفي، فلن يُعدل الوقت المقروء من ساعة العتاد ليناسب التغيير. .RE .sp تحتفظ ساعة العتاد في الأنظمة المتوافقة مع ISA بالتاريخ والوقت فقط، وليس لديها مفهوم للمناطق الزمنية أو التوقيت الصيفي. لذلك، عندما يتم إخبار \fBhwclock\fP بأنها بالتوقيت المحلي، فإنها تفترض أنها في التوقيت المحلي "الصحيح" ولا تجري أي تعديلات على الوقت المقروء منها. .sp يتعامل لينكس مع تغييرات التوقيت الصيفي بشفافية فقط عندما تُحفظ ساعة العتاد بمقياس توقيت UTC. هذا الأمر يسير على مديري النظام لأن \fBhwclock\fP تستخدم التوقيت المحلي في مخرجاتها وكوسيط لخيار \fB\-\-date\fP. .sp صُممت أنظمة POSIX، مثل لينكس، لتعمل ساعة النظام فيها بمقياس توقت UTC. والغرض من ساعة العتاد هو تهيئة ساعة النظام، لذا فإن إبقاءها في UTC منطقي أيضًا. .sp ومع ذلك، يحاول لينكس التكيف مع وجود ساعة العتاد في مقياس التوقيت المحلي. هذا بشكل أساسي من أجل الإقلاع المزدوج مع إصدارات MS Windows القديمة. بدءًا من Windows 7 فصاعدًا، من المفترض أن يعمل مفتاح السجل RealTimeIsUniversal بشكل صحيح بحيث يمكن الاحتفاظ بساعة العتاد بنظام UTC. .SS "POSIX مقابل \*(AqRIGHT\*(Aq" .sp سيكون النقاش حول تهيئة التاريخ والوقت ناقصاً دون معالجة النطاقات الزمنية، وهذا مغطى بشكل جيد غالباً في \fBtzset\fP(3). أحد المجالات التي يبدو أنها لا تملك وثائق هو دليل \*(Aqright\*(Aq في قاعدة بيانات النطاق الزمني، والتي تسمى أحياناً tz أو zoneinfo. .sp يوجد قاعدتا بيانات منفصلتان في نظام zoneinfo، هما posix و \*(Aqright\*(Aq. تشمل \*(Aqright\*(Aq (المسماة الآن zoneinfo\-leaps) الثواني الكبيسة بينما لا تشملها posix. لاستخدام قاعدة بيانات \*(Aqright\*(Aq، يجب ضبط ساعة النظام على (UTC + الثواني الكبيسة)، وهو ما يعادل (TAI \- 10). يتيح ذلك حساب عدد الثواني الدقيق بين تاريخين يتقاطعان مع عهد ثانية كبيسة. ثم تُحوّل ساعة النظام إلى الوقت المدني الصحيح، بما في ذلك UTC، باستخدام ملفات المنطقة الزمنية \*(Aqright\*(Aq التي تطرح الثواني الكبيسة. ملاحظة: يُعد هذا الضبط تجريبيًّا ومن المعروف وجود مشكلات فيه. .sp بغرض ضبط نظام لاستخدام قاعدة بيانات معينة، يجب نسخ جميع الملفات الموجودة في دليلها إلى جذر \fI/usr/share/zoneinfo\fP. لا تُستخدم الملفات مباشرةً أبداً من الأدلة الفرعية posix أو \*(Aqright\*(Aq، على سبيل المثال، TZ=\*(Aq\fIright/Europe/Dublin\fP\*(Aq. أصبحت هذه العادة شائعة جداً لدرجة أن مشروع zoneinfo الرئيسي أعاد هيكلة شجرة ملفات النظام بنقل الأدلة الفرعية posix و \*(Aqright\*(Aq خارج دليل zoneinfo وإلى أدلة شقيقة: .sp \fI/usr/share/zoneinfo\fP، \fI/usr/share/zoneinfo\-posix\fP، \fI/usr/share/zoneinfo\-leaps\fP .sp لسوء الحظ، تقوم بعض توزيعات لينكس بتغييرها مرة أخرى إلى هيكل الشجرة القديم في حزمها. لذا لا تزال مشكلة وصول مديري النظام إلى الدليل الفرعي \*(Aqright\*(Aq قائمة. يؤدي هذا إلى ضبط النطاق الزمني للنظام ليشمل الثواني الكبيسة بينما لا تزال قاعدة بيانات zoneinfo مضبوطة لاستبعادها. ومن ثم عندما يحتاج تطبيق مثل World Clock إلى ملف النطاق الزمني لـ South_Pole؛ أو يحتاج MTA للبريد الإلكتروني، أو \fBhwclock\fP إلى ملف النطاق الزمني UTC؛ فإنهم يجلبونه من جذر \fI/usr/share/zoneinfo\fP، لأن هذا هو المفترض القيام به. تستبعد تلك الملفات الثواني الكبيسة، لكن ساعة النظام تشملها الآن، مما يسبب تحويلاً خاطئاً للوقت. .sp لن تنجح محاولة خلط ومطابقة الملفات من قواعد البيانات المنفصلة هذه، لأن كل منها يتطلب من ساعة النظام استخدام مقياس زمني مختلف. يجب ضبط قاعدة بيانات zoneinfo لاستخدام إما posix أو \*(Aqright\*(Aq، كما هو موضح أعلاه، أو عبر تعيين مسار قاعدة بيانات لمتغير البيئة \fITZDIR\fP. .SH "حالة الخروج" .sp ستُعاد إحدى قيم الخروج التالية: .sp \fBEXIT_SUCCESS\fP (\*(Aq0\*(Aq على أنظمة POSIX) .RS 4 نُفّذ البرنامج بنجاح. .RE .sp \fBEXIT_FAILURE\fP (\*(Aq1\*(Aq على أنظمة POSIX) .RS 4 فشلت العملية أو لم تكن صيغة الأمر صالحة. .RE .SH "البيئة" .sp \fBTZ\fP .RS 4 إذا عُيّن هذا المتغير، فإن قيمته تأخذ الأسبقية على النطاق الزمني المضبوط في النظام. .RE .sp \fBTZDIR\fP .RS 4 إذا عُيّن هذا المتغير، فإن قيمته تأخذ الأسبقية على مسار دليل قاعدة بيانات النطاق الزمني المضبوط في النظام. .RE .SH "الملفات" .sp \fI/etc/adjtime\fP .RS 4 ملف الضبط والحالة الخاص بـ \fBhwclock\fP. انظر أيضاً \fBadjtime_config\fP(5). .RE .sp \fI/etc/localtime\fP .RS 4 ملف النطاق الزمني للنظام. .RE .sp \fI/usr/share/zoneinfo/\fP .RS 4 دليل قاعدة بيانات النطاق الزمني للنظام. .RE .sp ملفات الأجهزة التي قد يحاول \fBhwclock\fP استخدامها للوصول إلى ساعة العتاد: \fI/dev/rtc\fP \fI/dev/rtc0\fP \fI/dev/misc/rtc\fP \fI/dev/efirtc\fP \fI/dev/misc/efirtc\fP .SH "انظر أيضاً" .sp \fBdate\fP(1)، \fBadjtime_config\fP(5)، \fBadjtimex\fP(8)، \fBgettimeofday\fP(2)، \fBsettimeofday\fP(2)، \fBcrontab\fP(1p)، \fBtzset\fP(3) .SH "المؤلفين" .sp كتبه \c .MTO "bryanh\(atgiraffe\-data.com" "Bryan Henderson" "،" سبتمبر 1996، بناءً على العمل المنجز في برنامج \fBclock\fP(8) بواسطة Charles Hedrick و Rob Hooft و Harald Koenig. انظر الشفرة المصدرية للتاريخ الكامل والاعتمادات. .SH "التبليغ عن الأخطاء" .sp لتقارير العِلل، استخدم \c .URL "https://github.com/util\-linux/util\-linux/issues" "مُتتبع المشكلات" "." .SH "التوفر" .sp الأمر \fBhwclock\fP جزء من حزمة util\-linux التي يمكن تنزيلها من \c .URL "https://www.kernel.org/pub/linux/utils/util\-linux/" "أرشيف نواة لينكس" "."