crontab定期執行命令詳解,以及實例

火幣

一,什麼是crond,crontab

linux下面定期分為二部分,一部分是後台程序crond,一部分是crontab往crond輸入指令的介面。

為什麼要定期執行,因為有些事情我們是要定時執行的,這樣可以節省不少人力,物力。例如:每個星期都要給註冊的用戶發送郵件,如果能定時執行的話,就不要有個人去做了,現在sns比較流行,裡面有什麼好友新鮮事,你做的事情,不是立馬你的好友就能看到,也許要過一小時,或者幾個小時才能看到,如果要人工去操作的話,就比較煩了。

二,crond啟動

crond不同的系統下面啟動不同,以archlinux為例

1,crond啟動

[root@BlackGhost zhangy]# crond

2,crond開機啟動

a,利用rc.conf

DAEMONS=(syslog-ng alsa hal net-profiles httpd !slim @mysqld !network !netfs crond)

b,利用rc.local

在文件的最後加上sudo crond

三,crontab命令詳解

 

  1. [root@BlackGhost etc]# crontab -h
  2. crontab V3.2
  3. crontab file <opts>  replace crontab from file   //修改文件存放位置
  4. crontab –    <opts>  replace crontab from stdin
  5. crontab -u user      specify user //指定用戶
  6. crontab -l [user]    list crontab for user // 查看命令列表
  7. crontab -e [user]    edit crontab for user //編輯列表
  8. crontab -d [user]    delete crontab for user //刪除列表
  9. crontab -c dir       specify crontab directory //指定crontab 目錄

四,crontab命令詳解

1,crontab file 指定命令存放

archlinux下面默認crontab命令存放在是在/var/spool/cron/下面,以用戶名來命名文件的

[root@BlackGhost etc]# ls /var/spool/cron
root  zhangy

如果我想換個位置怎麼辦呢,看下面

 

  1. [root@BlackGhost etc]# cp /var/spool/cron/root /tmp/root
  2. [root@BlackGhost etc]# crontab /tmp/root    //修改文件存放位置
  3. [root@BlackGhost etc]# crontab -l
  4. #
  5. # DO NOT EDIT THIS FILE MANUALLY!! USE crontab -e INSTEAD.
  6. #
  7. # <minute> <hour> <day> <month> <dow> <command>
  8. 01 * * * *  /usr/sbin/run-cron /etc/cron.hourly
  9. 02 00 * * * /usr/sbin/run-cron /etc/cron.daily
  10. 22 00 * * 0 /usr/sbin/run-cron /etc/cron.weekly
  11. 42 00 1 * * /usr/sbin/run-cron /etc/cron.monthly
  12. #30 00 * * * /sbin/shutdown -h now
  13. 00 18 * * * /home/zhangy/database_bak.sh

2,crontab -u,crontab -l,crontab -e,crontab -d

 

  1. [root@BlackGhost etc]# crontab -l -u zhangy  //沒有任務
  2. [root@BlackGhost etc]# crontab -e -u zhangy  //添加任務
  3. [root@BlackGhost etc]# crontab -l -u zhangy  //查看任務
  4. 00 18 * * * /home/zhangy/database_bak.sh
  5. [root@BlackGhost etc]# crontab -d -u zhangy  //刪除任務用戶
  6. [root@BlackGhost etc]# crontab -l -u zhangy  //用戶已刪除
  7. no crontab for zhangy
  8. [root@BlackGhost etc]# crontab -e -u zhangy  //添加任務
  9. [root@BlackGhost etc]# crontab -l -u zhangy  //查看
  10. 00 18 * * * /home/zhangy/database_bak.sh

3,crontab書寫規則

<minute> <hour> <day> <month> <dow> <command>
第1列      第2列          3             4            5                 6

第1列表示分鐘1~59 每分鐘用*或者 */1表示
第2列表示小時1~23(0表示0點)
第3列表示日期1~31
第4列表示月份1~12
第5列標識號星期0~6(0表示星期天)
第6列要運行的命令

crontab書寫規則的例子很多,以下從網上找的,偷懶一下,嘿嘿

30 21 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每晚的21:30重啟lighttpd 。

45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每月1、10、22日的4 : 45重啟lighttpd 。

10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每周六、周日的1 : 10重啟lighttpd 。

0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示在每天18 : 00至23 : 00之間每隔30分鐘重啟lighttpd 。

0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每星期六的11 : 00 pm重啟lighttpd 。

* */1 * * * /usr/local/etc/rc.d/lighttpd restart
每一小時重啟lighttpd

* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
晚上11點到早上7點之間,每隔一小時重啟lighttpd

0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart
每月的4號與每周一到周三的11點重啟lighttpd

0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart
一月一號的4點重啟lighttpd

贊(0) 打賞
需要國外VPS建站朋友,請聯繫站長! 轉載請註明文章來源:VPSMVP部落 - 便宜VPS|VPS優惠|VPS測評|美國VPS|VPS教程 » crontab定期執行命令詳解,以及實例
分享到: 更多 (0)
VULTR

評論 搶沙發

  • 昵稱 (必填)
  • 郵箱 (必填)
  • 網址

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

微信掃一掃打賞




友情鏈接:
 |  趙容部落  |  老左筆記  |  微魔部落  |  便宜VPS  |  vps小學生  |  主機百科  |  老蔣部落  |  老劉博客  |  全球主機  |  全球主機交流  |  數字居民  |  LET論壇  |  veidc測評  |  挖站否  |  VPS收割者  |  主機貼士  |  惠主機  |  荒島  |  VPS GO  |  國外VPS  |  主機之家測評

友情鏈接申請