1. 程式人生 > >工作總結,NTP協議和crontab命令

工作總結,NTP協議和crontab命令

一.關於NTP協議的一點總結

     配置檔案和配置過程其實都很簡單,網上的教程很多。就是配置一下/etc/ntp.conf,然後啟動ntpd,再用ntpq來查詢狀態。

我配置以後,就是不能在遠端進行更新,也就是說把我配置的這臺機器當作時間伺服器,總是提示出錯。後來查閱了n多資料,才發現我配置的伺服器需要跟上級時間源同步之後,才可以對外提供服務的。

在沒有完成同步的時候,一些狀態如下:
ntpq> pe
remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
ntp-nasa.arc.na .INIT.          16 u    -   64    0    0.000    0.000 4000.00
starlite.ispwor 133.100.11.8     2 u    6   64    1   80.520  -19.362   0.002
time.windows.co 192.43.244.18    2 u    6   64    1  299.771   25.927   0.002

$ntptrace 10.0.11.4
ns2.ouhai.gov.cn: stratum 16, offset 0.000000, synch distance 0.001770

# ntpdate 10.0.11.4
Looking for host 10.0.11.4 and service ntp
host found : 10.0.11.4
7 Jul 17:29:50 ntpdate[34039]: no server suitable for synchronization found

完成同步後:
ntpq> pe
remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*ntp-nasa.arc.na .GPS.            1 u   34  128  377  278.680   68.386   4.403
+korserve.net    66.229.200.200   2 u   83  128  377   79.667   20.938  15.948
time.windows.co 192.43.244.18    2 u  352 1024    1  323.717   76.649   0.004
這時候會發現在remote這列之前會出現星號和+號,說明已經跟這兩個伺服器同步成功了。然後執行ntptrace和ntpdate的結果就會不同:

#ntptrace 10.0.11.4
10.0.11.4: stratum 2, offset 0.045815, root distance 0.278680
ntp-nasa.arc.nasa.gov: stratum 1, offset 0.000015, root distance 0.000000, refid ‘GPS’
說明本地這個時間伺服器成為二級時間伺服器,上級時間源是ntp-nasa.arc.nasa.gov
然後就可以進行ntpdate了:
# ntpdate 10.0.11.4
Looking for host 10.0.11.3 and service ntp
host found : 10.0.11.4
7 Jul 17:33:13 ntpdate[34071]: step time server 10.0.11.3 offset -9.566163 sec

二.關於crontab命令的一些總結 

    crontab 命令
                                      
-e  編輯該使用者的計時器設定。
-l  列出該使用者的計時器設定。
-r  刪除該使用者的計時器設定。
-u<使用者名稱稱>  指定要設定計時器的使用者名稱稱。


用途
提交、編輯、列出或除去 cron 作業。

語法
crontab [ -e [UserName] | -l [UserName] | -r [UserName] | -v [UserName] | File ]

描述
這個 crontab 命令提交、編輯、列出或除去 cron 作業。一個 cron 作業是一個命令,其執行是由 cron 守護程序在規則的排程間隔執行的。要提交一個 cron 作業,指定 crontab 命令用 -e 標誌。crontab 命令呼叫一個編輯會話,允許建立一個 crontab 檔案。在這個檔案中,為每個 cron 建立條目。每個條目必須是一種 cron 守護程序可接受的格式。要得到建立條目的資訊,參閱 crontab 檔案條目格式。

當建立完條目和退出檔案後,crontab 命令將它拷貝到 /var/spool/cron/crontabs 目錄,並把它放到一個檔案中,此檔案的名稱是當前的使用者名稱。如果以使用者名稱命名的檔案已存在於 crontabs 目錄中,crontab 命令會覆蓋它。

同樣的,可以通過指定檔案引數建立 crontab 檔案。如果此檔案已經存在,格式必須是 cron 守護程序所需要的。如果檔案不存在,crontab 命令就呼叫編輯器。如果 EDITOR 環境變數存在,此命令就呼叫它指定的編輯器。否則,crontab 命令呼叫 vi 編輯器。

要列出 crontab 檔案的內容,就指定 crontab 命令並採用 -l 標誌。要除去存在的檔案,採用 -r 標誌。

可選的 UserName 引數可被 crontab 檔案的所有者或者 root 使用者來使用,為指定的使用者編輯、列出、除去或驗證 cron 作業的狀態。如果 UserName 是無效的,就會產生錯誤訊息並退出程式。

如果可選的 UserName 引數沒有被指定,這個crontab 標誌對於 root 使用者和當前使用者可用。

安全性
只有 root 使用者和 crontab 檔案的所有者可以在 -e、-l、-r 和 -v 標誌後面使用 UserName 以編輯、列出、除去或驗證指定使用者的 crontab 檔案。

cron 守護程序這個 cron 守護程序執行的命令和 crontab 檔案條目是相對應的。如果不重新定向 cron 作業的輸出為標準輸出或標準錯誤,cron 守護程序就會通過電子郵件告知您任何命令輸出或錯誤。如果在 crontab 檔案中指定了不正確的 cron 作業,這個cron 守護程序不執行這個作業。

cron 守護程序只在 cron 守護程序被初始化時檢查 crontab 檔案。當用 crontab 命令改變 crontab 檔案時,指示變化的訊息被髮送到 cron 守護程序。這消除了在規則的排程間隔檢查新的或改變的檔案的開銷。

控制使用 crontab 命令/var/adm/cron/cron.allow 和 /var/adm/cron/cron.deny 檔案控制哪一個使用者可以使用 crontab 命令。root 使用者可以建立、編輯或刪除這些檔案。這些檔案的條目是使用者登入名稱,每個名稱佔一行。如果登入標識和多個的登入名稱相關聯,這個crontab 命令採用第一個在 /etc/passwd 檔案中的登入名稱,而不管當前實際使用哪一個登入名稱。而且,要允許使用者啟動 cron 作業,應該使用 chuser 命令將 /etc/security/user 檔案中的守護程序屬性設定為 TRUE。

以下關於 cron.allow 檔案的一個示例:


root
nick
dee
sarah
如果 cron.allow 檔案存在,只有在檔案中出現其登入名稱的使用者可以使用 crontab 命令。root 使用者的登入名必須出現在 cron.allow 檔案中,如果這個檔案存在的話。系統管理員可以明確的停止一個使用者,通過使用 crontab 命令,同時在cron.deny 檔案中列出使用者的登入名。如果只有 cron.deny 檔案存在,任一名稱沒有出現在這個檔案中的使用者可以使用 crontab 命令。

如果以下一個條件成立,使用者將不能使用 crontab 命令:

cron.allow 檔案和 cron.deny 檔案不存在(只允許 root 使用者)。
cron.allow 檔案存在,但使用者的登入名並不列在其中。
cron.deny 檔案存在,並且使用者的登入名列在其中。
如果 cron.allow 和 cron.deny 檔案都不存在,只有被 root 使用者授權的人可以用 crontab 命令提交一個作業。

crontab 檔案條目格式一個 crontab 檔案包含每個 cron 作業的條目。條目由換行字元分開。每個 crontab 檔案條目包括 6 個欄位,它們被空格或製表符以以下格式分開:


 
minute  hour  day_of_month  month  weekday  command
這些欄位接收以下值:

minute 0 到 59
hour 0 到 23
day_of_month 1 到 31
month 1 到 12
weekday 0 到 6(星期天到星期六)
command shell 命令

必須為每個欄位指定一個值。除了 command 欄位,這些欄位可以包含以下內容:

指定範圍內的一個數。要在 5 月執行一個命令,在 月 欄位指定 5。
兩個被破折號分開的數目表明了包含的範圍。要從星期二到星期五執行 cron 作業,把 2-5 放到 weekday 欄位中。
由逗號隔開的數字列表。要在一月第一天和最後一天的執行命令,在日_of_月 欄位中可指定 1,31。
* (星號),意味著所有的允許值。要每個小時執行一個作業,在小時欄位指定一個星號。

注: 任一字元前如有一個反斜槓符號(包括 %)會引起字元被字面上的處理。天的規範是由兩個欄位(月的天和星期的天)組成的。如果指定兩者都為元素的一個列表,這兩個欄位均被包含在其中。例如,如下條目:

0 0 1,15 * 1 command
將在每個月的第一天和第十五天執行 command,還有每個星期一。要僅在一個欄位中指定天,另一欄位應包含 * 。

指定命令這個 cron 守護程序執行命名於所選日期和時間的第六個欄位中的欄位。如果包含一個 % (百分號)在第六欄位,cron 守護程序像命令呼叫一樣處理所有的任務,並使所有的後續任務在標準輸入上可用,除非轉義百分號 (/%)。空行和第一個非空字元是編號標記(#)將被忽略。如果命令含有反斜槓 (/) 的引數,反斜槓前應加另一個反斜槓。


注:
shell 只執行該命令欄位的第一行。所有其它的行作為標準的輸入對於命令可用。
cron 守護程序從 HOME 目錄中啟動一個子 shell。如果排程一個命令執行,這時您尚未登入,並且希望在.profile 檔案中的命令執行,這個命令必須明確的讀取您的 .profile 檔案。

cron 守護程序為每個 shell 提供了一個預設的環境,定義了 HOME, LOGNAME, SHELL (=/usr/bin/sh) 和 PATH (=/usr/bin)。

標誌
-e UserName 編輯使用者的 crontab 檔案的拷貝,或者,如果一個有效的 UserName 的 crontab 檔案不存在則建立一個空的檔案進行編輯。當編輯完成後,檔案被拷貝到 crontab 目錄作為使用者的crontab 檔案。
-l UserName 列出使用者的 crontab 檔案。
-r UserName 從 crontab 目錄除去使用者的 crontab 檔案。
-v UserName 列出使用者 cron 作業的狀態。


安全性
審計事件:如果審計子系統已經被正確的配置和啟用,crontab 守護程序就會當每次執行命令時產生以下審計記錄(或事件):

事件 資訊
CRON_JobRemove 列出哪一個使用者除去了 cron 作業和除去的時間。
CRON_JobAdd 列出哪一個使用者添加了 cron 作業和新增的時間。

請參閱《AIX 5L V5.2 安全指南》中的『設定審計』以獲取關於如何適當地選擇和分組審計事件及如何配置審計事件資料集合的詳細資訊。

退出狀態
此命令返回以下退出值:

0 成功完成。
>0 發生錯誤。

示例
拷貝一個名為 mycronjobs 的檔案,到 /var/admn/cron/crontabs 目錄下,輸入以下內容:

crontab mycronjobs
將時間以小時的形式把每個小時寫到 console 中,輸入:

0 * * * * echo The hour is `date` 。
>/dev/console
要在每個星期一、星期三和星期五的 6:30 a.m. 執行 calendar 命令,輸入:

30 6 * * 1,3,5 /usr/bin/calendar
要在一年的每一天的 6:30 執行 calendar 命令,輸入:

30 6 * * * /usr/bin/calendar
要在八月的每天午夜執行一個稱為 maintenance 的指令碼,輸入:

0 0 * 8 * /u/harry/bin/maintenance
為命令的標準輸入定義文字,輸入:

0 16 * 12 5 /usr/sbin/wall%HAPPY HOLIDAY!%Remember to
turn in your time card.
在 %(百分號)之後定義 wall 命令的標準輸入的文字:


HAPPY HOLIDAY!
 
Remember to turn in your time card.
檔案
/var/adm/cron/FIFO 當新的作業的提交是由 crontab 或 at 命令完成時,一個傳送訊息到 cron 守護程序的命名管道。
/var/spool/cron/crontabs 指定 crontab 緩衝池區域。
/var/adm/cron/cron.allow 指定使用者列表,這些使用者被允許訪問 crontab 命令。
/var/adm/cron/cron.deny 指定使用者列表,這些使用者不被允許訪問 crontab 命令。