Linux下定时任务的操作

##############################

Linux下的任务调度分为两类,系统任务调度和用户任务调度。
1,系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。
    在/etc/crontab文件,这个就是系统任务调度的配置文件。
2,用户任务调度:用户定期要执行的工作,比如用户数据备份、定时邮件提醒等。
    用户可以使用 crontab 工具来定制自己的计划任务。
    在crontab 文件都被保存在/var/spool/cron目录中。其文件名与用户名一致

##########################

1.系统定时任务:例如清理系统日志,清理系统缓存   -->不过多的关注
    查询系统定时处理任务的路径:
        路径1:
            cd /etc/logrotate.d/        -->可以写定时任务
            less syslog 
        路径2:
            cat /etc/crontab   -->不推荐使用,但是可以看格式
        路径3:
             ls /etc/ | grep cron*
                 anacrontab
                 cron.d                 -->同路径2 ,可以写定时任务  
                 cron.daily
                 cron.deny              -->控制普通用户使用定时任务crontab
                 cron.hourly
                 cron.monthly
                 crontab
                 cron.weekly
2.用户的定时任务      -->关注重点

##################################

前四行是用来配置crond任务运行的环境变量
第一行SHELL变量指定了系统要使用哪个shell,这里是bash
第二行PATH变量指定了系统执行命令的路径
第三行MAILTO变量指定了crond的任务执行信息将通过电子邮件发送给root用户
如果MAILTO变量的值为空,则表示不发送任务执行信息给用户
第四行的HOME变量指定了在执行命令或者脚本时使用的主目录。

星号(*):代表所有可能的值,如month字段为星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。


小 结: 数字的表示最好用2为阿拉伯数字显示 周和日最好不要同时用 定时任务要加注解 可以定向到日志文件或者空文件 定时任务一定是绝对路径,且目录必须存在才能出结果 crontab 服务一定要开启运行

############################

0 0 * * * sh /root/autotest/hwtest/auto-del-log.sh
0 */3 * * * python3 /root/autotest/hwtest/hwtestpro/bbs/srun_bbs_test.py
0 */1 * * * python3 /root/autotest/hwtest/hwtestpro/bbs/url_main.py

零点零分执行,
每3小时0分执行一次
每1小时0分执行一次,

####################################

时间格式如下:
f1 f2 f3 f4 f5 program
解释:
f1 是表示分钟, 分钟(0-59)
f2 表示小时, 小时(0-23)
f3 表示一个月份中的第几日,一个月中的第几天(1-31)
f4 表示月份, 月份 (1 - 12)
f5 表示一个星期中的第几天。 星期中星期几 (0 - 7) (星期天 为0)
program 表示要执行的程序。
当 f1 为 * 时表示每分钟都要执行program,f2 为 * 时表示每小时都要执行程序,其馀类推 当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其馀类推 当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其馀类推 当 f1 为 a, b, c,... 时表示第 a, b, c,... 分钟要执行,f2 为 a, b, c,... 时表示第 a, b, c...个小时要执行,其馀类推


######################

crontab -l 表示列出所有的定时任务
crontab -r 表示删除用户的定时任务,当执行此命令后,所有用户下面的定时任务会被删除,执行crontab -l后会提示用户:“no crontab for admin”
crontab -e 表示编辑定时任务,

###################################

常用的命令展示
安装crontab:yum install crontabs
crontab服务操作说明:
/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置
查看crontab服务状态:
service crond status

##########################################

在linux环境的python定时任务

############################################

1.首先配置linux环境,将anaconda设置为默认环境设置。
第一种方法:

通过 vi 修改 ~/.bash_profile
将export PATH="~/anaconda/bin:PATH"‘改为‘exportPATH=" /anaconda/envs/python3/bin:PATH"
`改为`export PATH="~/anaconda/envs/python3/bin:PATH
"‘改为‘exportPATH=" /anaconda/envs/python3/bin:PATH"` 第二种方法: 编辑环境变量:vi /etc/profile 在最后一行加入:export PATH=/root/anaconda3/envs/python36/bin:$PATH 保存并退出::wq 环境变量生效:source /etc/profile

####################################

在linux环境的python定时任务

操作步骤 这里有两种方法进行定时任务添加,分别是crontab -e和编辑/etc/crontab。两种方法的语法也略有不同,/etc/crontab的语法比crontab -e多了一个用户字段。 crontab -e 用户级,不能设置用户字段 /etc/crontab 系统级,只能root用户权限使用,需要设置用户字段

####################################

crontab -e
这种方式是用户级的,所有用户的可以使用,实际保存在/var/spool/cron/username中。
但有的linux系统加在crontab -e会无效,这种方法不会对语法进行校验。具体操作步骤为: crontab -e 添加定时任务,如每周一3点执行python脚本 0 3 * * 1 python /data/www/test.py wq保存退出,完毕 简单说明一下crontab,它是linux系统的定时任务命令,与windows系统下的计划任务有点类似, 我们的使用方法也很简单,首先使用你当前的用户创建一个crontab文件,使用crontab -e命令创建一个文件,这个文件在这个目录下: /var/spool/cron 使用 cd /var/spool/cron就可以切换到该目录下,文件名是以当前用户名命名的, 比如你当前是root权限账户,那你创建的文件可能就是root,如果你是test用户,那么文件名就是test, 切记,所有用户定义的crontab文件都被保存在/var/spool/cron目录中,之后编辑该文件,使用vim root或vim test编辑文件。

####################################

/etc/crontab
直接编辑/etc/crontab 比 crontab -e 多了一个用户名字段,该方法是系统级的,必须root权限使用
步骤:
vi  /etc/crontab
在后面添加定时任务,如每周一3点执行python脚本
0 3 * * 1 root python /data/www/test.py
wq保存退出,完毕

#####################################

查看crontab日志
tail -f /var/log/cron

3. mail任务
在 /var/spool/mail/root 文件中,有crontab执行日志的记录,用tail -f /var/spool/mail/root 即可查看最近的crontab执行情况。

########################################

原文地址:https://www.cnblogs.com/andy0816/p/12728882.html