1.linux中的cron计划任务配置方法[详细]
2.Linux中cron命令的用法详解
3.cron中的***?
4.linux下配置基于cron的计划任务的3种方式
5.定时任务cron表达式(定时任务cron表达式每一分钟一次)
6.Linux系统中的11个Cron命令示例 [安排Cron作业]
linux中的cron计划任务配置方法[详细]
1. crontab命令选项复制代码
代码如下:
#crontab -u -l, -r, -e
-u指定一个用户
-l列出某个用户的任务计划
-r删除某个用户的任务
-e编辑某个用户的任务
2. cron文件语法与写法
可用crontab -e命令来编辑,编辑的是/var/spool/cron下对应用户的cron文件,也可以直接修改/etc/crontab文件。具体格式如下:
复制代码
代码如下:
Minute Hour Day Month Week command
分钟 小时 天 月 星期 命令
0- 0- 1- 1- 0-6 command
每个字段代表的含义如下:
复制代码
代码如下:
Minute 每个小时的第几分钟执行该任务
Hour 每天的第几个小时执行该任务
Day 每月的第几天执行该任务
Month 每年的第几个月执行该任务
DayOfWeek 每周的第几天执行该任务,0表示周日
Command 指定要执行的程序 、脚本或命令
在这些字段里,简约视频源码除了“Command”是必须指定的字段以外,其它字段皆为可选。对于不指定的字段,要用“*”来填补其位置。
3. 几个特殊符号的含义
“*”代表取值范围内的数字,
“/”代表”每”,
“-”代表从某个数字到某个数字,
“,”分开几个离散的数字
4. 关于cron配置文件/etc/crontab
cron 的主配置文件是 /etc/crontab,它包括下面几行:
复制代码
代码如下:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
* * * * root run-parts /etc/cron.hourly
4 * * * root run-parts /etc/cron.daily
4 * * 0 root run-parts /etc/cron.weekly
4 1 * * root run-parts /etc/cron.monthly
前四行是用来配置 cron 任务运行环境的变量:
SHELL 变量的值指定shell 环境(此处默认为 bash shell);PATH 变量定义用来执行命令的程序路径;cron 任务的输出被邮寄给 MAILTO 变量定义的用户名,如果 MAILTO 变量被定义为空白字符串(MAILTO=""),电子邮件就不会被寄出;HOME 变量可以用来设置在执行命令或脚本时使用的主目录。
如在 /etc/crontab 文件中run-parts部分所示,它使用 run-parts 脚本来执行存在于 /etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly 和 /etc/cron.monthly 目录中的脚本,这些脚本被相应地按照预设时间在每小时、每日、每周、或每月执行。这些目录中的文件应该是 shell 脚本,并且具有可执行权限(chmod +x filename)。
如果某 cron 任务需要根据调度来执行,而不是每小时、每日、每周、或每月地执行,它可以被添加到/etc/cron.d目录中。该目录中的所有文件使用和 /etc/crontab 中一样的语法。
每次编辑完某个用户的cron设置后,cron自动在/var/spool/cron下生成一个与此用户同名的文件,此用户的cron信息都记录在这个文件中,这个文件是不可以直接编辑的,只可以用crontab -e 来编辑。cron启动后每过一份钟读一次这个文件,检查是否要执行里面的命令。因此此文件修改后不需要重新启动cron服务。
5. 常见cron示例参考
5 * * * * ls 指定每小时的第5分钟执行一次ls命令
5 * * * ls 指定每天的 5: 执行ls命令
7 8 * * ls 指定每月8号的7:分执行ls命令
5 8 6 * ls 指定每年的6月8日5:执行ls命令
6 * * 0 ls 指定每星期日的6:执行ls命令[注:0表示星期天,1表示星期1,以此类推,也可以用英文来表示,sun表示星期天,mon表示星期一等。]
3 , * * ls 每月号及号的3:执行ls命令[注:“,”用来连接多个不连续的reactconsumer源码时段]
8- * * * ls 每天8-点的第分钟执行ls命令[注:“-”用来连接连续的时段]
*/ * * * * ls 每分钟执行一次ls命令 [即每个小时的第0 分钟执行ls命令 ]
6 */ * * ls 每个月中,每隔天6:执行一次ls命令[即每月的1、、、日是的6:执行一次ls命令 ]
每天7:以root 身份执行/etc/cron.daily目录中的所有可执行文件
7 * * * root run-parts /etc/cron.daily [ 注:run-parts参数表示,执行后面目录中的所有可执行文件
第、、分钟输出到/tmp/cron1.txt:
,, * * * * echo "第、、分钟输出一次" /tmp/cron1.txt
以用户lzw.me的身份每两小时就运行某个程序:
0 */2 * * * lzw.me /usr/bin/somecommand /dev/null
6. 特别提示
A、cron配置文件路径
#vi /etc/crontab
B、重启cron的方法
#/etc/rc.d/init.d/crond restart
Usage: /etc/rc.d/init.d/crond { start|stop|status|reload|restart|condrestart}
C、别忘了将脚本改成可执行
chmod +x filename
Linux中cron命令的用法详解
linux中有一个命令可以定期来执行系统任务。这就是crond服务。下面介绍下crontab命令的用法。
linux任务调度的工作主要分为以下两类:
编辑/etc/crontab 文件配置cron
cron服务每分钟不仅要读一次 /var/spool/cron内的所有文件,还需要读一次/etc/crontab,因此我们配置这个文件也能运用cron服务做一些事情。用 crontab配置是针对某个用户的,而编辑/etc/crontab是针对系统的任务。此文件的文件格式是:
1、系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存
2、个人执行的工作:某个用户定期要做的工作,例如每隔分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置
crontab是UNIX系统下的定时任务触发器,其使用者的权限记载在下列两个文件中:
文件 含义
/etc/cron.deny 该文件中所列的用户不允许使用crontab命令
/etc/cron.allow 该文件中所列的用户允许使用crontab命令
/var/spool/cron/ 是所有用户的crontab文件
crontab命令的格式为:crontab –l|-r|-e|-i [username],其参数含义如表一:
参数名称 含义 示例
-l 显示用户的crontab文件的内容 crontab –l
-i 删除用户的crontab文件前给提示 crontab -ri
-r 从crontab目录中删除用户的crontab文件 crontab -r
-e 编辑用户的Crontab文件 crontab -e
用户所建立的crontab文件存于/var/spool/cron中,其文件名与用户名一致。
它的格式共分为六段,前五段为时间设定段,第六段为所要执行的命令段,
格式如下:* * * *
*其时间段的含义如表二:
段 含义 范围
第一段 代表分钟 0—
第二段 代表小时 0—
第三段 代表日期 1—
第四段 代表月份 1—
第五段 代表星期几,0代表星期日 0—6
例:如果用户的Crontab文件的内容是: * * * echo its dinner time,则系统每天的:显示‘its dinner time’
示例(创建一个cron全过程,每分钟都会在test.txt里输入当前时间):
1、以普通用户登录Linux系统(我用的是CentOS4.1)
2、
代码如下:
$crontab –e
说明:系统默认的编辑器是VIM,如果不是请加上以下shell:
代码如下:
$EDITOR=vi
$export EDITOR
3、输入
代码如下:
*/1 * * * * date $HOME/test.txt”,save and exit VIM
4、
代码如下:
$su root
5、
代码如下:
$cd /etc/init.d
6、
代码如下:
./crond restart
下面看看看几个具体的例子:
0 */2 * * * /sbin/service mand –
…
Ctrl + D
cron中的***?
这个是Cron时间表达式。分别对应的是秒、分、时、日、周、年。oemwifi源码前5个是必须的,最后一个可选,用户这个表达式表示每天的0点分准时执行。
例如:
0/2 * * * ? 这个的意思是每两分钟触发一次
0/ * * * ? 这个就是每分钟触发一次
扩展资料:
计划任务
Cron 是Linux的内置服务,但它不自动起来,可以用以下的方法启动、关闭这个服务:
/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置
百度百科-cron
linux下配置基于cron的计划任务的3种方式
直接修改 /etc/crontab 文件可以为任何用户配置计划任务。
运行 crontab -e 命令可以为当前用户配置计划任务,使用 crontab -u 用户名 -e 命令为特定用户配置计划任务;使用 crontab -l 命令查看当前用户的计划任务,使用 crontab -u 用户名 -l 命令查看特定用户的计划任务。
在 /var/spool/cron/crontabs 文件夹下配置特定用户的计划任务,具体操作如下所示:
注意:
1、方式二和方式三是对应的。即:使用方式二修改计划任务,方式三中会对应的跟着变化,反之亦然。
2、配置特定用户的计划任务是指由特定用户运行此计划任务。
定时任务cron表达式(定时任务cron表达式每一分钟一次)
写定时器时用到,记录一下:
Cron表达式是一个字符串,字符串以5或6个空格隔开,分开工6或7个域,每一个域代表一个含义,Cron有如下两种语法
格式:
Seconds Minutes Hours DayofMonth Month DayofWeek Year 或
Seconds Minutes Hours DayofMonth Month DayofWeek
每一个域可出现的字符如下:
代码
Seconds:可出现,- * / 四个字符,有效范围为0-的整数
Minutes:可出现,- * / 四个字符,有效范围为0-的整数
Hours:可出现,- * / 四个字符,有效范围为0-的整数
DayofMonth:可出现,- * / ? L W C八个字符,有效范围为0-的整数
Month:可出现,- * / 四个字符,有效范围为1-的整数或JAN-DEc
DayofWeek:可出现,- * / ? L C #四个字符,有效范围为1-7的整数或SUN-SAT两个范围。1表示星期天,2表示星期一, 依次类推
Year:可出现,- * / 四个字符,有效范围为-年
每一个域都使用数字,但还可以出现如下特殊字符,它们的含义是:
(1)*:表示匹配该域的任意值,假如在Minutes域使用*,即表示每分钟都会触发事件。
(2)?只能用在DayofMonth和DayofWeek两个域。它也匹配域的任意值,但实际不会。因为DayofMonth和DayofWeek会相互影响。
例如想在每月的日触发调度,不管日到底是星期几,则只能使用如下写法: * ?其中最后一位只能用?而不能使用*。
如果使用*表示不管星期几都会触发,实际上并不是这样。
(3)-:表示范围,pythonkms源码例如在Minutes域使用5-,表示从5分到分钟每分钟触发一次
(4)/:表示起始时间开始触发,然后每隔固定时间触发一次,例如在Minutes域使用5/,则意味着5分钟触发一次,而,等分别触发一次.
(5),表示列出枚举值值。例如:在Minutes域使用5,,则意味着在5和分每分钟触发一次。
(6)L:表示最后,只能出现在DayofWeek和DayofMonth域,如果在DayofWeek域使用5L,意味着在最后的一个星期四触发。
(7)W:表示有效工作日(周一到周五),只能出现在DayofMonth域,系统将在离指定日期的最近的有效工作日触发事件。
例如:在DayofMonth使用5W,如果5日是星期六,则将在最近的工作日:星期五,即4日触发。如果5日是星期天,则在6日触发;
如果5日在星期一到星期五中的一天,则就在5日触发。另外一点,W的最近寻找不会跨过月份
(8)LW:这两个字符可以连用,表示在某个月最后一个工作日,即最后一个星期五。
(9)#:用于确定每个月第几个星期几,只能出现在DayofMonth域。例如在4#2,表示某月的第二个星期三。
举几个例子:
0 0 2 1 * ? * 表示在每月的1日的凌晨2点调度任务
0 ? * MON-FRI 表示周一到周五每天上午:执行作业
0 ? 6L - 表示-年的每个月的最后一个星期五上午:执行作业
linux
一个cron表达式有至少6个(也可能7个)有空格分隔的时间元素。
按顺序依次为
秒(0~)
分钟(0~)
小时(0~)
天(月)(0~,但是你需要考虑你月的天数)
月(0~)
天(星期)(1~7 1=SUN 或 SUN,MON,TUE,WED,THU,FRI,SAT)
7.年份(-)
其中每个元素可以是一个值(如6),一个连续区间(9-),一个间隔时间(8-/4)(/表示每隔4小时),一个列表(1,3,5),通配符。
由于"月份中的日期"和"星期中的日期"这两个元素互斥的,必须要对其中一个设置.
0 0 ,, * * ? 每天上午点,下午2点,4点
0 0/ 9- * * ? 朝九晚五工作时间内每半小时
0 0 ? * WED 表示每个星期三中午点
"0 0 * * ?" 每天中午点触发
"0 ? * *" 每天上午:触发
"0 * * ?" 每天上午:触发
"0 * * ? *" 每天上午:触发
"0 * * ? " 年的每天上午:触发
"0 * * * ?" 在每天下午2点到下午2:期间的每1分钟触发
"0 0/5 * * ?" 在每天下午2点到下午2:期间的每5分钟触发
"0 0/5 , * * ?" 在每天下午2点到2:期间和下午6点到6:期间的每5分钟触发
"0 0-5 * * ?" 在每天下午2点到下午2:期间的每1分钟触发
"0 , ? 3 WED" 每年三月的星期三的下午2:和2:触发
"0 ? * MON-FRI" 周一至周五的上午:触发
"0 * ?" 每月日上午:触发
"0 L * ?" 每月最后一日的上午:触发
"0 ? * 6L" 每月的最后一个星期五上午:触发
"0 ? * 6L -" 年至年的每月的最后一个星期五上午:触发
"0 ? * 6#3" 每月的第三个星期五上午:触发
有些子表达式能包含一些范围或列表
例如:子表达式(天(星期))可以为 “MON-FRI”,“MON,WED,FRI”,“MON-WED,SAT”
“*”字符代表所有可能的值
因此,“*”在子表达式(月)里表示每个月的含义,“*”在子表达式(天(星期))表示星期的功放源码每一天
“/”字符用来指定数值的增量
例如:在子表达式(分钟)里的“0/”表示从第0分钟开始,每分钟
在子表达式(分钟)里的“3/”表示从第3分钟开始,每分钟(它和“3,,”)的含义一样
“?”字符仅被用于天(月)和天(星期)两个子表达式,表示不指定值
当2个子表达式其中之一被指定了值以后,为了避免冲突,需要将另一个子表达式的值设为“?”
“L” 字符仅被用于天(月)和天(星期)两个子表达式,它是单词“last”的缩写
但是它在两个子表达式里的含义是不同的。
在天(月)子表达式中,“L”表示一个月的最后一天
在天(星期)自表达式中,“L”表示一个星期的最后一天,也就是SAT
如果在“L”前有具体的内容,它就具有其他的含义了
例如:“6L”表示这个月的倒数第6天,“FRIL”表示这个月的最一个星期五
注意:在使用“L”参数时,不要指定列表或范围,因为这会导致问题
字段 允许值 允许的特殊字符
秒 0- , - * /
分 0- , - * /
小时 0- , - * /
日期 1- , - * ? / L W C
月份 1- 或者 JAN-DEC , - * /
星期 1-7 或者 SUN-SAT , - * ? / L C #
年(可选) 留空, - , - * /
注意:日和星期是任先其一
?代表可有可无
*:代表每一年
秒 分 时 日 月 星期几 年
0 0 0 ? //代表:年月日0点0分0秒执行(星期几:'?'代表忽略)
0 0 0 ? * //代表:每年月日0点0分0秒执行
0 0 0 * ? //代表:每月日0点0分0秒执行
0 0 1 1 * ? //代表:每月1号1点0分0秒执行
0 0 1 1 3,6,9 ? //代表:3月 6月 9月,1号1点0分0秒执行
0 0 1 1 2-5 ?
Linux系统中的个Cron命令示例 [安排Cron作业]
Linux系统中,Cron命令是自动化后台任务的关键工具,它允许管理员轻松安排和执行定期任务,无需人工干预。Cron守护进程尤其适用于备份、更新和文件同步等需要定时执行的操作。
每个用户都可在自己的Crontab中创建、修改和删除任务,系统默认启用cron,但可通过限制用户权限来管理。Crontab文件由六字段组成,分别代表时间参数和执行命令。例如,要列出当前用户的Crontab任务,可使用crontab -l命令,编辑则使用crontab -e,这会打开VI编辑器进行编辑。
查看特定用户计划的作业,root用户有完全权限,普通用户则受限。删除Crontab时需谨慎,使用-i选项进行确认。特殊字符如星号、减号等在时间表中也有特定含义,如每天凌晨:执行任务。
Cron作业可以同时执行多个命令,通过使用双符号(&&)实现。另外,系统管理员还可以通过预定义的目录来管理系统范围的计划。默认情况下,cron会发送电子邮件通知,若想禁用,只需在作业末尾添加相应选项。
总的来说,Cron命令的使用有助于提高任务执行的效率和准确性。想深入了解,可通过终端输入"man crontab"查阅手册页。通过这些命令,您可以方便地安排Linux系统的各种定时任务。
Linux之定时任务Crond解析
定时任务Crond介绍Crond是linux系统中用来定期执行命令/脚本或指定程序任务的一种服务或软件,一般情况下,我们安装完Centos5/6 linux操作系统之后,默认便会启动Crond任务调度服务。
Crond服务会定期(默认每分钟检查一次)检查系统中是否有要执行的任务工作,如果有,便会根据其预先设定的定时任务规则自动执行该定时任务工作,这个crond定时任务服务就相当于我们平时早起使用的闹钟一样。
必须保留的启动服务:
crond:定时任务服务
network:网络服务
rsyslog:日志服务
sshd:远程链接服务
sysstat:系统监控服务(涉及一系列监控工具)
为什么要使用定时任务呢?
我们举个例子说明:例如,我们的数据库或者代码程序需要每天晚上0点做一次全备份,这样每天夜里都需要执行的周期性工作,如果要让人操作的话,就得每天半夜爬起来,然后登录系统执行任务,执行完接着睡觉。另外,执行任务的过程也可能持续几个小时,这样一来,一个晚上我们就都不用睡觉了,这样显然是不行的。那么有什么办法来解决这个周期性的执行任务需求呢?
这就是linux系统的定时任务Crond,这相当于我们平时生活中的闹钟功能,每天晚上提前设置定时,早晨按时叫醒你。
ls -l /var/log/messages* #系统的日志
ls -l /var/log/secure* #用户登录日志
用户执行的任务工作:某个用户或系统管理员定期要做的任务工作,例如每隔5分钟和互联网上时间服务器进行时间同步(这是安装系统基础优化部分的内容),每天晚上0点备份网站站点数据及数据库数据,一般这些工作需要由每个运维自行设置才行。
服务器时间同步
复制代码 代码如下:
echo "*/5 * * * * /usr/sbin/ntpdate time.nist.gov /dev/null " /var/spool/cron/root
可通过上面的命令设置每5分钟执行一次。每次将互联网时间同步到本地Linux系统。
crontab -l 查看当前用户的定时任务配置。*号 下面会详讲~~
time.nist.gov是NTP服务器地址 time.windows.com,微软自家的时间服务器。 更多请参考 == 国内常用NTP服务器地址及IP
crontab(命令):正如前面所说的这个命令可以周期性的执行任务工作,例如:每五分钟做一次服务器时间同步。要执行crontab这个命令,也需要启动一个服务crond才行。这个crontab命令是生产工作中最常用到的命令,请大家务必掌握。
1、开机自启动crond服务
2、此时此刻服务的状态(查看,开启,关闭)
3、如何查看进程
ps -ef | grep crond
小结提示:
我们所说的crond服务是运行的程序,而crontab是用来管理用户的定时任务(规则)的命令
crond服务是企业生产工作中常用的重要服务,at和anacron很少用,可以忽略
几乎每个服务器都会用到crond服务
上千服务器可以开发分布式定时任务项目方案(批量管理ansible/saltstack)
定时任务Crond使用说明
[root@chengliang ~]# crontab --help
crontab: invalid option -- '-'
crontab: usage error: unrecognized option
usage: crontab [-u user] file
crontab [-u user] [ -e | -l | -r ]
(default operation is replace, per .2)
-e (edit user's crontab)
-l (list user's crontab)
-r (delete user's crontab)
-i (prompt before deleting user's crontab)
-s (selinux context)
[root@chengliang ~]#
crontab -l 查看当前用户的定时任务配置
crontab -e 进入当前用户的定时任务vim编辑模式
crontab -u 用户名 -l 查看指定用户的定时任务设置
重点
通过crontab我们可以在固定的间隔时间执行指定的系统指令或script脚本。时间间隔的单位可以是分钟,小时,日,月,周及以上的任意组合(注意:日和周不要组合)。crond服务通过crontab命令可以很容易的实现周期性的日志分析或数据备份等企业运维场景工作
使用者权限及定时任务文件
文件 说明 /etc/cron.deny(拒绝) 该文件中所列用户不允许使用crontab /etc/cron.allow(允许) 该文件优先级高于cron.deny(默认不存在,一般不用) /var/spool/cron/ 所有用户crontab配置文件默认都存在此目录,文件名以用户名命名[root@chengliang ~]# cat /etc/cron.deny
zcl
[root@chengliang~]# su - zcl
[chensiqi@chengliang~]$ crontab -l
You (chensiqi) are not allowed to use this program (crontab)
See crontab(1) for more information
[zcl@chengliang~]$ crontab -e
You (chensiqi) are not allowed to use this program (crontab)
See crontab(1) for more information
crontab { -l | -e } 实际上就是在操作/var/spool/cron/当前用户这样的文件
默认情况下,当用户建立定时任务规则后,该规则记录对应的配置文件会存在于/var/spool/cron中,其crontab配置文件对应的文件名与登录的用户名一致,如:root用户的定时任务配置文件为/var/spool/cron/root
[root@chengliang ~]# ls /var/spool/cron/
root #默认是没有的,只有创建了定时任务才有
[root@chengliang ~]# cat /var/spool/cron/root
*/5 * * * * /sbin/ntpdate time.windows.com /dev/null
Crontab定时任务的书写格式很简单,用户的定时任务规则一般分为6个段(每个段通过空格来分隔,系统的定时任务为/etc/crontab,分为7个段,空格来分隔),前五段为时间的设定段,第六段为所要执行的命令或脚本任务段
用户定时任务实例:
* * * * cmd #每小时的分钟执行
* * * cmd #每天4点的分钟执行
* * cmd #每周日的点分执行
* * cmd #每月1日的4点分执行
提示:
1、cmd为要执行的命令或脚本,例如:/bin/sh /server/scripts/chensiqi.sh
2、每个列之间必须要有一个空格。多个空格可以么?自己实践 == 经我本人测试有多个空格也可以执行!!
时间记忆口诀:分时日月周
crontab 语法格式中特殊符号含义如下表
特殊符号 含义 * *号,表示任意时间都,实际就是“每”的意思 - 减号表示分隔符,表示一个时间范围,区间段,如-点,例如:每天的,,点的分执行任务。 - * * * cmd , 逗号,表示分隔时段的意思例如每天的5点点分执行任务, 5, * * * cmd /n n代表数字,即“每隔n单位时间”,例如:每分钟执行一次任务可以写成/** * * * cmd,其中,/,的范围是0-,因此也可以写成0-/linux中定时任务crontab编写
使用crontab可以在指定时间执行Linux命令或脚本,如系统管理员安排备份任务。添加crontab作业的命令是:
# crontab –e
示例:0 5 * * * /root/bin/backup.sh,表示每天早上5点运行 /root/bin/backup.sh。
crontab各项功能描述如下:
格式:{ minute} { hour} { day-of-month} { month} { day-of-week} { full-path-to-shell-script}
minute: 0-
hour: 0-
day-of-month: 0-
month: 1-
day-of-week: 0-7, 星期日为0或7
作业示例:
1. 每天凌晨过一分钟执行备份,适合备份操作。
1 0 * * * /root/bin/backup.sh
2. 每个工作日(Mon - Fri): PM 进行备份。
* * 1,2,3,4,5 /root/bin/backup.sh
等效于:
* * 1-5 /root/bin/backup.sh
3. 每5分钟运行一次命令。
*/5 * * * * /root/bin/check-status.sh
4. 每个月的第一天 1: PM 运行。
1 * * /root/bin/full-backup.sh
5. 每个工作日 PM 执行。
0 * * 1-5 /root/bin/incremental-backup.sh
crontab命令选项:
crontab –e: 编辑crontab文件,若不存在则自动创建。
crontab –l: 显示crontab文件内容。
crontab -r: 删除crontab文件。
crontab -ir: 删除crontab文件前提醒用户。
在Linux平台上使用crontab实现任务调度,编写cron脚本。可以设置任务以固定频率执行,如每隔几分钟、小时或天执行一次。crond进程负责读取和执行任务,无需用户启动或关闭。crontab文件管理着定时任务,包括crontab文件、cron.d、cron.daily、cron.hourly、cron.monthly、cron.weekly等。
若要以特定时间执行任务,可以使用at命令,指定执行时间及脚本文件。导出和编辑crontab配置文件后,使用命令导入新配置。不建议直接修改系统cron相关配置文件。启动crond进程用/etc/init.d/crond start,开机自动启动设置用chkconfig --add crond。
通过实例讲解,了解如何在crontab中设置分、时、日、月、周等时间参数,以及如何编辑和删除crontab文件。在/etc/crontab文件中可设定系统定期执行的任务,使用crontab命令来管理这些任务。
总结,crontab提供了灵活的定时任务管理方式,帮助自动化执行Linux操作,简化工作流程。
定时自动实现Linux文件上传linux定时上传
随着互联网日新月异,在软件开发中,文件上传不仅是一个普遍而常见的问题,而且也是实现业务数据交互的重要手段。特别是当Linux上的文件上传变得与时俱进,实现Linux的定时自动文件上传就成为时下的热点。
那么,如何在Linux上实现定时自动文件上传呢?首先,我们可以通过定义一个linux定时任务即cron实现定时自动文件上传:
1、编辑cron任务:
sudo crontab -e
2、定义定时任务:
比如每隔1小时自动上传:
0 * * * * rsync -rv /src/file dest:src >/dev/null 2>&1
上面的命令行中,“rsync”代表使用rsync命令,“-rv”代表递归拷贝(-r)及显示进度(-v),/src/file代表需要上传的文件,dest:src就是目标服务器的文件路径。
3、重启cron服务:
sudo service cron restart
这样,就可以实现Linux定时自动文件上传的功能。
此外,也可以使用Linux自带的程序如inotifywait实现定时自动文件上传:
1、创建一个脚本文件,比如upload.sh:
#!/bin/bash
inotifywait -m /src/ -e create -e moved_to |
while read path action file; do
rsync -rv /src/file dest:src >/dev/null 2>&1
done
上面的脚本中,inotifywait用来实时监听文件变动,当src目录下的文件发生变动的时候就会触发rsync上传脚本;-m代表监听模式,-e代表文件变动的类型;path代表上传文件的路径,action代表文件变动的动作(create或moved_to),file代表变动的文件;紧接着的rsync命令用来完成文件的上传。
2、执行脚本:
sh upload.sh
这样就可以实现定时自动Linux文件上传的功能了。
总结起来,要实现定时自动Linux文件上传,有两种方法:一种是通过cron定时任务,另一种是使用inotifywait实现实时监听文件变动。两者都可以实现定时自动文件上传,只不过第二种方法更加灵活,因为可以根据需要定制相应的文件上传脚本。
Linux Cron 定时任务
Linux Cron 定时任务是一种常用的功能,用于定期执行系统备份、数据导出等操作。Cron在Linux中作为后台守护进程crond,负责执行预设的脚本,并始终保持运行。管理这些任务的工具是crontab,它允许添加、编辑、删除和查看定时作业,但不会自动后台运行,需手动调用。
要开启crond服务,可通过systemctl命令执行。创建定时任务时,如定时导出MySQL数据,首先编写一个脚本(如backup.sh),然后在名为backup.cron的作业文件中设定执行时间,如每天1点运行。crontab命令用于添加任务,如`crontab /home/apps/backup.cron`。查看任务列表,确认任务已添加:`crontab -l`。
cron的定时任务通过7部分时间描述,包括分钟、小时、日期、月份、星期和年份,每个部分都支持特殊字符如*、?、-等。例如,`0 1 * * * /home/apps/backup.sh`表示每天1点执行backup.sh。删除任务可使用`crontab -r`,编辑任务则需使用`crontab -e`编辑后重新添加。
遇到任务执行异常时,可以在/var/log/cron目录下查看日志。关于cron的详细操作和相关知识,推荐进一步阅读相关主题如《人类简史》、《软件架构和中台》等。