linux 定時任務(wù) crontab

定時任務(wù)是一個比較實(shí)用的功能,之前在爬數(shù)據(jù)的時候回用到,但是當(dāng)時用的是java提供的一個依賴來實(shí)現(xiàn)的,今天想研究一下linux的定時任務(wù),因?yàn)槠綍r自己寫一些小腳本的時候,有時候會半夜跑,這樣定時任務(wù)就是最好的選擇。

先聲明一下,我這里用的是ubuntu,其他linux發(fā)行版可能會有點(diǎn)差異。安裝什么的這里就不再贅述了,因?yàn)槲业膗buntu是默認(rèn)自帶的。

進(jìn)入配置頁面:

crontab -e //執(zhí)行這條命令會出現(xiàn)下面的這些信息
  1 # Edit this file to introduce tasks to be run by cron.
  2 # 
  3 # Each task to run has to be defined through a single line
  4 # indicating with different fields when the task will be run
  5 # and what command to run for the task
  6 # 
  7 # To define the time you can provide concrete values for
  8 # minute (m), hour (h), day of month (dom), month (mon),
  9 # and day of week (dow) or use '*' in these fields (for 'any').# 
 10 # Notice that tasks will be started based on the cron's system
 11 # daemon's notion of time and timezones.
 12 # 
 13 # Output of the crontab jobs (including errors) is sent through
 14 # email to the user the crontab file belongs to (unless redirected).
 15 # 
 16 # For example, you can run a backup of all your user accounts
 17 # at 5 a.m every week with:
 18 # 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
 19 # 
 20 # For more information see the manual pages of crontab(5) and cron(8)

配置編輯器:

這里你有可能用的是nano編輯器,如果你要切換編輯器的話,可以輸以下命令:

select-editor //輸入命令
output:
Select an editor.  To change later, run 'select-editor'.
  1. /bin/ed
  2. /bin/nano        <---- easiest
  3. /usr/bin/vim.basic
  4. /usr/bin/vim.tiny

Choose 1-4 [2]:
   在這里選擇你喜歡的編輯器,這里我選的是3

自定義定時任務(wù):

然后在crontab -e 打開的那個配置頁面進(jìn)行配置定時任務(wù)就可以了:
如下:

  */1 * * * * date >> /home/vagrant/time.log 
  */1 * * * * cd /home/vagrant && ./test.sh

這里面我配置了兩個定時任務(wù),第一個定時任務(wù)就是,每隔一分鐘向后面那個目錄下的time.log這個文件里最佳此刻的時間。
第二個定時任務(wù)是,每隔一分鐘 進(jìn)入后面那個路徑下,然后執(zhí)行test.sh腳本。

下面稍微解釋下crontab中每行的含義。crontab中的每一行代表一個定期執(zhí)行的任務(wù),分為6個部分。前5個部分表示何時執(zhí)行命令,最后一個部分表示執(zhí)行的命令。每個部分以空格分隔,除了最后一個部分(命令)可以在內(nèi)部使用空格之外,其他部分都不能使用空格。前5個部分分別代表:分鐘,小時,天,月,星期,每個部分的取值范圍如下:

  • 分鐘 0 - 59

  • 小時 0 - 23

  • 天 1 - 31

  • 月 1 - 12

  • 星期 0 - 6 0表示星期天

除了這些固定值外,還可以配合星號(*),逗號(,),和斜線(/)來表示一些其他的含義:

星號 表示任意值,比如在小時部分填寫 * 代表任意小時(每小時)

逗號 可以允許在一個部分中填寫多個值,比如在分鐘部分填寫 1,3 表示一分鐘或三分鐘

斜線 一般配合 * 使用,代表每隔多長時間,比如在小時部分填寫 */2 代表每隔兩分鐘。所以 */1 和 * 沒有區(qū)別

              */2 可以看成是能被2整除的任意值。

查看自定義腳本:

然后看看一下這個test.sh腳本:

  #!/bin/bash
  echo "test" >> /home/vagrant/time.log

可以看到這里面就是一個簡單的輸出test這個字符串到后面那個文件里。

啟動cron服務(wù)

sudo /etc/init.d/crond start

查看輸出結(jié)果:

我們過幾分鐘看一下time.log這個文件

vagrant@vagrant-ubuntu-trusty-64:~$ tail -f time.log 
test
Thu Mar 23 07:22:02 UTC 2017
test
Thu Mar 23 07:23:01 UTC 2017
test
Thu Mar 23 07:24:01 UTC 2017
Thu Mar 23 07:25:01 UTC 2017
test
Thu Mar 23 07:26:01 UTC 2017
test

這里用tail -f fimename 這樣會實(shí)時刷新最新的文件信息??梢钥吹竭@個文件里面已經(jīng)有很多信息了,都是一分鐘調(diào)用一次的。

注意事項(xiàng):

  • 文件的路徑都要用絕對路徑,這樣不會有未知的錯誤
  • 接著就是執(zhí)行腳本的時候要有權(quán)限,且腳本要是可執(zhí)行的
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容