小魔女 发表于 2015-1-18 11:22:51

Linux设计天天一个linux命令(50):crontab命令仓酷云

每一个开发团队都对他的发行版做过测试后放出的.那些国际知名的大品牌更是如此。
前一天进修了at命令是针对仅运转一次的义务,轮回运转的例行性企图义务,linux体系则是由cron(crond)这个体系服务来把持的。Linux体系下面底本就有十分多的企图性事情,因而这个体系服务是默许启动的。别的,因为利用者本人也能够设置企图义务,以是,Linux体系也供应了利用者把持企图义务的命令:crontab命令。

1、crond简介
crond是linux下用来周期性的实行某种义务或守候处置某些事务的一个保卫历程,与windows下的企图义务相似,当安装完成操纵体系后,默许会安装此服务工具,而且会主动启动crond历程,crond历程每分钟会按期反省是不是有要实行的义务,假如有要实行的义务,则主动实行该义务。
Linux下的义务调剂分为两类,体系义务调剂和用户义务调剂。
体系义务调剂:体系周期性所要实行的事情,好比写缓存数据到硬盘、日记清算等。在/etc目次下有一个crontab文件,这个就是体系义务调剂的设置文件。
/etc/crontab文件包含上面几行:
#cat/etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=""HOME=/
#run-parts
51****rootrun-parts/etc/cron.hourly
247***rootrun-parts/etc/cron.daily
224**0rootrun-parts/etc/cron.weekly
4241**rootrun-parts/etc/cron.monthly
#
前四行是用来设置crond义务运转的情况变量,第一行SHELL变量指定了体系要利用哪一个shell,这里是bash,第二行PATH变量指定了体系实行命令的路径,第三行MAILTO变量指定了crond的义务实行信息将经由过程电子邮件发送给root用户,假如MAILTO变量的值为空,则暗示不发送义务实行信息给用户,第四行的HOME变量指定了在实行命令大概剧本时利用的主目次。第六至九行暗示的寄义将鄙人个大节具体报告。这里不在多说。
用户义务调剂:用户按期要实行的事情,好比用户数据备份、准时邮件提示等。用户可使用crontab工具来定制本人的企图义务。一切用户界说的crontab文件都被保留在/var/spool/cron目次中。其文件名与用户名分歧。
利用者权限文件:
文件:
/etc/cron.deny
申明:
该文件中所列用户不同意利用crontab命令
文件:
/etc/cron.allow
申明:
该文件中所列用户同意利用crontab命令
文件:
/var/spool/cron/
申明:
一切用户crontab文件寄存的目次,以用户名定名
crontab文件的寄义:
用户所创建的crontab文件中,每行都代表一项义务,每行的每一个字段代表一项设置,它的格局共分为六个字段,前五段是工夫设定段,第六段是要实行的命令段,格局以下:
minutehourdaymonthweekcommand
个中:
minute:暗示分钟,能够是从0到59之间的任何整数。
hour:暗示小时,能够是从0到23之间的任何整数。
day:暗示日期,能够是从1到31之间的任何整数。
month:暗示月份,能够是从1到12之间的任何整数。
week:暗示礼拜几,能够是从0到7之间的任何整数,这里的0或7代表日曜日。
command:要实行的命令,能够是体系命令,也能够是本人编写的剧本文件。

<br>
在以上各个字段中,还可使用以下特别字符:
星号(*):代表一切大概的值,比方month字段假如是星号,则暗示在满意别的字段的制约前提后每个月都实行该命令操纵。
逗号(,):能够用逗号离隔的值指定一个列表局限,比方,“1,2,5,7,8,9”
中杠(-):能够用整数之间的中杠暗示一个整数局限,比方“2-6”暗示“2,3,4,5,6”
正斜线(/):能够用正斜线指准时间的距离频次,比方“0-23/2”暗示每两小时实行一次。同时正斜线能够和星号一同利用,比方*/10,假如用在minute字段,暗示每非常钟实行一次。
2、crond服务
安装crontab:
yuminstallcrontabs
服务操纵申明:
/sbin/servicecrondstart//启动服务
/sbin/servicecrondstop//封闭服务
/sbin/servicecrondrestart//重启服务
/sbin/servicecrondreload//从头载进设置
检察crontab服务形态:
servicecrondstatus
手动启动crontab服务:
servicecrondstart
检察crontab服务是不是已设置为开机启动,实行命令:
ntsysv
到场开机主动启动:
chkconfig&ndash;level35crondon
3、crontab命令详解
1.命令格局:
crontab[-uuser]file
crontab[-uuser][-e|-l|-r]
2.命令功效:
经由过程crontab命令,我们能够在流动的距离工夫实行指定的体系指令或shellscript剧本。工夫距离的单元能够是分钟、小时、日、月、周及以上的恣意组合。这个命令十分设合周期性的日记剖析或数据备份等事情。
3.命令参数:
-uuser:用来设定某个用户的crontab服务,比方,“-uixdba”暗示设定ixdba用户的crontab服务,此参数一样平常有root用户来运转。
file:file是命令文件的名字,暗示将file做为crontab的义务列表文件并载进crontab。假如在命令行中没有指定这个文件,crontab命令将承受尺度输出(键盘)上键进的命令,并将它们载进crontab。
-e:编纂某个用户的crontab文件内容。假如不指定用户,则暗示编纂以后用户的crontab文件。
-l:显现某个用户的crontab文件内容,假如不指定用户,则暗示显现以后用户的crontab文件内容。
-r:从/var/spool/cron目次中删除某个用户的crontab文件,假如不指定用户,则默许删除以后用户的crontab文件。
-i:在删除用户的crontab文件时给确认提醒。
4.经常使用办法:
1).创立一个新的crontab文件
在思索向cron历程提交一个crontab文件之前,起首要做的一件事变就是设置情况变量EDITOR。cron历程依据它来断定利用哪一个编纂器编纂crontab文件。99%的UNIX和LINUX用户都利用vi,假如你也是如许,那末你就编纂$HOME目次下的.profile文件,在个中到场如许一行:
EDITOR=vi;exportEDITOR
然后保留并加入。无妨创立一个名为<user>cron的文件,个中<user>是用户名,比方,davecron。在该文件中到场以下的内容。
#(putyourowninitialshere)echothedatetotheconsoleevery
#15minutesbetween6pmand6am
0,15,30,4518-06***/bin/echodate>/dev/console
保留并加入。确信后面5个域用空格分开。
在下面的例子中,体系将每隔15分钟向把持台输入一次以后工夫。假如体系溃散或挂起,从最初所显现的工夫就能够一眼看出体系是甚么工夫中断事情的。在有些体系中,用tty1来暗示把持台,能够依据实践情形对下面的例子举行响应的修正。为了提交你方才创立的crontab文件,能够把这个新创立的文件作为cron命令的参数:
$crontabdavecron
如今该文件已提交给cron历程,它将每隔15分钟运转一次。
同时,新创立文件的一个正本已被放在/var/spool/cron目次中,文件名就是用户名(即dave)。
2).列出crontab文件
为了列出crontab文件,能够用:
$crontab-l
0,15,30,45,18-06***/bin/echo`date`>dev/tty1
你将会看到和下面相似的内容。可使用这类办法在$HOME目次中对crontab文件做一备份:
$crontab-l>$HOME/mycron
如许,一旦不当心误删了crontab文件,能够用上一节所报告的办法敏捷恢复。
3).编纂crontab文件
假如但愿增加、删除或编纂crontab文件中的条目,而EDITOR情况变量又设置为vi,那末就能够用vi来编纂crontab文件,响应的命令为:
$crontab-e
能够像利用vi编纂其他任何文件那样修正crontab文件并加入。假如修正了某些条目或增加了新的条目,那末在保留该文件时,cron会对其举行需要的完全性反省。假如个中的某个域呈现了超越同意局限的值,它会提醒你。
我们在编纂crontab文件时,没准会到场新的条目。比方,到场上面的一条:
#DT:deletecorefiles,at3.30amon1,7,14,21,26,26daysofeachmonth
3031,7,14,21,26**/bin/find-name"core-execrm{};
如今保留并加入。最幸亏crontab文件的每个条目之上到场一条正文,如许就能够晓得它的功效、运转工夫,更加主要的是,晓得这是哪位用户的功课。
如今让我们利用后面讲过的crontab-l命令列出它的全体信息:
$crontab-l
#(crondaveinstalledonTueMay413:07:431999)
#DT:echthedatetotheconsoleevery30minites
0,15,30,4518-06***/bin/echo`date`>/dev/tty1
#DT:deletecorefiles,at3.30amon1,7,14,21,26,26daysofeachmonth
3031,7,14,21,26**/bin/find-name"core-execrm{};
4).删除crontab文件
要删除crontab文件,能够用:
$crontab-r
5).恢复丧失的crontab文件
假如不当心误删了crontab文件,假定你在本人的$HOME目次下另有一个备份,那末能够将其拷贝到/var/spool/cron/<username>,个中<username>是用户名。假如因为权限成绩没法完成拷贝,能够用:
$crontab<filename>
个中,<filename>是你在$HOME目次中正本的文件名。
我倡议你在本人的$HOME目次中保留一个该文件的正本。我就有过相似的履历,无数次误删了crontab文件(由于r键紧挨在e键的右侧)。这就是为何有些体系文档倡议不要间接编纂crontab文件,而是编纂该文件的一个正本,然后从头提交新的文件。
有些crontab的变体有些奇异,以是在利用crontab命令时要分外当心。假如漏掉了任何选项,crontab大概会翻开一个空文件,大概看起来像是个空文件。这时候敲delete键加入,不要按<Ctrl-D>,不然你将丧失crontab文件。
5.利用实例
实例1:每1分钟实行一次command
命令:
*****command
实例2:每小时的第3和第15分钟实行
命令:
3,15****command
实例3:在上午8点到11点的第3和第15分钟实行
命令:
3,158-11***command
实例4:每隔两天的上午8点到11点的第3和第15分钟实行
命令:
3,158-11*/2**command
实例5:每一个礼拜一的上午8点到11点的第3和第15分钟实行
命令:
3,158-11**1command
实例6:每晚的21:30重启smb
命令:
3021***/etc/init.d/smbrestart
实例7:每个月1、10、22日的4:45重启smb
命令:
4541,10,22**/etc/init.d/smbrestart
实例8:每周6、周日的1:10重启smb
命令:
101**6,0/etc/init.d/smbrestart
实例9:天天18:00至23:00之间每隔30分钟重启smb
命令:
0,3018-23***/etc/init.d/smbrestart
实例10:每礼拜六的早晨11:00pm重启smb
命令:
023**6/etc/init.d/smbrestart
实例11:每小时重启smb
命令:
**/1***/etc/init.d/smbrestart
实例12:早晨11点到早上7点之间,每隔一小时重启smb
命令:
*23-7/1***/etc/init.d/smbrestart
实例13:每个月的4号与每周一到周三的11点重启smb
命令:
0114*mon-wed/etc/init.d/smbrestart
实例14:一月一号的4点重启smb
命令:
041jan*/etc/init.d/smbrestart
实例15:每小时实行/etc/cron.hourly目次内的剧本
命令:
01****rootrun-parts/etc/cron.hourly
申明:
run-parts这个参数了,假如往失落这个参数的话,前面就能够写要运转的某个剧本名,而不是目次名了
4、利用注重事项
1.注重情况变量成绩
偶然我们创立了一个crontab,可是这个义务却没法主动实行,而手动实行这个义务却没有成绩,这类情形通常为因为在crontab文件中没有设置情况变量引发的。
在crontab文件中界说多个调剂义务时,必要出格注重的一个成绩就是情况变量的设置,由于我们手动实行某个义务时,是在以后shell情况下举行的,程序固然能找到情况变量,而体系主动实行义务调剂时,是不会加载任何情况变量的,因而,就必要在crontab文件中指定义务运转所需的一切情况变量,如许,体系实行义务调剂时就没有成绩了。
不要假定cron晓得所必要的特别情况,它实在其实不晓得。以是你要包管在shelll剧本中供应一切需要的路径和情况变量,除一些主动设置的全局变量。以是注重以下3点:
1)剧本中触及文件路径时写全局路径;
2)剧本实行要用到java或其他情况变量时,经由过程source命令引进情况变量,如:
catstart_cbp.sh
#!/bin/sh
source/etc/profile
exportRUN_CONF=/home/d139/conf/platform/cbp/cbp_jboss.conf
/usr/local/jboss-4.0.5/bin/run.sh-cmev&
3)当手动实行剧本OK,可是crontab逝世活不实行时。这时候必需勇敢嫌疑是情况变量惹的祸,并能够实验在crontab中间接引进情况变量办理成绩。如:
0****./etc/profile;/bin/sh/var/www/java/audit_no_count/bin/restart_audit.sh
2.注重清算体系用户的邮件日记
每条义务调剂实行终了,体系城市将义务输入信息经由过程电子邮件的情势发送给以后体系用户,如许积少成多,日记信息会十分年夜,大概会影响体系的一般运转,因而,将每条义务举行重定向处置十分主要。
比方,能够在crontab文件中设置以下情势,疏忽日记输入:
0*/3***/usr/local/apache2/apachectlrestart>/dev/null2>&1
“/dev/null2>&1”暗示先将尺度输入重定向到/dev/null,然后将尺度毛病重定向到尺度输入,因为尺度输入已重定向到了/dev/null,因而尺度毛病也会重定向到/dev/null,如许日记输入成绩就办理了。
3.体系级义务调剂与用户级义务调剂

只要了解了Linux的基础之后,应该就可以很轻易的解决掉这方面的问题。而有些朋友们常常一接触Linux就是希望构架网站,根本没有想到要先了解一下Linux的基础。这是相当困难的。

再现理想 发表于 2015-1-20 22:50:06

应对Linux的发展历史和特点有所了解,Linux是抢占式多任务多用户操作系统,Linux最大的优点在于其作为服务器的强大功能,同时支持多种应用程序及开发工具。

灵魂腐蚀 发表于 2015-1-21 13:36:06

选择交流平台,如QQ群,网站论坛等。

冷月葬花魂 发表于 2015-1-24 15:10:44

如果你有庞大而复杂的测试条件,尽量把它剪裁得越小越好。可能你会遇到这种情况,对于一个问题会出现不同内容回答,这时你需要通过实践来验证。

第二个灵魂 发表于 2015-1-25 21:22:33

Linux最大的特点就是其开源性,这一点是十分难得的,这也是它能够存在到现在的原因之一。

不帅 发表于 2015-2-2 12:48:28

请问谁有Linux的学习心得的吗?简单的说说?

莫相离 发表于 2015-2-17 06:36:53

查阅经典工具书和Howto,特别是Howto是全球数以万计的Linux、Unix的经验总结非常有参考价值通常40%的问题同样可以解决。

乐观 发表于 2015-3-4 19:02:51

首先Linux是开源的,这也是最主要的原因,想学windows,Unix,对不起我们没源代码。也正是因为这样,Linux才能够像滚雪球一样越滚越大,发展到现在这种规模。

仓酷云 发表于 2015-3-8 15:41:24

另外Linux上也有很多的应用软件,安装运行了这些软件后,你就可以在Linux上编辑文档、图?片,玩游戏、上网、播放多媒体文件等。

山那边是海 发表于 2015-3-12 10:58:33

不同于Windows?系统需要花钱购买,因为Linux的核心是免费的,自由使用的,核心源代码是开放的。

透明 发表于 2015-3-19 20:47:45

安装一个新的软件时先看README,再看INSTALL然后看FAQ,最后才动手安装,这样遇到问题就知道为什么。如果Linux说明文档不看,结果出了问题再去论坛来找答案反而浪费时间。

海妖 发表于 2015-4-2 07:13:15

笔者五分钟后就给出了解决方法: “首先备份原文件到其他目录,然后删掉/usr/local/unispim/unispimsp.ksc,编辑 /usr/local/unispim/unispimsp.ini,最后重启动计算机
页: [1]
查看完整版本: Linux设计天天一个linux命令(50):crontab命令仓酷云