linux 编辑计划任务,Linux计划任务

本文详细介绍了Linux系统中的计划任务管理,包括一次性任务计划工具at和batch,以及周期性任务计划工具cron。重点讲解了cron的工作原理、配置格式、时间表达式以及如何通过crontab命令管理任务。还提到了任务执行结果的处理,如邮件通知和日志重定向,并给出了防止任务重复执行的加锁机制示例。
摘要由CSDN通过智能技术生成

Linux计划任务

linux

计划任务

一次性任务计划:at, batch

周期性任务计划:cron

周期性任务计划:cron

依赖于后台服务,查看运行状态:

service crond status

crond(pid1680)isrunning...表示正在运行

cron任务有两类:

系统cron:/etc/crontab

用户cron:定义在/var/spool/cron/目录中与用户名同名的文件中

每行定义一个独立的任务:

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

HOME=/

# For details see man 4 crontabs

# Example of job definition:

# .---------------- minute (0 - 59)

# | .------------- hour (0 - 23)

# | | .---------- day of month (1 - 31)

# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...

# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat

# | | | | |

# * * * * * user-name command to be executed

时间点(周期性任务)

user-name:用户身份

command:要运行的任务

注意:建议在定义cron任务时,所用到的命令使用绝对路径;如果脚本,脚本中的命令使用绝对路径 ,或自定一个拥有完整路径的环境变量;

时间

分钟 小时 天 月 周几

注意:天 月和周几一般不同时设置,因为所有时间点要同时满足

每年5月4号3点2分:2 3 4 5 *

每月6号18点20分:20 18 6 * *

每天9点20分:20 9 * * *

每小时的3分时:3 * * * *

每分钟:* * * * *

每周三17点16分:16 17 * * 3

时间表示法:每个时间位都应该使用其可用的有效取值范围内的值;*就用于表示使用其所有有效取值;

17 * * * * /bin/echo "howdy" 每小时的17分时执行一次

8 9 * * * /bin/echo "howdy"每天的09:08执行

16 17 * * 3 /bin/echo "howdy"每周三的17:16执行

*/#:在对应的时间位有效取值上每#个时间单位一次

*/3 * * * * /bin/echo "howdy"每天每三分钟一次

9 */3 * * * /bin/echo "howdy"每3小时的09分时一次

*/7 * * * * /bin/echo "howdy"

注意:并不能精确做到每7分钟一次;

连续时间点:-

40 3 * * 1-5 /bin/echo "howdy"每周1-5的3:40执行

离散时间点:,

30 2 * * 2,4,6 /bin/echo "howdy"每周的2,4,6的2:30执行任务运行后的结果:邮件发送给任务相关用户;

丢弃邮件通知:输出重定向

COMMAND > /dev/null

COMMAND &> /dev/null

COMMAND > /dev/null 2>&1

例: 30 2 * * 2,4,6 /bin/echo "howdy" &>/dev/null

/dev/null: 软件模拟出的设备,bit bucket,数据黑洞;

crontab命令

crontab命令:

-l: 列出已经定义的所有任务;

-e: 打开编辑界面定义任务;

-r: remove,移除所有任务;

-u USERNAME :root以其他用户的身份运行crontab

-l: 列出已经定义的所有任务;

-e: 打开编辑界面定义任务;

-r: remove,移除所有任务;

crontab会检查语法,并保存在/var/spool/cron/用户名 目录中

注意:删除一个任务应该通过编辑界面删除行实现;

注意:如果crontab中的用户命令中需要使用%时,需要对其进行转义:

*****/bin/touch file-$(date+\%F-\%H-\%M-\%S)

*****/bin/touch file-$(date+'%F-%H-%M-%S')

加锁

当不确定一个cron任务是否会在下一次执行是执行完本次任务,可以考虑用加锁的机制不重复执行,而是执行完一次后在进行下一次。

例:

*/20 * * * * flock -xn /tmp/room_delete.lock-c'cd /www/; php room_delete.php > /dev/null'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值