2015年9月5日カリキュラム宿題(at、crontab)


1、Linuxシステム上の任務計画(at、crontab)の詳細な使用方法を総括する.
命令:atタイミングタスク、1つの時間を指定して1つのタスクを実行し、1回しか実行できません.構文:#at[パラメータ][時間]at>が実行する命令atコマンドctrl+dコマンドを終了する前提:atdプロセスを開始する必要がある(redhatではatdはデフォルトでシステム起動に伴って起動する)
[root@localhost ~]# ps -ef|grep atd        #      atd
root      1360     1  0 9 02 ?       00:00:00 /usr/sbin/atd -f
root     17626 17581  0 10:02 pts/0    00:00:00 grep --color=auto atd
[root@localhost ~]#
           
         ,          
# atq

      at             
# atrm       
  :# atrm 17

    :
-m :           ,        ,        
-I :atq   
-d :atrm   
-v :           
-c :            
-V :      
-q :   <  >        
-f :   <  >                    
-t :  <    >                 

  :          at   ,   :
1、HH:MM
  :     HH:MM     ,       ,     HH:MM      。
ex> 04:00

2、HH:MM YYYY-MM-DD
  :                      
ex> 04:00 2009-03-17

3、HH:MM[am|pm] [Month] [Date]
  :                   
ex> 04pm March 17

4、HH:MM[am|pm] + number [minutes|hours|days|weeks]
  :                      
ex> now + 5 minutes
ex> 04pm + 3 days

    
1、  at                           
2、                  ,    /var/spool/at    。     vi      ,    。

  :
  1:       5      /bin/ls
# at 5pm + 3 days
at> /bin/ls
at> <EOT>
job 7 at 2013-01-08 17:00

  2:  17  ,          
# at 17:20 tomorrow
at> date > /root/doiido.log
at> <EOT>
job 8 at 2013-01-06 17:20

  3:       ,        atq               
# atq
8 2013-01-06 17:20 a root
7 2013-01-08 17:00 a root

  4:         
# atq
8 2013-01-06 17:20 a root
7 2013-01-08 17:00 a root
# atrm 7
# atq
8 2013-01-06 17:20 a root

  5:           
# at -c 8
#!/bin/sh
# atrun uid=0 gid=0
# mail root 0
echo "hello"
date > doiido.log

    batch
batch ,at       ,                 ,  cpu    cpu  80%     
# batch
at> echo "hi" > /dev/tty2
batch         atq  ,atrm       	

Linux crontabタイミング実行タスクコマンドフォーマットと詳細例.
基本フォーマット:
     # Example of job definition:     # .---------------- minute (0 - 59)     # |  .------------- hour (0 - 23)     # |  |  .---------- day of month (1 - 31)     # |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...     # |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat     # |  |  |  |  |     # *  *  *  *  *  command to be executed 
*    *    *    *    *    command
時分割日月週コマンド
第1列表示分1~59毎分*または*/1で表示
2列目表示時間1~23(0は0点)
第3列は日付1~31を示す
第4列は月1~12を表す
5列目標識番号曜日0~6(0は日曜日)
6列目は実行するコマンドを示します
crontabファイルの例:
30 21 * * *     /etc/init.d/httpd restart
上記の例は毎晩の21:30にapacheを再起動することを示しています.
45 4 1,10,22 * */etc/init.d/httpd restart
上記の例は、毎月1、10、22日の4:45にapacheを再起動することを示しています.
10 1 * * 6,0/etc/init.d/httpd restart
上記の例は、毎週6、日曜日の1:10にapacheを再起動することを示しています.
0,30 18-23 * * */etc/init.d/httpd restart
上記の例では、apacheを毎日18:00から23:00の間に30分おきに再起動することを示しています.
0 23 * * 6/etc/init.d/httpd restart
上記の例は土曜日の23:00にapacheを再起動することを示しています.
* */1 * * */etc/init.d/httpd restart
1時間ごとにapacheを再起動
* 23-7/1 * * */etc/init.d/httpd restart
夜11時から朝7時まで1時間おきにapacheを再起動します
0 11 4 * mon-wed/etc/init.d/httpd restart
毎月の4日と毎週1~水曜日の11時にapacheを再起動します
0 4 1 jan */etc/init.d/httpd restart
1月1日の4時にapacheを再起動します
crontabの使用方法:
パラメータ:
crontab-e:文字エディタを実行してスケジュールを設定します.内定した文字エディタはviです.他の文字エディタを使いたい場合は、まずVISUAL環境変数を設定してその文字エディタ(setnv VISUAL joeなど)を指定してください.
crontab-r:現在のスケジュールを削除
crontab-l:現在のスケジュールをリスト
crontab file[-u user]-現在のcrontabを指定したファイルに置き換える.
スケジュールのフォーマットは次のとおりです.
f1 f2 f3 f4 f5 program
このうちf 1は分を表し、f 2は時間を表し、f 3は1ヶ月の何日目を表し、f 4は月を表し、f 5は1週間の何日目を表す.プログラムは実行するプログラムを表します.
f 1が*の場合は毎分programを実行し、f 2が*の場合は毎時プログラムを実行し、順次類推する
f 1がa-bの場合はa分目からb分目までの期間で実行することを示し、f 2がa-bの場合はa分目からb分目までの期間で実行することを示し、順次類推する
f 1が*/nの場合はn分毎に1回、f 2が*/nの場合はn時間毎に1回、順次類推する
f 1がa,b,c,...でa,b,c,...分実行します.f 2はa,b,c,...でa,b,c,...時間ごとに実行し,順番に類推する
利用者は、全ての設定をファイルfileに先に格納、crontabファイルとしてスケジュールを設定するようにしてもよい.
例:
毎朝7時に1回/bin/lsを実行します.
0 7 * * * /bin/ls

12月中、毎朝6時から12時まで3時間おきに/usr/bin/backupを実行します.
0 6-12/3 * 12 *  /usr/bin/bakup

2、毎週1~土曜日の午前3時20分、cpコマンドを実行して/etc/ディレクトリをアーカイブして保存し、保存場所は/backups/etc-YYYYY-MM-DDである.
20 3 * * 1-6 /usr/bin/cp -r /etc/ /backups/etc-`date + %F`

3、毎週日午前2時30分、cpコマンドを実行して/etc/fstabファイルをバックアップし、保存場所は/backup/fstab-YYYYY-MM-DD-hh-mm-ssである.
30 2 * * 0  /usr/bin/cp -r /etc/fstab /backup/fstab-`date +%F-%H-%M-%S`

4、毎晩12時、/proc/meminfoファイルのSまたはMで始まるすべての行を取得し、/statistics/meminfoに追加する.txtファイルに、毎日のメッセージの前に、類似=================区切り線を付けます.
0 0 * * * /bin/echo "===============" >> /statistics/meminfo.txt ; /bin/cat /proc/meminfo | egrep "^S|^M" >> /statistics/meminfo.txt