۱۳۸۶ اردیبهشت ۲۴, دوشنبه

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

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

مشاهد زمان مطابق با UTC
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


مثال :
'date '+TIME:%H:%M:%S%nDATE:%m/%d/%y

خروجی بدین شکل است
TIME:13:07:04
DATE:05/12/07


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


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

1-یکی از راحتترین روش ها که در حافظه هم میماند بدین شکل است :
date -s "month/day/year hour:min:sec"
date -s "05/12/2007 13:07:04"

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


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

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

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

systohc یعنی زمان و تاریخ سخت افزاری رو بر طبق زمان و تاریخ سیستم هماهنگ کن.
hctosys یعنی زمان و تاریخ سیستم رو بر طبق زمان و تاریخ سخت افزاری هماهنگ کن.


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

استفاده از NTP (Network Time Protocol)
NTP به یک سرور وصل میشود و ساعت اتمی را میگیرد.
نصب :
apt-get install ntpdate
yum install ntpdate


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

برای تنظیم ساعت و تاریخ باید IP یک سرور را بدانیم و بدین نحو عمل میکنیم :
"ntpdate "server DNS name or IP address

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


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

برای دقیق نگه داشتن تنظیمات زمان میتوانید از cron job استفاده کنید که دستور زیر را اجرا کند
ntpdate "server name" && hwclock --systohc

آموزش استفاده از cron jobs در سایت قرار دارد.

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

استفاده از rdate
rdate مشابه ntpdate عمل میکند با این تفاوت که نمیتوان rdate server راه انداخت.
rdate "server name" && hwclock --systohc

هیچ نظری موجود نیست: