cron & crontab
来源:互联网 发布:linux mysql 安装 编辑:程序博客网 时间:2024/06/04 20:08
cron & crontab
每个人应该都会有这样的需求: 每天, 或是每个星期 要做某一个工作, 并且这个工作是定期去做的, 这个工作可能是执行一条命令, 或是执行一个脚本. 这时你可能会用到cron服务.
cron服务一共分两个部分: cron服务, crontab.
cron服务
cron服务默认是开启的, 也不需要我们做什么特殊的配置, 我们只要知道它大概的工作原理就好了.
cron会检查 /var/cron/tabs/ 目录下的crontab文件, 这些文件都是用 /etc/passwd 文件中的用户帐号的命名的. 被查找到的crontab文件会被加载到内存中. cron 同时还会检查 /etc/crontab 文件, 这个文件是系统的crontab文件, 格式和我们通常用到的crontab文件不太相同, 这里就不做说明了.
cron 会每分钟执行一次上面说到的检查, 检查时会确定crontab文件中的每一条任务是否应该在当前这一分钟执行. 需要注意的是cron只会检查当前账户对应的那个crontab文件, 但是/etc/crontab 文件会在任何账户下都被检查. 当crontab中的任务时, 任何输出都会默认发送到crontab对应的账户邮箱中(/var/mail/)
另外, cron还会每分钟检查一下存放crontab文件的目录的修改时间, 如果修改时间发生变化, 就将所有的crontab文件重新加载到内存中.
crontab
crontab命令是用来添加,修改和删除crontab文件中的任务的.
如果在/var/cron/ 目录中有 allow 文件, 那么只有allow文件中列出来的用户可以使用crontab命令. 如果 不存在allow文件, 但是存在一个deny文件, 那么deny文件中列出来的用户将被禁止使用crontab命令. 如果这两个文件都不存在, 那么就要根据 site-dependent configuration parameters 来确定了, 有可能是只有root才能使用这个命令, 或者是所有用户都可以使用这个命令.
下面是crontab命令用到的一些参数:
-u
这里需要注意的是在普通账户下使用su提权后, 如果使用crontab命令, 这会让crontab命令迷惑, 所以这时一定要使用-u参数来指定用户.
-l
-r
-e
crontab文件的格式
# |----------- 分钟 (0 - 59)
# | |--------- 小时 (0 - 23)
# | | |------- 日 (1 - 31)
# | | | |----- 月 (1 - 12)
# | | | | |--- 星期 (1 - 7)
# * * * * * 被执行的命令
举例:
这一条任务的含义是 在每个小时一分钟的时候 执行命令: ls -l
其中 * 表示 每分钟 或是 每小时 或是 每天 等等.
这一条任务的含义是 每隔3分钟执行命令 ls -l
这就不用我解释了吧
重定向输出. 前面已经提到, crontab中的任务默认将输出作为邮件发送给你, 但有时你并不关心输出, 这是你就可以这样写:
这句话的意思是将原本输出到标准输出的内容输出到 /dev/null, 因为 /dev/null 表示空设备, 所以原本该输出的东西就不输出了.
2 > &1 表示 将错误信息输出到和标准输出相同的地方, 即 /dev/null
注: 1 表示标准输出, 2 表示错误输出, 至于 & 符号, 你可以参照一下C++中的引用, 我就是这么理解的 :)
还有的时候, 你可能想让原本输出到标准输出的内容还是输出到标准输出, 这时候你可以用下面的方法:
接着将输出重定向到ttyv1:
* * * * * ls -l > /dev/ttyv1
- cron & crontab
- cron、crontab
- crontab(二),Cron服务
- cron和crontab
- crond(cron) 和 crontab
- crontab/cron详解
- cron和crontab
- The cron daemon and crontab
- Linux的cron和crontab
- Linux的cron和crontab
- Linux的cron和crontab
- Linux的cron和crontab
- Linux的cron和crontab
- 系统cron设定:/etc/crontab
- Linux的cron和crontab
- Linux的cron和crontab
- Linux的cron和crontab
- Linux中的cron和crontab
- [C++] Typedef和define的区别
- 利用二叉搜索树来实现输入文本的单词统计
- 副作用与序列点——未定义的表达式之根源
- C/C++中0的两个妙用
- SSH学习日记
- cron & crontab
- 数学之美系列十五:繁与简 自然语言处理的几位精英
- HDU 1997 汉诺塔VII
- glMatrixMode
- 新浪微博Android客户端学习记录一:完成Logo界面
- 编译错误:multiple types in one declaration
- uc/os之任务就绪表操作(一)
- 《转》微软的22道数据结构算法面试题(含答案)
- uc/os之任务就绪表操作(二)