تغییر زمان و تاریخ در لینوکس از طریق شل

0
برای مشاهده تاریخ و ساعت از این دستور استفاده می کنیم:

PersianAdmins:~#date

مشاهد زمان مطابق با UTC

PersianAdmins:~#date --utc

یا مثلا برای نمایش در فرم سفارشی شده میتوانیم از متغیرهای زیر استفاده کنیم:

%% a literal %
 %a locale's abbreviated weekday name (Sun..Sat)
 %A locale's full weekday name, variable length (Sunday..Saturday)
 %b locale's abbreviated month name (Jan..Dec)
 %B locale's full month name, variable length (January..December)
 %c locale's date and time (Sat Nov 04 12:02:33 EST 1989)
 %C century (year divided by 100 and truncated to an integer) [00-99]
 %d day of month (01..31)
 %D date (mm/dd/yy)
 %e day of month, blank padded ( 1..31)
 %F same as %Y-%m-%d
 %g the 2-digit year corresponding to the %V week number
 %G the 4-digit year corresponding to the %V week number
 %h same as %b
 %H hour (00..23)
 %I hour (01..12)
 %j day of year (001..366)
 %k hour ( 0..23)
 %l hour ( 1..12)
 %m month (01..12)
 %M minute (00..59)
 %n a newline
 %N nanoseconds (000000000..999999999)
 %p locale's upper case AM or PM indicator (blank in many locales)
 %P locale's lower case am or pm indicator (blank in many locales)
 %r time, 12-hour (hh:mm:ss [AP]M)
 %R time, 24-hour (hh:mm)
 %s seconds since `00:00:00 1970-01-01 UTC' (a GNU extension)
 %S second (00..60); the 60 is necessary to accommodate a leap second
 %t a horizontal tab
 %T time, 24-hour (hh:mm:ss)
 %u day of week (1..7); 1 represents Monday
 %U week number of year with Sunday as first day of week (00..53)
 %V week number of year with Monday as first day of week (01..53)
 %w day of week (0..6); 0 represents Sunday
 %W week number of year with Monday as first day of week (00..53)
 %x locale's date representation (mm/dd/yy)
 %X locale's time representation (%H:%M:%S)
 %y last two digits of year (00..99)
 %Y year (1970...)
 %z RFC-2822 style numeric timezone (-0500) (a nonstandard extension)
 %Z time zone (e.g., EDT), or nothing if no time zone is determinable

مثال :

PersianAdmins:~#date     '+TIME:%H:%M:%S%nDATE:%m/%d/%y'

خروجی بدین شکل است:

TIME:13:07:04
 DATE:05/12/07

برای مشاهده کلیه متغییرها از دستور زیر استفاده کنید:

PersianAdmins:~#date     --help

تغییر زمان و تاریخ

برای این کار چندین روش وجود دارد که به دو مورد آن میپردازیم :

1-یکی از راحتترین روش ها که در حافظه هم میماند بدین شکل است :

date   -s    "month/day/year hour:min:sec"
date   -s    "05/12/2007 13:07:04"

ترتیب درتاریخ به صورت سال/روز/ماه میباشد.
2-این روش هم بد نیست ولی شیوه نوشتنش من و به شک میاندازه گاهی اوقات

date    monthdayhourminyear
 date    051213072007

توجه :
این روش ساعت سیستم رو تغییر خواهد داد نه ساعت سخت افزاری(بایوس)
برای مشاهده ساعت سخت افزاری ازاین دستور استفاده می کنیم:

PersianAdmins:~#hwclock

 

برای تنظیم ساعت سخت افزاری با ساعت سیستم بدین تریتب عمل می کنیم:

PersianAdmins:~#hwclock     --systohc

 

همچنین میتوانیم با استفاده از ساعت سیستم , ساعت سخت افزاری رو بر روی UTC تنظیم کنیم:

PersianAdmins:~#hwclock    --utc    --systohc
systohc یعنی زمان و تاریخ سخت افزاری رو بر طبق زمان و تاریخ سیستم هماهنگ کن.
hctosys یعنی زمان و تاریخ سیستم رو بر طبق زمان و تاریخ سخت افزاری هماهنگ کن.

تنظیم time zone

در etc/ فایلی بنام localtime بصورت لینکی از فایل اصلی حاوی اطلاعاتی در مورد time zone شما میباشد.این فایل های حاوی نواحی مختلف زمانی معمولا در usr/share/zoneinfo/ قرار دارد البته بسته به نوع توزیع شما ممکن است متفاوت باشد که با استفاده از locate قابل شناسایی است.
اگر فایل localtime به منطقه زمانی مورد نظر شما لینک نشده است میتوانید با پیدا کردن کشور و ناحیه مورد نظر خود در usr/share/zoneinfo/ آن را به localtime لینک دهید.
مثلا برای ایران بدین ترتیب عمل میکنیم :

PersianAdmins:~#ln    -sf    /usr/share/zoneinfo/Iran /etc/localtime

استفاده از (NTP (Network Time Protocol

NTP به یک سرور وصل میشود و ساعت اتمی را میگیرد.
نصب :

PersianAdmins:~#apt-get   install   ntpdate
PersianAdmins:~#yum   install   ntpdate

با ntpdate ساعت سیستم روتنظیم میکنید و از طریق اون ساعت سخت افزاری .

برای تنظیم ساعت و تاریخ باید IP یک سرور را بدانیم و بدین نحو عمل میکنیم :

"ntpdate    "server DNS name or IP address

اگر به این پیغام خطا برخورد کردید :

12 Jun 03:05:44 ntpdate[2028]: Can’t adjust the time of day: Invalid argument
بدین نحو عمل کنید :

PersianAdmins:~#ntpdate    -b    pool.ntp.org
 
b   Force the time to be stepped using the settimeofday() system call, rather than slewed (default) using the adjtime() system call. This option should be used when called from a startup file at boot time

برای تنظیم ساعت سخت افزاری

PersianAdmins:~#hwclock --systohc

میتوانید از این لینک برای بدست آوردن public time server استفاده کنید
http://www.eecis.udel.edu/~mills/ntp/clock2a.html

برای دقیق نگه داشتن تنظیمات زمان میتوانید از cron job استفاده کنید که دستور زیر را اجرا کند

PersianAdmins:~#ntpdate "server name" && hwclock --systohc

همچنین به این طریق می توانید عمل کنید :

PersianAdmins:~#nano /etc/cron.d/ntpdate
 55  6  *  *  *  root /usr/sbin/ntpdate pool.ntp.org >/dev/null
 

در صورتیکه برای چندین دستگاه خواهان تنظیم زمان هستید بهترین راه استفاده از یک NTP server داخلی میباشد.

استفاده از rdate

rdate مشابه ntpdate عمل میکند با این تفاوت که نمیتوان rdate server راه انداخت.

PersianAdmins:~#rdate "server name" && hwclock --systohc

نگارنده : رضا بهروزی

نظرات مسدود است.