linux计划任务

时间:2024-04-02 10:37:20编辑:奇事君

如何在Linux中实现计划任务

对于系统管理员而言,做系统备份是一个系统管理员非常重要的工作,但是每天重复的工作是一件非常繁琐的工作,那有没有一种方法可以让系统每天每到固定的时间都自己做备份工作呢?答案是有的,那就是计划任务,现在我们就来说说计划任务是怎么一回事,以及怎么去实现它
一般来说计划任务分两种一次性计划任务和周期性计划任务
1, 一次性计划任务:顾名思义一次性计划任务就是在某一个时间点只执行一次的任务,例如像,下周一有约会需要提醒这样只执行一次的任务,
命令at ,batsh实现一次性计划任务
At的用法:at time
例如 at 10:29 就是指在10:29 分执行的任务


执行的结果如下



At 命令的时间格式非常灵活我们可以使用
At now+1min
At 11:54
At date 等在这里不再赘述
Batsh 命令是指在系统空闲时执行的一次性计划任务,比如你有一件不太重要的任务需要执行,当重要的任务执行完才会执行
Batsh 的用法
Batsh 回车 然后输入你要执行的任务




2, 周期性计划任务 :周期性计划任务指的是每隔一段时间就执行一次的任务,比如闹钟每天早上六点叫你起床 命令 cron
(1) 加载cron 模块crond:crond是一种服务一般情况下crond是默认加载的但是也不排除有特出情况
Modprobe crond

(2) crond服务操作 survice crond {start|status|stop|restart}
start 启动crond
status查看crond的运行状态
stop 停止crond服务
restart 重启crond服务
(3) crond的分类 :系统crond和用户crond
系统crond 是系统运行所需要的crond服务 /etc/crontab
用户crond使用户定义的crond服务/var/spool/cron/USERNAME
(4) cron 的书写格式 min hour day month week command
共六段 第一段min 指分钟,第二段hour指小时,第三段day指天,第四段mouth指月份,第五段week指周,第六段command指你要执行的命令例如
10 1 * * 7 ls –l /etc 指的是 每周末的一点10分执行ls –l /etc命令
在字段中的*指在指定的时间域上所有的时间
—对应时间域上的连续取值时间 如1-10 1到10
,表示对应时间域上离散的时间取值如 1,10指的是1和10
/表示在对应时间域上每隔多久进行一次取值
如 1-10 1 * * 7 ls –l /etc指的是每周末的一点1-10分每分钟执行ls –l /etc命令
1,10 1 * * 7 ls –l /etc指的是每周末的一点1分和10分时分别执行ls –l /etc命令
*/10 1 * * 7 ls –l /etc每周末的一点每隔10分钟执行ls –l /etc命令

(5) 说了这么多那到底怎么才能定义自己的计划任务呢?
Crond –e 打开编辑文本然后输入要定义计划任务
如1,10 1 * * 7 ls –l /etc


保存并退出 一个计划任务就做好了
我们来看看怎么定义在每天晚上的凌晨把系统备份


管理员还可以为其他用户定制计划任务 使用 crontab –u username
Crontab –l 可以查看已经定义的计划任务
Crontab –r 移除已将定义的计划任务






(6) Crond 只能在Linux系统启用的时候进行工作,当计划任务所在的时间Linux系统处于不工作状态那我们能不能在Linux启动后的一段时间内将没有做的计划任务给补上呢?档案是肯定的我们使用anacrond命令来是以这一功能
Anacron的命令格式 day min 说明信息 run-parts /etc/cron.daiy
Day 指过去多长时间没有执行过命令 min 指启动后多长时间执行
如 1 65 run-parts /etc/cron.daily 指一天没有运行过时 启动后65分钟后执行任务计划


linux计划任务管理

什么是计划任务,计划任务类似于我们平时生活中的闹钟。 在Linux系统的计划任务服务crond可以满足周期性执行任务的需求。 crond进程每分钟会处理一次计划任务, 计划任务主要是做一些周期性的任务目前最主要的用途是定时备份数据 Schedule one-time tasks with at. 一次性调度执行 at Schedule recurring jobs with cron. 循环调度执行 cron Schedule recurring system jobs. 所有计划任务执行中的输出都会以邮件的方式发送给指定用户, 除非重定向 // 循环调度执行cron 进程每分钟会处理一次计划任务 [root@wangqing ~] # systemctl status crond [root@wangqing ~] # ps aux |grep crond root 1201 0.0 0.0 126264 1640 ? Ss 11 : 15 0 : 00 /usr/sbin/crond -n 计划任务分为以下两种情况: 系统级别的定时任务: 清理系统缓存 临时文件清理 系统信息采集 日志文件切割 用户级别的定时任务: 定时同步互联网时间 定时备份系统配置文件 定时备份数据库文件 文件 说明 /etc/crontab / /crontab配置文件 /etc/cron.deny / /该文件中所列用户不允许使用crontab命令 /var/spool/cron/ * // 所有用户定时文件都存放此目录,文件以用户名命名 /var/log/cron / /定时任务执行后的日志文件,可用来回溯 crond任务管理 参数 含义 指定示例 [root@wangqing ~] # crontab --help -e 编辑crontab文件内容 crontab -e-l 查看crontab文件内容 crontab -l -r 删除crontab文件内容 crontab -r -u 管理其他用户的计划任务 crontab -u wangqing -l 注意: crontab {-l -e}实际上就是在操作/var/spool/cron/username //如何进行计划任务的备份? crond时间含义 # 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 //星期 # | | | | |# * * * * * command to be executed // * 表示任意的(分、时、日、月、周)时间都执行// - 表示一个时间范围段, 如5-7点// , 表示分隔时段, 如6,0,4表示周六、日、四// */n 表示每隔n单位时间, 如*/10 每10分钟 crond编写示例 00 02 * * * command 00 02 1 * * command 00 02 14 2 * command 00 02 * * 7 command 00 02 * 6 5 command 00 02 14 * 7 command 00 02 14 2 7 command 00 02 * * * command* 02 * * * command* * * * * command* * 14 2 * command*/5 * * * * command 00 02 * 1,5,8 * command 00 02 1-8 * * command crond书写规范 //1.为计划任务增加必要的注释 [root@wangqing ~]# crontab -l ##time sync * /5 * * * * /u sr/sbin/ntpdate time1.aliyun.com &> /dev/ null //2.规范计划任务执行脚本存放的路径/scripts/ [root@wangqing ~]# crontab -l ##backup www to /backup 30 01 * * * /bin/ sh /scripts/www_backup.sh &> /dev/ null //3.执行shell脚本任务前加/bin/sh, 脚本结尾加&>/dev/null//调试好后应屏蔽debug输出信息,避免产生系统垃圾占用过多inode, 如需输出日志, 可重定向至日志文件 [root@wangqing ~]# crontab -l ####backup www to /backup 30 01 * * * /bin/ sh /scripts/www_backup.sh &> /tmp/ www_backup.log [root@wangqing ~] # crontab -e #每天凌晨切割nginx日志 05 00 * * * /bin/bash -x /scripts/cut_nginx.sh &> /scripts/ log /nginx. log #每天5点备份数据库 00 05 * * * /bin/bash -x /scripts/dump_sql.sh &>/scripts/ log /mysql. log //注意: 1. 我们所有的crond服务是运行的程序。而crontab命令用户用来设置定时规则的命令。 2. crond服务是企业生产工作中常用的重要服务,at很少使用,可以忽略。 3. 几乎每个服务器都会用到crond服务。 建议: 将需要定期执行的任务写入脚本中, 建立/scripts目录统一存放脚本, 脚本中命令必须使用绝对路径,手动执行脚本检测输出是否正常, 然后将脚本加入计划任务测试, 测试后无问题将脚本输出写入对应的日志文件中即可。 计划任务添加步骤: 作业: a. 00 13,20 * 1-5 * backup.sh b. 0 13,20 1,5 * * backup.sh c. * 13,20 * * 1-5 backup.sh d. 00 13,20 * * 1-5 backup.sh 说明以上答案每一行是什么含义 2.新建/scripts/httpd.sh文件,并让/scripts/httpd.sh脚本在每天的00:10分执行 3.新建/backup目录,每周一下午5:50将/backup目录下的所有文件打包成 backup.tar.gz 4.写一个定时任务,每天0点5分把/var/log/nginx下7天前的文件转移到/backup/2018_xx_xx的目录中 5.系统脚本/scripts/which.sh,如何定时每隔7分钟执行一次? 6.如何不小心删除了/var/spool/cron/root文件,该如何恢复。 /p3.toutiaoimg.com/origin/tos-cn-i-qvj2lq49k0/49da2da0342544a6a4c02f2aa442d537","uri":"","width":323,"height":27,"darkImgUrl":"https://p3.toutiaoimg.com/origin/tos-cn-i-qvj2lq49k0/d8ccdb213b9b46a183e7cda418c5360b","darkImgUri":"","formulaImgStatus":"succeed"}" class="syl-plugin-formula">

上一篇:win10安装

下一篇:甜不辣图片