ºìÁªLinuxÃÅ»§
Linux°ïÖú

Linux¼Æ»®ÈÎÎñ(at batch crontab anacron)

·¢²¼Ê±¼ä:2014-07-10 21:45:15À´Ô´:ºìÁª×÷Õß:velcbo
δÀ´Ö»×öÒ»´Î at (ÒÀÀµÓÚatd·þÎñ)

δÀ´ÖÜÆÚÐÔ×ö cron (ÒÀÀµÓÚcrond·þÎñ)

cron²¹³ä(¿ª»úºóÖ´ÐÐ) anacron (ÒÀÀµÓÚanacron·þÎñ)

at:
at ÃüÁî±»ÓÃÀ´ÔÚÖ¸¶¨Ê±¼äÄÚµ÷¶ÈÒ»´ÎÐÔµÄÈÎÎñ¡£

at [-mldv] TIME
Ñ¡ÏîÓë²ÎÊý£º
-m £ºµ±atµÄÈÎÎñÍê³Éºó£¬¼´Ê¹Ã»ÓÐÊä³öÐÅÏ¢£¬Ò²ÒÔ email ֪ͨ¸øʹÓÃÕß
-l £ºÁгöĿǰϵͳÉÏÃæµÄËùÓиÃʹÓÃÕßµÄatÈÎÎñ(ͬatq)
-d £º¿ÉÒÔÈ¡ÏûÒ»¸öÔÚ at ÈÎÎñ(ͬatrm)
-v £º¿ÉÒÔʹÓýÏÃ÷ÏÔµÄʱ¼ä¸ñʽÁгö at ÈÎÎñ
-c £º¿ÉÒÔÁгöºóÃæ½ÓµÄ¸ÃÏîÈÎÎñµÄÄÚÈÝ

atÃüÁîµÄʱ¼ä¸ñʽ£º
now + ʱ¼ä £ºÊ±¼äÒÔ minutes¡¢hours¡¢days¡¢»ò weeks Ϊµ¥Î»
HH:MM £º24СʱÖƶȣ¬Èç¹ûʱ¼äÒѹý£¬¾Í»áÔÚµÚ¶þÌìµÄÕâһʱ¼äÖ´ÐÐ
midnight £º±íʾ00:00
noon £º±íʾ12:00
teatime £º±íʾ16:00

[root@rhel6 ~]# at 13:10 //¶¨ÒåÒ»¸öatÈÎÎñÔÚ13:10Ö´ÐÐ
at> date >> /tmp/at //½«µ±Ç°Ê±¼äÊäÈë/tmp/atÎļþ
at> echo "at command test" >> /tmp/at
at> uname -r >> /tmp/at
at> //ÁíÑ¡Ò»Ðа´Ctrl+DÍ˳öatÃüÁîģʽ
job 1 at 2012-12-28 13:10
[root@rhel6 ~]# at now + 1 minutes //ÔÙ¶¨ÒåÒ»¸öatÈÎÎñÔÚ1·ÖÖÓºóÖ´ÐÐ
at> date >> /tmp/at
at> echo "at command test again" >> /tmp/at
at> sleep 10
at> date >> /tmp/at
at>
job 2 at 2012-12-28 13:10
[root@rhel6 ~]# date
Fri Dec 28 13:09:09 CST 2012
[root@rhel6 ~]# atq //ÏÔʾϵͳÖÐËùÓеÄatÈÎÎñ
2 2012-12-28 13:10 a root
1 2012-12-28 13:10 a root
[root@rhel6 ~]# cat /tmp/at
Fri Dec 28 13:10:00 CST 2012
Fri Dec 28 13:10:00 CST 2012
at command test
at command test again
2.6.32-220.el6.x86_64
Fri Dec 28 13:10:10 CST 2012 //¶Ô±ÈÁ½¸öʱ¼ä¿É¼ûatÈÎÎñÊÇ°´Ë³ÐòÖ´ÐÐÃüÁîµÄ


²¹³ä£ºbatch
batch ÃüÁî±»ÓÃÀ´ÔÚϵͳƽ¾ù¸ºÔØ´ïµ½ 0.8% ÒÔÏÂʱִÐÐÒ»´ÎÐÔµÄÈÎÎñ£¬Ó÷¨ÓëatÒ»Ñù
[root@rhel6 ~]# batch midnight //ÔÚ00:00Ö®ºóϵͳƽ¾ù¸ºÔØ´ïµ½0.8%ÒÔϵÄʱºòÖ´ÐÐ
at> sync
at> sync
at> shutdown -h now
at>
job 3 at 2012-12-28 13:20
[root@www ~]# atq
3 2012-12-28 13:20 b root
[root@www ~]# atrm 3 //È¡ÏûbatchÈÎÎñ

/etc/at.allow ºÍ /etc/at.deny Îļþ¿ÉÓÃÀ´ÏÞÖÆ¶Ô at ºÍ batch ÃüÁîµÄʹÓã¨rootÓû§²»ÊÜÆä¿ØÖÆ£©¡£ÕâÁ½¸öʹÓÿØÖÆÎļþµÄ¸ñʽ¶¼ÊÇÿÐÐÒ»¸öÓû§(²»ÔÊÐí¿Õ¸ñ)£¬ÇÒÎļþÐ޸ĺó£¬atdÊØ»¤½ø³Ì²»ÐèÖØÆô¡£
Èç¹ûat.allowÎļþ´æÔÚ£¬ÄÇôֻÓÐÆäÖÐÁгöµÄÓû§²Å±»ÔÊÐíʹÓÃat»òbatchÃüÁÇÒºöÂÔcron.denyÎļþ¡£Èç¹ûat.allowÎļþ²»´æÔÚ£¬ÄÇôËùÓÐÔÚcron.denyÖÐÁгöµÄÓû§¶¼½«½ûֹʹÓÃatºÍbatch¡£

cron:
crondÊÇLinuxÏÂÓÃÀ´ÖÜÆÚÐÔµØÖ´ÐÐijÖÖÈÎÎñ»òµÈ´ý´¦ÀíijЩʼþµÄÒ»¸öÊØ»¤½ø³Ì£¬ÇÒÐÞ¸ÄÈÎÎñ»ò¿ØÖÆÎļþºó²»ÓÃÖØÆô¡£
µ±Íê³É²Ù×÷ϵͳµÄ°²×°ºó£¬Ä¬Èϻᰲװcrond£¬²¢×Ô¶¯Æô¶¯crond½ø³Ì¡£crond½ø³Ìÿ·ÖÖӻᶨÆÚ¼ì²éÊÇ·ñÓÐÒªÖ´ÐеÄÈÎÎñ¡£
ÆäÖÐ/etc/cron.allowºÍ/etc/cron.denyÎļþÓÃÀ´ÏÖÔÚcronµÄʹÓá£ÕâÁ½¸öÎļþµÄ¸ñʽ¶¼ÊÇÿÐÐÒ»¸öÓû§(²»ÔÊÐí¿Õ¸ñ)£¬µ«rootÓû§²»ÊÜÆäÏÞÖÆ¡£
cron.allow¡¢cron.deny¹æÔòÓëatÃüÁî¿ØÖÆÎļþÏàͬ

LinuxϵÄÈÎÎñµ÷¶È·ÖΪÁ½Àà:ϵͳÈÎÎñµ÷¶ÈºÍÓû§ÈÎÎñµ÷¶È
• Óû§ÈÎÎñµ÷¶È:Óû§¶¨ÆÚÒªÖ´ÐеŤ×÷¡£Í¨¹ýcrontabÃüÁÖÆ¡£ËùÓÐÓû§¶¨ÒåµÄcrontabÎļþ¶¼±£´æÔÚ/var/sopl/cronĿ¼ÖÐ(ÎļþÃûÓëÓû§ÃûÒ»ÖÂ)
• ϵͳÈÎÎñµ÷¶È£ºÏµÍ³ÖÜÆÚÐÐËùÒªÖ´ÐеÄÈÎÎñ¡£Í¨¹ý/etc/crontabÅäÖÃ

crontabÎļþ¸ñʽ£º
minute hour day month week command
0-59 0-23 1-31 1-12 0-7
ÁíÍâ"*"±íʾËùÓпÉÄܵÄÖµ£¬","±íʾij¸ö¼ä¸ôʱ¶Î£¬"-"±íʾij¸öÁ¬Ðøʱ¶Î£¬"/n"±íʾÿ¸ôn¸öµ¥Î»Ê±¼ä

0 */3 * * * //±íʾÿ¸ô3¸öСʱ
30 3 * * 6 //±íʾÿÖÜ6µÄ3:30
0 0 1,20 * * //±íʾÿ¸öÔµÄ1ºÅºÍ20ºÅ
10 5 */5 * * //±íʾÿ¸öÔµÄ5¡¢10¡¢15¡¢20¡¢25¡¢30ºÅµÄ5:10

Óû§ÈÎÎñµ÷¶È£º
crontab [-u user] [file]
crontab [-u user] [-e | -l | -r | -i]
-u user :ÓÃÀ´É趨ij¸öÓû§µÄcrontabÈÎÎñ
-e :±à¼­Ä³¸öÓû§µÄcrontabÈÎÎñ(Èç¹ûÊÇÓÉϵͳִÐеÄcrontabÈÎÎñ¿ÉÖ®¼ä±à¼­/etc/crontabÎļþ)
-l :ÏÔʾij¸öÓû§µÄcrontabÈÎÎñ
-r :ɾ³ýij¸öÓû§µÄËùÓÐcrontabÈÎÎñ(´Ó/var/spool/cronĿ¼ÖÐɾ³ý¸ÃÓû§µÄcrontabÎļþ)
-i :ÔÚɾ³ýÓû§µÄcrontabÎļþʱ¸øÈ·ÈÏÌáʾ
ÿ´Î±à¼­Íêij¸öÓû§µÄcronÉèÖúó£¬cron»á×Ô¶¯ÔÚ/var/spool/cron/Ŀ¼ÏÂÉú³ÉÒ»¸öÓëÓû§Í¬ÃûµÄÎļþ¼Ç¼¸ÃÓû§µÄcronÐÅÏ¢

[root@rhel6 ~]# ll /var/spool/cron/ | grep root
[root@rhel6 ~]# crontab -e //´´½¨crontabÈÎÎñ
* * * * * date >> /tmp/crontab //ÒªÇóÿ·ÖÖÓÏò/tmp/crontabÊäÈ뵱ǰʱ¼äµÄÐÅÏ¢
×¢£ºµ¥´¿dateµÄ»°½«¿´²»µ½ÈκÎÊä³ö£¬ÒòΪcron°ÑÈκÎÊä³ö¶¼mailµ½rootÓû§ÁË
[root@rhel6 ~]# crontab -l
* * * * * date >> /tmp/crontab
[root@rhel6 ~]# ls /var/spool/cron/ | grep root //×Ô¶¯ÔÚ/var/spool/cron/Ŀ¼ÖÐÉú³ÉÒ»¸öÒÔrootΪÎļþÃûµÄÎļþ
-rw-------. 1 root root 28 Dec 27 17:15 root //crontabÈÎÎñÓÚ17:15·Ö´´½¨
[root@rhel6 ~]# cat /tmp/crontab
Thu Dec 27 17:16:01 CST 2012 //´Ó17£º16·Ö¿ªÊ¼Ã¿·ÖÖÓÏò/tmp/crontabÎļþÊäÈ뵱ǰʱ¼äµÄÐÅÏ¢
Thu Dec 27 17:17:01 CST 2012
Thu Dec 27 17:18:01 CST 2012
Thu Dec 27 17:19:01 CST 2012
Thu Dec 27 17:20:01 CST 2012
[root@rhel6 ~]# crontab -r //ɾ³ýÓû§µÄËùÓÐcrontabÈÎÎñ
[root@rhel6 ~]# crontab -l
no crontab for root
[root@rhel6 ~]# ll /var/spool/cron/ | grep root //ͬʱ´Ó/var/spool/cronĿ¼ÖÐɾ³ý¸ÃÓû§µÄcrontabÎļþ

ϵͳÈÎÎñµ÷¶È£º
¿Éͨ¹ýÖ±½Ó±à¼­/etc/crontabÎļþ½øÐмƻ®ÈÎÎñµÄ¹ÜÀí£¬¸ÃÎļþÓë"crontab -e" µÄÄÚÈݼ¸ºõÍêȫһģһÑù¡£
[root@rhel6 ~]# cat /etc/crontab
SHELL=/bin/bash //Ö´ÐÐÈÎÎñËùʹÓõÄshellÀàÐÍ
PATH=/sbin:/bin:/usr/sbin:/usr/bin //Ö´ÐÐÈÎÎñËùʹÓõÄPATH
MAILTO=root //ÈôÓбê×¼(´íÎó)Êä³öÐÅÏ¢£¬Ôòmail¸øroot
HOME=/ //shellËùÔڵļÒĿ¼

# * * * * * user-name command to be executed //ÒÔÏÂΪ¼Æ»®ÈÎÎñµÄÄÚÈÝ(Óëcrontab -eµÄ¸ñʽÊÇÒ»ÑùµÄ)
# run-parts
01 * * * * root run-parts /etc/cron.hourly //ÿСʱ01·ÖÒÔrootÉí·ÝÖ´ÐÐ/etc/cron.hourly/Ŀ¼ÏµĽű¾
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

anacron:
anacronÖ»ÊÇcronµÄ²¹³ä¶ø·ÇÊÇÍêÈ«Ìæ´ú cron¡£
cron ÊÇ×÷ΪÊØ»¤½ø³ÌÔËÐеģ¬¶øanacronÔò×÷ΪÆÕͨ½ø³ÌÔËÐв¢ÖÕÖ¹µÄ¡£anacron ά»¤ÁËÒ»×éÓ¦µ±ÔËÐеÄÈÎÎñ£¬Ã¿¸öÈÎÎñ¶¼Ò»¸öÏà¹ØµÄÔËÐмä¸ô¡£anacron ²¢²»ÄÜÖ¸¶¨ºÎʱÔËÐÐijÏîÈÎÎñ£¬ ¶øÊÇÒÔÌìΪµ¥Î»»òÕßÊÇÔÚÆô¶¯ºóÁ¢¿Ì½øÐÐ anacron µÄ¶¯×÷£¬µ±ÏµÍ³Æô¶¯Ö®ºóanacrod½«»áÈ¥Õì²âÍ£»úÆÚ¼äÓ¦¸Ã½øÐе«ÊDz¢Ã»ÓнøÐÐµÄ crontab ÈÎÎñ£¬²¢½«¸ÃÈÎÎñÔËÐÐÒ»±éºó£¬È»ºó anacron ¾Í»á×Ô¶¯Í£Ö¹ÁË¡£
Òò´Ë anacron ÔËÐеÄʱ¼äͨ³£ÓÐÁ½¸ö£¬Ò»¸öÊÇϵͳÆô¶¯ÆÚ¼äÔËÐУ¬Ò»¸öÊÇдÈë crontab ÖеÄÈÎÎñ¡£

[root@rhel6 ~]# cat /etc/anacrontab
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=45
# the jobs will be started during the following hours only
START_HOURS_RANGE=3-22
#ÌìÊý ÑÓ³Ùʱ¼ä ÈÎÎñÃû³Æ¶¨Òå Ö´ÐеÄÖ¸Áî
#period in days delay in minutes job-identifier command
1 5 cron.daily nice run-parts /etc/cron.daily
#ÓÉ /etc/anacrontab ·ÖÎöµ½ cron.daily ÕâÏ×÷Ãû³ÆµÄÌìÊýΪ 1 Ì죻
#ÓÉ /var/spool/anacron/cron.daily È¡³ö×î½üÒ»´ÎÔËÐÐ anacron µÄʱ¼ä´Á¼Ç£»
#ÓÉʱ¼ä´ÁÓëÄ¿Ç°µÄʱ¼ä±È½Ï£¬Èô¼ä¸ôÌìÊýΪ 1 Ìì(ÒÔÉÏ)£¬½«ÑÓ³Ù5·ÖÖÓºóÖ´ÐÐ"nice run-parts /etc/cron.daily"ÕâÌõÃüÁî,ÇÒÔËÐÐÍê±Ïºóanacron³ÌÐò½áÊø
7 25 cron.weekly nice run-parts /etc/cron.weekly
@monthly 45 cron.monthly nice run-parts /etc/cron.monthly

×÷Õߣºmissedyou
ÎÄÕÂÆÀÂÛ

¹²ÓÐ 0 ÌõÆÀÂÛ