Linux crontab命令 被用来提交和管理用户的需要周期性执行的任务,与windows下的计划任务类似,当安装完成 *** 作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。
crontab文件:指定包含待执行任务的crontab文件。
Linux下的任务调度分为两类:系统任务调度和用户任务调度。
系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。在/etc目录下有一个crontab文件,这个就是系统任务调度的配置文件。
/etc/crontab文件包括下面几行:
前四行是用来配置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文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:
minute hour day month week command 顺序:分 时 日 月 周
其中:
在以上各个字段中,还可以使用以下特殊字符:
/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置
查看crontab服务状态:
service crond status
手动启动crontab服务:
service crond start
查看crontab服务是否已设置为开机启动,执行命令:
ntsysv
加入开机自动启动:
chkconfig –level 35 crond on
每1分钟执行一次command
每小时的第3和第15分钟执行
在上午8点到11点的第3和第15分钟执行
每隔两天的上午8点到11点的第3和第15分钟执行
每个星期一的上午8点到11点的第3和第15分钟执行
每晚的21:30重启smb
每月1、10、22日的4 : 45重启smb
每周六、周日的1:10重启smb
每天18 : 00至23 : 00之间每隔30分钟重启smb
每星期六的晚上11:00 pm重启smb
每一小时重启smb
晚上11点到早上7点之间,每隔一小时重启smb
每月的4号与每周一到周三的11点重启smb
一月一号的4点重启smb
每小时执行/etc/cron.hourly目录内的脚本
linux下的crontab服务: 1、crontab 是用来让使用者在固定时间或固定间隔执行程序之用 在linux平台上如果需要实现任务调度功能可以编写cron脚本来实现。 以某一频率执行任务 linux缺省会启动crond进程,crond进程不需要用户启动、关闭。 crond进程负责读取调度任务并执行,用户只需要将相应的调度脚本写入cron的调度配置文件中。 cron的调度文件有以下几个: 1. crontab 2. cron.d 3. cron.daily 4. cron.hourly 5. cron.monthly 6. cron.weekly 如果用的任务不是以hourly monthly weekly方式执行,则可以将相应的crontab写入到crontab 或cron.d目录中。 示例: 每隔一分钟执行一次脚本 /opt/bin/test-cron.sh 可以在cron.d新建脚本 echo-date.sh 内容为 */1 * * * * root /opt/bin/test-cron.sh 2、cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业。由于Cron 是Linux的内置服务,如果它不自动起来,可以用以下的方法启动、关闭这个服务: /sbin/service crond start //启动服务 /sbin/service crond stop //关闭服务 /sbin/service crond restart //重启服务 /sbin/service crond reload //重新载入配置 你也可以将这个服务在系统启动的时候自动启动: 在/etc/rc.d/rc.local这个脚本的末尾加上: /sbin/service crond start 现在Cron这个服务已经在进程里面了,我们就可以用这个服务了 查看服务是否已经运行用 ps -ax | grep cron 3、crontab命令 查看该用户下的crontab服务是否创建成功, 用 crontab -l 命令 命令 which php 查看linux下安装的php的路径 cron服务提供crontab命令来设定cron服务的,以下是这个命令的一些参数与说明: crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数 crontab -l //列出某个用户cron服务的详细内容 crontab -r //删除没个用户的cron服务 crontab -e //编辑某个用户的cron服务 比如说root查看自己的cron设置:crontab -u root -l 再例如,root想删除fred的cron设置:crontab -u fred -r 在编辑cron服务时,编辑的内容有一些格式和约定,输入:crontab -u root -e 进入vi编辑模式,编辑的内容一定要符合下面的格式:*/1 * * * * ls >>/tmp/ls.txt 任务调度的crond常驻命令crond 是linux用来定期执行程序的命令。当安装完成 *** 作系统之后,默认便会启动此 任务调度命令。crond命令每分钟会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。 crontab命令选项: -u指定一个用户 -l列出某个用户的任务计划 -r删除某个用户的任务 -e编辑某个用户的任务 4、cron文件语法: 分 小时日 月 星期 命令 0-59 0-23 1-31 1-12 0-6 command (取值范围,0表示周日一般一行对应一个任务) 5、 新增调度任务 新增调度任务可用两种方法: 1)、在命令行输入: crontab -e 然后添加相应的任务,wq存盘退出。 2)、直接编辑/etc/crontab 文件,即vi /etc/crontab,添加相应的任务。 6、 查看调度任务 crontab -l //列出当前的所有调度任务 crontab -l -u jp //列出用户jp的所有调度任务 7、 删除任务调度工作 crontab -r //删除所有任务调度工作 8、 任务调度执行结果的转向 例1:每天5:30执行ls命令,并把结果输出到/jp/test文件中 30 5 * * * ls >/jp/test 2>&1 注:2>&1 表示执行结果及错误信息。 SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root //如果出现错误,或者有数据输出,数据作为邮件发给这个帐号 HOME=/ //使用者运行的路径,这里是根目录 # run-parts 01 * * * * root run-parts /etc/cron.hourly //每小时执行/etc/cron.hourly内的脚本 02 4 * * * root run-parts /etc/cron.daily //每天执行/etc/cron.daily内的脚本 22 4 * * 0 root run-parts /etc/cron.weekly //每星期执行 /etc/cron.weekly内的脚本 42 4 1 * * root run-parts /etc/cron.monthly //每月去执行/etc/cron.monthly内的脚本 大家注意”run-parts”这个参数了,如果去掉这个参数的话,后面就可以写::要运行的某个脚本名,而不是文件夹名了。 总结: 编写定时任务的两种方式:1.sudo vim /etc/crontab 2. sudo crontab -e 查看定时任务的两种方式:1.sudo cat /etc/crontab 2.sudo crontab -l */1 * * * * appuser cd /app/webserver/website/api-cb.chuchujie.com/master/current/script/ &&./back_coupon.sh 2 10 >>/dev/null 2>&1 查看定时任务是否运行: sudo tail -f /var/log/cron //定时任务日志(查看刚才设置的任务是否执行) 注:脚本有可执行权限 sh a.sh(不需要执行权限) ./sh (需要执行权限) 1.当shell脚本具有可执行权限时,用sh filename与./filename执行脚本是没有区别的。./filename是因为当前目录没有在PATH中,所有"."是用来表示当前目录的。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)