redhat 9.0 中任务自动执行的实现方式

原创 2003年08月01日 09:37:00

注:最近要在 redhat 9.0 上用 crontab实现任务的自动执行,搜索了这篇文章,讲的还是很详细。原文在http://www.hk.redhat.com/docs/manuals/linux/RHL-9-Manual-TW/custom-guide/index.html

 

28 自動工作排程管理<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

Linux 中,可以設定系統的工作在一個指定的時間、日期或當系統平均負載低於指定的數據時自動執行。 Red Hat Linux 已預先設定好執行重要的系統工作以保持系統的更新,例如由 locate 指令使用的 slocate 資料庫是每日更新的。 系統管理員可以使用自動的工作管理來執行定期的備份、監視系統與執行自訂的程式碼等等。

Red Hat Linux 中含有四個自動工作管理程式: cronanacronat 以及 batch

28.1. Cron

Cron 是一種系統程式(daemon),它可以依據所設定的時間、日期、月份、星期幾以及星期的結合來排程重覆性工作的執行。

Cron 假設系統是在持續開機的情況下,假如在工作排定的時間,系統沒有開機,該工作將不會被執行。 如要以時間的週期而不是確切的時間來設定工作的話,請參考 28.2 如要排定僅執行一次的工作,請參考 28.3

如要使用 cron 的服務,您必須要安裝 vixie-cron RPM 套件,而且 crond 的服務必須在執行中。 要查看該套件是否已安裝,請使用 rpm -q vixie-cron 指令; 要查看服務是否在執行中,請使用 /sbin/service crond status 指令。

28.1.1. 設定 Cron 的工作排程

cron 的主要設定檔案 /etc/crontab 包含了以下這幾行:

一開始的四行是使用來設定 cron 工作要執行之環境的變數,例如 SHELL 變數的值將告訴系統要使用那一個 shell 環境(在此為 bash shell),而 PATH 變數則定義要用來執行指令的路徑。 cron 工作的輸出將會以電子郵件寄到 MAILTO 變數所定義的使用者名稱,假如 MAILTO 變數定義為一個空的字串 (MAILTO=""),將不會傳送任何的電子郵件。 HOME 變數可用來設定執行指令或程式碼時要使用的家目錄。

/etc/crontab 檔案中的每一行都代表一項工作,而且都有相同的格式:

·   0 59 的任何整數

·   0 23 的任何整數

·   日期 1 31 的任何整數(假如有指定月份的話,必須是一個有效的日期)

·   月份 1 12 的任何整數(或者是月份名稱的縮寫,如 janfeb 等等)

·   星期幾 0 7 的任何整數,0 7 代表星期日(或者是縮寫名稱,如 sunmon 等等)

·   指令 要執行的指令(這裡的指令可以是一個例如 ls /proc >> /tmp/proc 的指令或用來執行您所撰寫之程式碼的指令。)

對於以上的任何數值,可以使用一個星號(*)來指定所有有效的數值,例如在月份的一個星號代表在其他數值的範圍內每月執行該指令。

整數之間的一個引號(-)代表整數的一個範圍,例如 1-4 代表整數 1, 2, 3 4

以逗號(,)分隔開的一系列數值代表一個清單,例如 3, 4, 6, 8 代表這四個特定的整數。

斜線符號(/)用來代表時間間隔的數值,只要在一個數值範圍之後加上 /<整數> 即可在該範圍內跳過該整數所指定的數值,例如 0-59/2 在分鐘的欄位中可用來定義每隔兩分鐘執行一次工作。 間隔的數值也可以使用一個星號,如在月份欄位的數值 */3 可以使用來每三個月執行一次工作。

任何以井號(#)開頭的行都是註解,並且都不會被執行。

如您所看到的 /etc/crontab 檔案,它使用 run-parts 程式碼來分別執行 /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly /etc/cron.monthly 目錄中以每小時、每天、每星期或每月為基礎的程式碼。 這些目錄中的檔案應該都是 shell 程式碼。

假如一個 cron 的工作需要在預計的時間執行,而不是以每小時、每天、每星期或每月為基礎,可以將它增加至 /etc/cron.d 目錄中,在這個目錄中的所有檔案都使用與 /etc/crontab 檔案中相同的語法,請參考 範例 28-1 以取得相關範例。

範例 28-1. Crontab 的範例

root 之外的使用者可以使用 crontab 工具來設定 cron 的工作,所有使用者定義的 crontabs 都儲存在 /var/spool/cron 目錄中,並且由建立它們的使用者之使用者名稱來執行。 如要以一個使用者來建立一個 crontab,請以該使用者登入並輸入 crontab -e 指令以使用 VISUAL EDITOR 環境變數所指定的編輯器來編輯使用者的 crontab 這個檔案使用與 /etc/crontab 檔案相同的格式。 在儲存 crontab 所作的變更後,該 crontab 會依據使用者名稱儲存起來,並寫入到 /var/spool/cron/username 檔案中。

cron 系統程式會在每一分鐘檢查 /etc/crontab 檔案、/etc/cron.d/ /var/spool/cron 目錄是否有任何的變更,假如有任何的變更,它們將會被載入記憶體。 因此如果在 crontab 檔案更改後,並不需要重新啟動這個系統程式。

28.1.2. Cron 的存取控制

/etc/cron.allow /etc/cron.deny 檔案是用來限制使用者對 cron 的存取權限。 這兩個存取控制檔案的格式是在每一行放置一個使用者名稱,兩個檔案中都不允許有空白字元。 假如在修改存取控制檔案後,並不需要重新啟動 cron 系統程式 (crond),這些存取控制檔案將在使用者試著要增加或刪除一個 cron 工作時被讀取。

root 使用者隨時都可以使用 cron,不管使用者的名稱是否有列在存取控制檔案中。

假如 cron.allow 檔案存在的話,只有在其中列出的使用者允許使用 cron,而 cron.deny 檔案便會被忽略。

假如 cron.allow 檔案不存在的話,所有在 cron.deny 檔案中列出的使用者都不允許使用 cron

28.1.3. 啟動與停止服務

如要啟動 cron 服務,請使用 /sbin/service crond start 指令。 如要停止這項服務,您可以使用 /sbin/service crond stop 指令。 在此建議您在系統開機便啟動這項服務。

 

.net后台自动执行任务

继上篇《Windows服务实现不同平台数据库表的迁移》 引言          上次分享了用Windows服务实现任务。对此我想说,一般用Windows是来处理大数据的。一般的后台需要...
  • u013037201
  • u013037201
  • 2016年06月26日 15:00
  • 830

使用ServletContextListener完成定时任务(固定频率执行)

ServletContextListener在服务器启动的时候就会执行,这时候可以在里面写一些定时执行任务 这里进行模拟银行计息 首先创建一个类实现ServletContextListener接口...
  • java_raylu
  • java_raylu
  • 2017年07月02日 16:23
  • 104

虚拟机VMware下安装Red Hat Linux 9.0步骤详解

注意:本安装全部是在虚拟机上进行的,用的是ISO镜像文件安装。 1.安装完VMwareWorkstation后,启动VMwareWorkstation,新建一个虚拟机,其主界面如下图。     2....
  • suaoyang
  • suaoyang
  • 2014年06月07日 18:19
  • 9379

深入学习python (六) 用sched来定时执行任务

http://blog.csdn.net/jerk_zhang/article/details/20216569
  • passionboyxie
  • passionboyxie
  • 2014年10月09日 15:47
  • 4044

Java 实现定时任务的四种方式

Java 实现定时任务的四种方式
  • Zhang_Zippor
  • Zhang_Zippor
  • 2016年11月03日 18:25
  • 1388

基于spring注解实现定时任务

步骤一、 springmvc.xml中配置定时任务标签、添加命名空间: 在springmvn中配置只扫描@controller注解,springcontext不扫描,@controller注...
  • Fasure_Smile
  • Fasure_Smile
  • 2016年08月05日 16:33
  • 1872

CentOS Linux使用crontab运行定时任务详解

安装crontab: yum install crontabs 说明: /sbin/service crond start //启动服务 /sbin/service crond stop //...
  • edgdvcyz
  • edgdvcyz
  • 2016年11月26日 10:27
  • 6020

RedHat 9.0 中文显示问题

在安装Redhat Linux 9.0时,如果安装中选择的默认语言为简体中文,则在安装后,会出现某些文件名字为中文的,显示乱码的情况,查了相关资料,在网上搜寻到了一些方法。   网上的方法都基于修改R...
  • yangfei19890709
  • yangfei19890709
  • 2015年10月30日 13:27
  • 46

Oracle 11g 中的自动数据库维护任务管理

原贴地址:http://blog.itpub.net/22664653/viewspace-708399/ 对于11g版本的oracle 有三个自动维护定时任务。 1 自动优化器统计收集:为所有方...
  • haofeifei111
  • haofeifei111
  • 2014年01月10日 16:31
  • 894

虚拟机redhat 9.0上网解决方案

1.检查当前'用户’是不是root用户,如果不是root用户,必须切换root用户。如何切换root用户 点击:系统------>锁住屏幕 点击:切换用户 点击:其他 输入:root账号,点...
  • u011345872
  • u011345872
  • 2015年12月14日 13:56
  • 113
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:redhat 9.0 中任务自动执行的实现方式
举报原因:
原因补充:

(最多只允许输入30个字)