linux里面的crontab资料
Linux中的`crontab`是系统管理员和普通用户用来安排周期性任务的工具。它允许你在特定的时间间隔或特定时间点执行脚本、程序或任何命令。`crontab`这个名字来自于“cron table”,意为定时任务表。下面将详细解释`crontab`的工作原理、格式以及使用方法。 **基本格式:** `crontab`的基本格式由五个字段组成,每个字段分别代表不同的时间单位,然后是执行的命令: - 第1列:分钟(0-59) - 第2列:小时(0-23,其中0表示凌晨12点) - 第3列:日期(1-31) - 第4列:月份(1-12) - 第5列:星期(0-6,其中0和7都代表周日) - 第6列:要执行的命令 **示例解析:** 1. `30 21 * * * /usr/local/etc/rc.d/lighttpd restart` - 每晚21:30重启lighttpd服务。 2. `45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart` - 每月1日、10日和22日的4:45重启lighttpd服务。 3. `10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart` - 每周六和周日的1:10重启lighttpd服务。 **使用权限和方式:** - 所有用户都可以使用`crontab`,但要修改其他用户的定时任务,通常需要root权限。 - `crontab -e`:编辑当前用户的`crontab`文件,通常会启动默认的文本编辑器(如VI或VIM)。 - `crontab -r`:删除当前用户的`crontab`。 - `crontab -l`:列出当前用户的`crontab`任务。 - `crontab file [-u user]`:用指定文件替换当前用户的`crontab`。 - `crontab -d [user]`:删除指定用户的`crontab`(需要root权限)。 - `crontab -c dir`:指定`crontab`文件所在的目录。 **环境变量:** 当`crontab`执行程序时,只有`USER`, `HOME`, 和 `SHELL`这三个环境变量会被设置。如果需要其他环境变量,你需要在`crontab`命令行中明确设置它们。 **特殊字符和范围:** - `*`:代表所有可能的值,例如在分钟字段中,`*`表示每分钟执行一次。 - `/n`:表示每n个单位执行一次,如`*/5`表示每5分钟执行一次。 - `-`:表示范围,如`10-12`表示10点到12点。 - `,`:用于列举多个值,如`1,5,10`表示第1、5、10分钟执行。 **注意:** - `crontab`命令的执行结果不会立即显示,除非有错误发生。 - 定义的时间应考虑服务器的时区。 - 脚本路径应是绝对路径,避免因当前工作目录不同导致的问题。 - 如果命令输出需要保存,可以重定向到日志文件。 `crontab`是Linux系统中非常实用的自动化任务调度工具,通过灵活的时间表达式,可以实现复杂的时间周期性任务。熟练掌握`crontab`的使用,能大大提高系统的自动化程度和管理效率。