日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux Crontab 任务管理工具命令以及示例

發(fā)布時(shí)間:2023/12/18 linux 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux Crontab 任务管理工具命令以及示例 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Crontab 是 Linux 平臺(tái)下的一款用于循環(huán)執(zhí)行例行任務(wù)的工具,Linux 系統(tǒng)由 cron (crond) 這個(gè)系統(tǒng)服務(wù)來控制任務(wù) , Linux系統(tǒng)本來就有很多的計(jì)劃任務(wù)需要啟動(dòng) , 所以這個(gè)系統(tǒng)服務(wù)是默認(rèn)開機(jī)啟動(dòng)的 。 Linux 為使用者提供的計(jì)劃任務(wù)的命令就是 Crontab

Crontab 是 Linux 下用來周期性執(zhí)行任務(wù)或者等待處理某些事情的時(shí)候

Crontab 配置文件

Crontab 的周期性任務(wù)主要分為兩種:系統(tǒng)任務(wù) / 用戶任務(wù)

  • 系統(tǒng)任務(wù)就是系統(tǒng)周期性需要執(zhí)行的任務(wù),比如說定時(shí)執(zhí)行緩存清理任務(wù),記錄日志等等。系統(tǒng)任務(wù)的配置文件在 /etc/crontab

這里是 crontab 的配置文件中的內(nèi)容

SHELL=/bin/sh PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root# For details see man 4 crontabs# 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 # | | | | | # * * * * * user-name command to be executed

前面 4 行用于配置 cron 的環(huán)境變量,環(huán)境變量的配置不在這里討論了,之后的內(nèi)容是 crontab 的用法的一些簡(jiǎn)單的解釋

  • 用戶的周期性任務(wù)就可以使用 crontab 工具,所有用戶制定的 crontab 計(jì)劃任務(wù)都被保存在 /var/spool/cron 中,文件名即用戶名

Crontab 文件的含義

在上面的crontab文件中已經(jīng)包含了一部分的解釋,這里我將其翻譯為中文

SHELL=/bin/sh PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root# 詳細(xì)的解釋可以查看 man 手冊(cè)# 舉例: # .---------------- 分 (0 - 59) # | .------------- 時(shí) (0 - 23) # | | .---------- 日期(每月) (1 - 31) # | | | .------- 月 (1 - 12) 也可以使用月的英文,例如 jan,feb,mar,apr ... # | | | | .---- 日期(每周) (0 - 6) (周日即是 0 也是 7 )也可以使用sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * 想要執(zhí)行命令的用戶(這個(gè)參數(shù)可以為空) 你想要執(zhí)行的命令

Crontab 一共包含包括 7 個(gè)字段,前五個(gè)字段是關(guān)于設(shè)置執(zhí)行周期的,第六個(gè)字段用于指定你想要執(zhí)行的命令的用戶,第七個(gè)字段是要執(zhí)行的命令

在前5個(gè)字段中,還可以使用以下的特殊字符

星號(hào) (*):代表所有可能的值,例如month字段如果是星號(hào),則表示在滿足其它字段的制約條件后每月都執(zhí)行該命令操作。
逗號(hào) (,):可以用逗號(hào)隔開的值指定一個(gè)列表范圍,例如,“1,2,5,7,8,9”
中杠 (-):可以用整數(shù)之間的中杠表示一個(gè)整數(shù)范圍,例如“2-6”表示“2,3,4,5,6”
正斜線(/):可以用正斜線指定時(shí)間的間隔頻率,例如“0-23/2”表示每?jī)尚r(shí)執(zhí)行一次。同時(shí)正斜線可以和星號(hào)一起使用,例如*/10,如果用在minute字段,表示每十分鐘執(zhí)行一次。

相關(guān)的權(quán)限文件

  • /etc/cron.deny 該文件中所列的用戶不允許使用 crontab 命令
  • /etc/cron.allow 該文件中所列的用戶允許使用 crontab 命令
  • /var/spool/cron/ 所有用戶 crontab 文件存放的目錄,文件名即用戶名

Crontab 服務(wù)

  • 安裝 Crontab 服務(wù)

CentOS 7.x

yum install crontabs

Fedora 23+

dnf install crontabs

在大多數(shù) Linux 發(fā)行版中已經(jīng)自帶的 Crontab ,依舊寫一下安裝方法

  • 啟用服務(wù)
systemctl start crond
  • 停止服務(wù)
systemctl stop crond
  • 查看服務(wù)狀態(tài)
systemctl status crond
  • 加入開機(jī)啟動(dòng)
systemctl enable crond
  • 取消開機(jī)啟動(dòng)
systemctl disable crond

命令格式詳解

Usage: crontab [options] file crontab [options] crontab -n [hostname]Options:-u <user> define user //設(shè)定某個(gè)用戶的crontab服務(wù),例如,“-u user1”表示設(shè)定 user1 用戶的 crontab 服務(wù),此參數(shù)一般由root用戶來運(yùn)行-e edit user's crontab //編輯 crontab 文件內(nèi)容。如果不指定用戶,則表示編輯當(dāng)前用戶的crontab文件-l list user's crontab //顯示 crontab 文件內(nèi)容,如果不指定用戶,則表示顯示當(dāng)前用戶的crontab文件內(nèi)容-r delete user's crontab //刪除某個(gè)用戶的 crontab 文件,如果不指定用戶,則默認(rèn)刪除當(dāng)前用戶的crontab文件,此動(dòng)作一般由 root 來執(zhí)行-i prompt before deleting //在刪除用戶的crontab文件時(shí)給確認(rèn)提示-n <host> set host in cluster to run users' crontabs //這個(gè)選項(xiàng)只有才 cron(8) 才啟用,可以根據(jù)已經(jīng)創(chuàng)建好了的配置文件來指定得對(duì)于一個(gè)集群來執(zhí)行任務(wù)-c get host in cluster to run users' crontabs //這個(gè)選項(xiàng)只有才 cron(8) 才啟用,可以查看集群目前的狀態(tài),需要和 -n 協(xié)同使用-s selinux context //selinux 相關(guān)選項(xiàng)-x <mask> enable debugging //開啟調(diào)試

使用方法

  • 輸入 crontab -e 并回車即可開始編輯當(dāng)前用戶的 crontab 文件,編輯完成保存之后文件立即生效

默認(rèn)使用 vi 編輯器,如果想要使用 vim 編輯器或者其他編輯器,可以新建環(huán)境變量 EDITOR,變量值為你想要使用的編輯器的指令,例如我想要使用 nano 作為編輯器,就可以執(zhí)行命令 “export EDITOR=nano” 來添加一個(gè)環(huán)境變量。
如果想要讓環(huán)境變量永久生效,可以將要執(zhí)行的命令寫入到 “~/.bashrc”中,這樣下次啟動(dòng)的時(shí)候就會(huì)自動(dòng)配置。

  • 如果想要?jiǎng)h除 crontab 文件可以使用 crontab -r 來刪除當(dāng)前用戶的 crontab 文件
  • 想要快速查看 crontab 文件可以使用命令 crontab -l

備份 crontab 文件

為了防止文件被意外刪除 , 我們可以在建立好了 crontab 任務(wù)之后備份一下相關(guān)的配置文件,筆者的思路是在復(fù)制一次當(dāng)期的文檔并在后面加上 “.backup” 來示意是備份文件,通常只需要執(zhí)行以下命令(以 root 用戶為例)

cp /var/spool/cron/root /var/spool/cron/root.bachup

如果當(dāng)前用戶沒有權(quán)限的話,可以先將自己的配置文件復(fù)制到自己的 HOME 目錄下也是可以的

一些簡(jiǎn)單的示例

每個(gè)月的 1 號(hào)的 2:30 分重啟 Apache 服務(wù)

30 2 1 * * systemctl restart httpd

每個(gè)星期的星期一的早上1點(diǎn)重啟 mariadb

0 1 * * 1 systemctl restart mariadb

更多的示例可以通過搜索輕松得找到,這里就不多說了

注意事項(xiàng)

通常來說,我們建立的 crontab 任務(wù)都是保存了之后立即執(zhí)行的,但是有的時(shí)候卻無法執(zhí)行,將命令單獨(dú)拿出來卻可以使用,這個(gè)時(shí)候就需要檢查一下 crontab 文件的環(huán)境變量是否正常。cron 不是 shell,在執(zhí)行的時(shí)候是不知道環(huán)境變量的,所以在腳本或者說是配置文件中提供必要的環(huán)境變量文件以及路徑,主要注意以下幾點(diǎn)

  • 配置文件中一點(diǎn)涉及路徑時(shí),使用絕對(duì)路徑
  • 任務(wù)執(zhí)行需要用到 python 或者 java 又或者其他環(huán)境變量的時(shí)候,需要通過 source 命令引入環(huán)境變量
  • 在某些情況下,手動(dòng)執(zhí)行腳本可以使用,但是放在 Crontab 中就無法執(zhí)行,就很有可能是由于環(huán)境變量引起的故障,可以通過在 crontab 中直接引入環(huán)境變量。
  • 其他事項(xiàng)

    • 很奇怪的是在我查閱了很多的資料,發(fā)現(xiàn)都說在 crontab 的任務(wù)執(zhí)行完畢之后會(huì)向當(dāng)前系統(tǒng)用戶發(fā)送一封郵件,但是我的 crontab 在進(jìn)行了2天的任務(wù)都沒有接收到任何郵件
    • crontab 的文件剛剛寫入不一定會(huì)立即執(zhí)行,執(zhí)行的延遲大概在2分鐘左右,如果重啟 crond 服務(wù)則立即執(zhí)行
    • 據(jù)說在 crontab 中 % 是有特殊含義的,表示換行的意思。但是在筆者的驗(yàn)證中沒有發(fā)現(xiàn)這一現(xiàn)象
    • 如果只運(yùn)行 crontab -r 有可能刪除 crontab 目錄下的所有用戶的 crontab

    轉(zhuǎn)載于:https://www.cnblogs.com/divent/p/5743008.html

    總結(jié)

    以上是生活随笔為你收集整理的Linux Crontab 任务管理工具命令以及示例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。