crontab === æäº¤å管çç¨æ·çéè¦å¨ææ§æ§è¡çä»»å¡ ## è¡¥å 说æ **crontabå½ä»¤** è¢«ç¨æ¥æäº¤å管çç¨æ·çéè¦å¨ææ§æ§è¡çä»»å¡ï¼ä¸windowsä¸ç计åä»»å¡ç±»ä¼¼ï¼å½å®è£ 宿æä½ç³»ç»åï¼é»è®¤ä¼å®è£ æ¤æå¡å·¥å ·ï¼å¹¶ä¸ä¼èªå¨å¯å¨crondè¿ç¨ï¼crondè¿ç¨æ¯åéä¼å®ææ£æ¥æ¯å¦æè¦æ§è¡çä»»å¡ï¼å¦ææè¦æ§è¡çä»»å¡ï¼åèªå¨æ§è¡è¯¥ä»»å¡ã ### è¯æ³ ```shell crontab(é项)(åæ°) ``` ### é项 ```shell -eï¼ç¼è¾è¯¥ç¨æ·ç计æ¶å¨è®¾ç½®ï¼ -lï¼ååºè¯¥ç¨æ·ç计æ¶å¨è®¾ç½®ï¼ -rï¼å é¤è¯¥ç¨æ·ç计æ¶å¨è®¾ç½®ï¼ -u<ç¨æ·åç§°>ï¼æå®è¦è®¾å®è®¡æ¶å¨çç¨æ·åç§°ã ``` ### åæ° crontabæä»¶ï¼æå®å å«å¾ æ§è¡ä»»å¡çcrontabæä»¶ã ### ç¥è¯æ©å± Linuxä¸çä»»å¡è°åº¦åä¸ºä¸¤ç±»ï¼ **ç³»ç»ä»»å¡è°åº¦** å **ç¨æ·ä»»å¡è°åº¦** ã **ç³»ç»ä»»å¡è°åº¦ï¼** ç³»ç»å¨ææ§æè¦æ§è¡çå·¥ä½ï¼æ¯å¦åç¼åæ°æ®å°ç¡¬çãæ¥å¿æ¸ ççãå¨`/etc`ç®å½ä¸æä¸ä¸ªcrontabæä»¶ï¼è¿ä¸ªå°±æ¯ç³»ç»ä»»å¡è°åº¦çé ç½®æä»¶ã `/etc/crontab`æä»¶å æ¬ä¸é¢å è¡ï¼ ```shell SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=""HOME=/ # run-parts 51 * * * * root run-parts /etc/cron.hourly 24 7 * * * root run-parts /etc/cron.daily 22 4 * * 0 root run-parts /etc/cron.weekly 42 4 1 * * root run-parts /etc/cron.monthly ``` ååè¡æ¯ç¨æ¥é ç½®crondä»»å¡è¿è¡çç¯å¢åéï¼ç¬¬ä¸è¡SHELLåéæå®äºç³»ç»è¦ä½¿ç¨åªä¸ªshellï¼è¿éæ¯bashï¼ç¬¬äºè¡PATHåéæå®äºç³»ç»æ§è¡å½ä»¤çè·¯å¾ï¼ç¬¬ä¸è¡MAILTOåéæå®äºcrondç任塿§è¡ä¿¡æ¯å°éè¿çµåé®ä»¶åéç»rootç¨æ·ï¼å¦æMAILTOåéçå¼ä¸ºç©ºï¼å表示ä¸åé任塿§è¡ä¿¡æ¯ç»ç¨æ·ï¼ç¬¬åè¡çHOMEåéæå®äºå¨æ§è¡å½ä»¤æè èæ¬æ¶ä½¿ç¨ç主ç®å½ã **ç¨æ·ä»»å¡è°åº¦ï¼** ç¨æ·å®æè¦æ§è¡çå·¥ä½ï¼æ¯å¦ç¨æ·æ°æ®å¤ä»½ã宿¶é®ä»¶æéçãç¨æ·å¯ä»¥ä½¿ç¨Â crontabÂ å·¥å ·æ¥å®å¶èªå·±ç计åä»»å¡ãææç¨æ·å®ä¹çcrontabæä»¶é½è¢«ä¿åå¨`/var/spool/cron`ç®å½ä¸ãå ¶æä»¶åä¸ç¨æ·åä¸è´ï¼ä½¿ç¨è æéæä»¶å¦ä¸ï¼ ```shell /etc/cron.deny 该æä»¶ä¸æåç¨æ·ä¸å 许使ç¨crontabå½ä»¤ /etc/cron.allow 该æä»¶ä¸æåç¨æ·å 许使ç¨crontabå½ä»¤ /var/spool/cron/ ææç¨æ·crontabæä»¶åæ¾çç®å½,ä»¥ç¨æ·åå½å ``` crontabæä»¶çå«ä¹ï¼ç¨æ·æå»ºç«çcrontabæä»¶ä¸ï¼æ¯ä¸è¡é½ä»£è¡¨ä¸é¡¹ä»»å¡ï¼æ¯è¡çæ¯ä¸ªå段代表ä¸é¡¹è®¾ç½®ï¼å®çæ ¼å¼å ±å为å ä¸ªåæ®µï¼åäºæ®µæ¯æ¶é´è®¾å®æ®µï¼ç¬¬å 段æ¯è¦æ§è¡çå½ä»¤æ®µï¼æ ¼å¼å¦ä¸ï¼ ```shell minute hour day month week command 顺åºï¼å æ¶ æ¥ æ å¨ ``` å ¶ä¸ï¼ * minuteï¼Â 表示åéï¼å¯ä»¥æ¯ä»0å°59ä¹é´ç任使´æ°ã * hourï¼è¡¨ç¤ºå°æ¶ï¼å¯ä»¥æ¯ä»0å°23ä¹é´ç任使´æ°ã * dayï¼è¡¨ç¤ºæ¥æï¼å¯ä»¥æ¯ä»1å°31ä¹é´ç任使´æ°ã * monthï¼è¡¨ç¤ºæä»½ï¼å¯ä»¥æ¯ä»1å°12ä¹é´ç任使´æ°ã * weekï¼è¡¨ç¤ºææå ï¼å¯ä»¥æ¯ä»0å°7ä¹é´ç任使´æ°ï¼è¿éç0æ7ä»£è¡¨æææ¥ã * commandï¼è¦æ§è¡çå½ä»¤ï¼å¯ä»¥æ¯ç³»ç»å½ä»¤ï¼ä¹å¯ä»¥æ¯èªå·±ç¼åçèæ¬æä»¶ã å¨ä»¥ä¸åä¸ªåæ®µä¸ï¼è¿å¯ä»¥ä½¿ç¨ä»¥ä¸ç¹æ®åç¬¦ï¼ * æå·ï¼*ï¼ï¼ä»£è¡¨ææå¯è½çå¼ï¼ä¾å¦monthåæ®µå¦ææ¯æå·ï¼åè¡¨ç¤ºå¨æ»¡è¶³å ¶å®å段çå¶çº¦æ¡ä»¶åæ¯æé½æ§è¡è¯¥å½ä»¤æä½ã * éå·ï¼,ï¼ï¼å¯ä»¥ç¨éå·éå¼ç弿å®ä¸ä¸ªå表èå´ï¼ä¾å¦ï¼â1,2,5,7,8,9â * 䏿 ï¼-ï¼ï¼å¯ä»¥ç¨æ´æ°ä¹é´ç䏿 表示ä¸ä¸ªæ´æ°èå´ï¼ä¾å¦â2-6â表示â2,3,4,5,6â * æ£æçº¿ï¼/ï¼ï¼å¯ä»¥ç¨æ£æçº¿æå®æ¶é´çé´éé¢çï¼ä¾å¦â0-23/2â表示æ¯ä¸¤å°æ¶æ§è¡ä¸æ¬¡ãåæ¶æ£æçº¿å¯ä»¥åæå·ä¸èµ·ä½¿ç¨ï¼ä¾å¦*/10ï¼å¦æç¨å¨minuteåæ®µï¼è¡¨ç¤ºæ¯ååéæ§è¡ä¸æ¬¡ã **crondæå¡** ```shell /sbin/service crond start # å¯å¨æå¡ /sbin/service crond stop # å ³éæå¡ /sbin/service crond restart # éå¯æå¡ /sbin/service crond reload # éæ°è½½å ¥é ç½® ``` æ¥çcrontabæå¡ç¶æï¼ ```shell service crond status ``` æå¨å¯å¨crontabæå¡ï¼ ```shell service crond start ``` æ¥çcrontabæå¡æ¯å¦å·²è®¾ç½®ä¸ºå¼æºå¯å¨ï¼æ§è¡å½ä»¤ï¼ ```shell ntsysv ``` å å ¥å¼æºèªå¨å¯å¨ï¼ ```shell chkconfig âlevel 35 crond on ``` ### å®ä¾ æ¯1åéæ§è¡ä¸æ¬¡command ```shell * * * * * command ``` æ¯å°æ¶ç第3å第15åéæ§è¡ ```shell 3,15 * * * * command ``` å¨ä¸å8ç¹å°11ç¹ç第3å第15åéæ§è¡ ```shell 3,15 8-11 * * * command ``` æ¯é两天çä¸å8ç¹å°11ç¹ç第3å第15åéæ§è¡ ```shell 3,15 8-11 */2 * * command ``` æ¯ä¸ªææä¸çä¸å8ç¹å°11ç¹ç第3å第15åéæ§è¡ ```shell 3,15 8-11 * * 1 command ``` æ¯æç21:30éå¯smb ```shell 30 21 * * * /etc/init.d/smb restart ``` æ¯æ1ã10ã22æ¥ç4 : 45éå¯smb ```shell 45 4 1,10,22 * * /etc/init.d/smb restart ``` æ¯å¨å ã卿¥ç1:10éå¯smb ```shell 10 1 * * 6,0 /etc/init.d/smb restart ``` æ¯å¤©18 : 00è³23 : 00ä¹é´æ¯é30åééå¯smb ```shell 0,30 18-23 * * * /etc/init.d/smb restart ``` æ¯ææå çæä¸11:00 pméå¯smb ```shell 0 23 * * 6 /etc/init.d/smb restart ``` æ¯ä¸å°æ¶éå¯smb ```shell * */1 * * * /etc/init.d/smb restart ``` æä¸11ç¹å°æ©ä¸7ç¹ä¹é´ï¼æ¯éä¸å°æ¶éå¯smb ```shell * 23-7/1 * * * /etc/init.d/smb restart ``` æ¯æç4å·ä¸æ¯å¨ä¸å°å¨ä¸ç11ç¹éå¯smb ```shell 0 11 4 * mon-wed /etc/init.d/smb restart ``` 䏿ä¸å·ç4ç¹éå¯smb ```shell 0 4 1 jan * /etc/init.d/smb restart ``` æ¯å°æ¶æ§è¡`/etc/cron.hourly`ç®å½å çèæ¬ ```shell 01 * * * * root run-parts /etc/cron.hourly ```