linux crond 定时,linux下添加crond定时任务
一.crond命令
crond 是linux用来定期执行程序的命令。当安装完成操作系统之后,默认便会启动此任务调度命令。crond命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。
/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置
/sbin/service crond status //查看服务状态
crond读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间。
crond的配置文件称为“crontab”,是“cron table”的简写。
二.crond在3个地方查找配置文件
1、/var/spool/cron/ 这个目录下存放的是每个用户包括root的crontab任务,每个任务以创建者的名字命名,比如tom建的crontab任务对应的文件就是/var/spool/cron/tom。
一般一个用户最多只有一个crontab文件。
2、/etc/crontab 这个文件负责安排由系统管理员制定的维护系统以及其他任务的crontab。
3、/etc/cron.d/ 这个目录用来存放任何要执行的crontab文件或脚本。
三.权限
crontab权限问题到/var/adm/cron/下一看,文件cron.allow和cron.deny是否存在
用法如下:
1、如果两个文件都不存在,则只有root用户才能使用crontab命令。
2、如果cron.allow存在但cron.deny不存在,则只有列在cron.allow文件里的用户才能使用crontab命令,如果root用户也不在里面,则root用户也不能使用crontab。
3、如果cron.allow不存在, cron.deny存在,则只有列在cron.deny文件里面的用户不能使用crontab命令,其它用户都能使用。
4、如果两个文件都存在,则列在cron.allow文件中而且没有列在cron.deny中的用户可以使用crontab,如果两个文件中都有同一个用户,
以cron.allow文件里面是否有该用户为准,如果cron.allow中有该用户,则可以使用crontab命令。
四. crontab命令
crond服务提供crontab命令来设定crond服务的,以下是这个命令的一些参数与说明:
crontab -u //设定某个用户的crond服务,一般root用户在执行这个命令的时候需要此参数
crontab -l //列出某个用户crond服务的详细内容
crontab -r //删除某个用户的crond服务
crontab -e //编辑某个用户的crond服务
比如说root查看自己的crond设置:crontab -u root -l
再例如,root想删除fred的crond设置:crontab -u fred -r
五.配置crontab
可用crontab -e命令来编辑,编辑的是/var/spool/cron下对应用户的cron文件,也可以直接修改/etc/crontab文件
具体格式如下:
Minute Hour Day Month Dayofweek command
分钟 小时 天 月 天每星期 命令
每个字段代表的含义如下:
Minute 每个小时的第几分钟执行该任务,0-59
Hour 每天的第几个小时执行该任务,0-23
Day 每月的第几天执行该任务,1-31
Month 每年的第几个月执行该任务,1-12
DayOfWeek 每周的第几天执行该任务,0-6,0表示星期日,也可以用英文来表示,sun表示星期天,mon表示星期一
Command 指定要执行的程序
记住几个特殊符号的含义:
“*”代表取值范围内的数字,
“/”代表”每”,
“-”代表从某个数字到某个数字,
“,”分开几个离散的数字
举例如下:
5 * * * * ls 指定每小时的第5分钟执行一次ls命令
30 5 * * * ls 指定每天的 5:30 执行ls命令
30 7 8 * * ls 指定每月8号的7:30分执行ls命令
30 5 8 6 * ls 指定每年的6月8日5:30执行ls命令
30 6 * * 0 ls 指定每星期日的6:30执行ls命令
30 3 10,20 * * ls 每月10号及20号的3:30执行ls命令
25 8-11 * * * ls 每天8-11点的第25分钟执行ls命令
*/15 * * * * ls 每15分钟执行一次ls命令
30 6 */10 * * ls 每个月中,每隔10天6:30执行一次ls命令
50 7 * * * root run-parts /etc/cron.daily
每天7:50以root 身份执行/etc/cron.daily目录中的所有可执行文件[ 注:run-parts参数表示,执行后面目录中的所有可执行文件。 ]
六.crontab中的输出配置
以上的定时任务执行结果都被输出到对应用户的email中,crond支持将执行结果输出到指定文件中
crontab中经常配置运行脚本输出为:>/dev/null 2>&1,来避免crontab运行中有内容输出。
shell命令的结果可以通过‘> ’的形式来定义输出
/dev/null 代表空设备文件
> 代表重定向到哪里,例如:echo "123" > /home/123.txt
1 表示stdout标准输出,系统默认值是1,所以">/dev/null"等同于"1>/dev/null"
2 表示stderr标准错误
& 表示等同于的意思,2>&1,表示2的输出重定向等同于1
那么重定向输出语句的含义:
1>/dev/null 首先表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,不显示任何信息。
2>&1 表示标准错误输出重定向等同于标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。
例1:每天5:30执行ls命令,并把结果输出到/jp/test.log文件中
30 5 * * * ls >/jp/test.log 2>&1
七.crontab与环境变量
不要假定crond知道所需要的特殊环境,它其实并不知道。所以你要保证在要执行的shelll脚本中提供所有必要的路径和环境变量,除了一些自动设置的全局变量。所以注意如下3点:
1、脚本中涉及文件路径时写全局路径;
2、脚本执行要用到java或其他环境变量时,通过source命令引入环境变量,如:
cat start_cbp.sh
#!/bin/sh
source /etc/profile
export RUN_CONF=/home/d139/conf/platform/cbp/cbp_jboss.conf
/usr/local/jboss-4.0.5/bin/run.sh -c mev &
3、当手动执行脚本OK,但是crontab死活不执行时。这时必须大胆怀疑是环境变量惹的祸,并可以尝试在crontab中直接引入环境变量解决问题。如:
0 * * * * . /etc/profile;/bin/sh /var/www/java/audit_no_count/bin/restart_audit.sh
八.其他应该注意的问题1、新创建的crond job,不会马上执行,至少要过2分钟才执行。如果重启crond则马上执行。
2、 每条 JOB 执行完毕之后,系统会自动将输出发送邮件给当前系统用户。日积月累,非常的多,甚至会撑爆整个系统。所以每条 JOB 命令后面进行重定向处理是非常必要的: >/dev/null 2>&1 。前提是对 Job 中的命令需要正常输出已经作了一定的处理, 比如追加到某个特定日志文件。
3、当crontab突然失效时,可以尝试/etc/init.d/crond restart解决问题。或者查看日志看某个job有没有执行报错 tail -f /var/log/cron。
4、千万别乱运行crontab -r。它从Crontab目录(/var/spool/cron)中删除用户的Crontab文件。删除了该用户的所有crontab都没了。
5、在crontab中%是有特殊含义的,表示换行的意思。如果要用的话必须进行转义\%,如经常用的date ‘+%Y%m%d’在crontab里是不会执行的,应该换成date ‘+\%Y\%m\%d’。
附录:
http://blog.csdn.net/hi_kevin/article/details/8983746
http://www.blogjava.net/freeman1984/archive/2010/09/23/332715.html
http://blog.csdn.net/dancen/article/details/24355287
linux crond 定时,linux下添加crond定时任务相关推荐
- Linux在fcitx框架下添加小鹤音形(挂载在中州韵输入法下)
Linux在fcitx框架下添加小鹤音形(挂载在中州韵输入法下) 0.注意该方法会完全替换掉中洲韵中的其他输入法,如果还需要其他输入法,可以用sudo apt install fcitx-然后按下Ta ...
- win8手动添加linux启动项,Win8下添加开机启动项的简单办法
Win8的用户越来越多,大家会发现任务管理器新添加了一个"启动"的功能,我们可以在其中随意删减开机启动项,以达到提高开机效率的目的.但是怎样才能添加我们平时经常用到的软件作为开机启 ...
- linux执行定时,linux定时执行 - 乄珍惜
定时语法说明 crontab的基本格式: * * * * * command 星号分别为:分 时 日 月 周 特殊的符号就是* / - :代表所有的取值范围内的数字 / 代表每的意思 */5 表示每5 ...
- linux查看定时服务,linux 定时任务 crond 服务介绍
linux定时任务crond服务应用指南 Linux的定时任务crond(crontab)服务 1.crond是什么? crond是linux系统中用来定期执行命令或者指定程序的程序(软件) 2.秒级 ...
- linux环境下添加定时任务,linux下添加定时任务。
这周要做一个定时增量更新Elasticsearch索引的功能,以前没有做过定时更新,所以请教了下同事,使用crontab添加linux下的定时任务. 一.linux下定时执行任务的方法 在linux中 ...
- linux 如何定时任务添加,linux下添加定时任务。
这周要做一个定时增量更新Elasticsearch索引的功能,以前没有做过定时更新,所以请教了下同事,使用crontab添加linux下的定时任务. 一.linux下定时执行任务的方法 在linux中 ...
- Linux中结束kettle挂起进程,linux停使用crond定时执行kettle的job
当前位置:我的异常网» Linux/Unix » linux停使用crond定时执行kettle的job linux停使用crond定时执行kettle的job www.myexceptions.ne ...
- Linux服务项目实例,linux 定时任务 crond 服务应用指南(项目实例)
linux定时任务crond服务应用指南 Linux的定时任务crond(crontab)服务 1.crond是什么? crond是linux系统中用来定期执行命令或者指定程序的程序(软件) 2.秒级 ...
- linux设置定时备份任务,Linux下Oracle设置定时任务备份数据库的教程
1.查看数据库的字符集 数据库的字符集必须和linux下设置的环境变量一致,不然会有乱码. 以下两个sql语句都可以查到: select * from nls_database_parameters ...
最新文章
- springboot项目使用junit4进行单元测试,maven项目使用junit4进行单元测试
- Typora添加右键新建Markdown文件
- python右对齐函数_python右对齐的实例方法
- 【ASP.NET Web API教程】2.3.5 用Knockout.js创建动态UI
- Angular rxjs源代码分析:range(0, 10)的实现
- C/C++编程笔记:输入输出的优化,你还为思路正确却TLE而烦恼吗?
- 阿里健康上线新冠核酸检测服务:本周覆盖北京武汉等38城
- Vue项目在nginx下的部署实践(个人学习总结)
- xp 计算机桌面图标不见,萝卜XP系统桌面图标全部消失了如何解决
- 深度解码企业文化体系
- 华为手机助手 linux,HiSuite-华为手机助手上线!从此再也不担心手机数据导不进Mac电脑啦!...
- android原生 6108v9a,全国通用版华为EC6108V9A图文教程
- Mybatis面向接口编程
- IBM内存三技术:Chipkill、MPX、MM
- php菱形,PHP 打印菱形
- 计算机打开远程桌面服务,如何开启Windows远程桌面服务 | 远程操作自己的电脑...
- 标准C函数库头文件、POSIX标准库头文件和Windows API函数库头文件说明
- 『网络迷踪』ctfshow-网络迷踪(部分)
- PMP-9.项目经理的能力2
- linux卡利系统设置密码,Windows 10 Windows Linux子系统安装指南-官网