linux笔记--计划任务

一、什么是计划任务?

脚本:帮助我们去完成某些事情的工具

计划任务:帮助我们提前计划某个时间点去执行脚本或某个任务,不需要人定时定点去执行,提升了工作效率,解放了人力

计划任务背后的crond进程:

crond守护进程:一直在内存里运行的进程,除非人为停止,不然会一直运行,crond服务会每隔1分钟去检查linux系统里的所有用户的计划任务。不论用户是否登录,它的计划任务都会执行,crond进程会到/var/spool/cron目录下检查用户的计划任务文件,然后执行

service crond stop --> 停止crond服务

service crond start --> 开启crond服务

service crond restart --> 重启crond服务

anacron服务:

弥补cron在系统关机后不能执行计划任务的问题,等系统开机后将没有执行的计划任务执行一遍,执行后anacron就会自动停止

不能代替cron

二、格式

时间范围:

字段 说明
分钟 取值为从0到59之间的任意整数
小时 取值为从0到23之间的任意整数
日期 取值为从1到31之间的任意整数
月份 取值为从1到12之间的任意整数
星期 取值为从0到7之间的任意整数,0或7代表星期日
命令 要执行的命令或程序脚本

时间数值的特殊表示方法:

  • *  范围内的任意时间
  • ,  间隔的多个不连续时间点
  • -  一个连续的时间范围
  • /n  指定间隔的时间频率

示例:

0 17 * * 1-5                周一至周五每天下午5点整

30 8 * * 1,3,5             每周一、三、五早上8点半

0 8-18 * * *                 每天上午8点到下午6点整

0 12 */3 * *                 每隔三天的中午12点整

三、定制计划任务

计划任务相关命令:

  • crontab -e:编辑计划任务
  • crontab -l :查看计划任务
  • crontab -u 用户名 -e:编写某个用户的计划任务

示例:

[root@localhost ~]# crontab -e

第一步:按i进入计划任务的编辑模式,输入计划任务

第二步:按ECS退出编辑模式,输入:wq退出并保存计划任务

[root@localhost ~]# crontab -l

01 05 * * *  bash /backup/backup_log.sh

删除计划任务的方法:

  • 输入crontab -e编辑计划任务,注释想要删除的计划任务
  • 删除对应文件

四、计划任务的相关文件

配置文件:/etc/crontab

日志文件:/var/log/cron  --查看日志文件可以知道计划任务是否执行

操作系统自身需要的计划任务:

  • /etc/cron.d  --存放计划任务的目录
  • /etc/cron.daily  --存放每天需要执行的任务
  • /etc/cron.hourly  --存放每小时需要执行的任务
  • /etc/cron.weekly  --存放每周需要执行的任务
  • /etc/cron.monthly  --存放每月需要执行的任务

存放每个用户的计划任务文件:/var/spool/cron/用户名

[root@localhost ~]# cd /var/spool/cron
[root@localhost cron]# ls
root  #tmp.sanchuang.XXXXqCNl0G  xiaoyang
[root@localhost cron]# cat root                        --查看root用户的计划任务
01 05 * * *  bash /backup/backup_log.sh
[root@localhost cron]# cat xiaoyang               --查看xiaoyang用户的计划任务
55 23 * * 0  cp /etc/passwd /home/xiaoyang/pwd.txt

黑客埋雷的位置有linux系统本身的计划任务和用户自己的计划任务!

注意:计划任务在调用脚本执行时的路径与linux系统的PATH路径不一样,计划任务调用脚本的路径比较少,因此为了防止命令找不到,建议在脚本里使用命令的绝对路径

[root@localhost cron]# cat /etc/crontab

...
PATH=/sbin:/bin:/usr/sbin:/usr/bin                 #计划任务调用脚本的路径

...

[root@localhost cron]# echo $PATH               #系统的PATH变量
/usr/python3.11/bin:/usr/python3.11/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

猜你喜欢

转载自blog.csdn.net/m0_69298614/article/details/130171135
今日推荐