首页 > 系统相关 >2023.6.701.Linux系统计划任务

2023.6.701.Linux系统计划任务

时间:2023-06-07 23:11:21浏览次数:40  
标签:00 log 701 crontab 任务 2023.6 Linux crond ls

01.Linux系统计划任务 1.Crond计划任务概述 2.crond配置⽂件详解 3.crond计划任务管理 4.crond配置编写实例 5.crond计划任务调试 Atuor: Wing vx: WingspanGo 1.Crond计划任务概述 什么是计划任务,计划任务类似于我们平时⽣活中的闹钟。 在 Linux 系统的计划任务服务 crond 可以满⾜周期性执⾏任务的需求。 crond 进程每分钟会处理⼀次计划任务, 计划任务主要是做⼀些周期性的任务⽬前最主要的⽤途是定时备份数据   Schedule one-time tasks with at. ⼀次性调度执⾏ at Schedule recurring jobs with cron. 循环调度执⾏ cron Schedule recurring system jobs. 所有计划任务执⾏中的输出都会以邮件的⽅式发送给指定⽤户, 除⾮重定向 分布式调度xxjob等 //循环调度执⾏cron 进程每分钟会处理⼀次计划任务 [root@wing ~]# systemctl status crond.service [root@wing ~]# ps aux |grep crond root 1201 0.0 0.0 126264 1640 ? Ss 11:15 0:00 /usr/sbin/crond -n   计划任务分为以下两种情况: 1.系统级别的定时任务: 清理系统缓存 临时⽂件清理 系统信息采集 ⽇志⽂件切割 2.⽤户级别的定时任务: 定时同步互联⽹时间 定时备份系统配置⽂件 定时备份数据库⽂件 定时跑任务接⼝等等 2.crond配置⽂件详解 ⽂件 说明 /etc/crontab //Crontab配置⽂件 /etc/cron.deny //该⽂件中所列⽤户不允许使⽤crontab命令 /var/spool/cron/* //所有⽤户定时⽂件都存放此⽬录,⽂件以⽤户名命名 /var/log/cron*/ //定时任务执⾏后的⽇志⽂件,可⽤来回溯   3.crond计划任务管理 crond任务管理 参数 含义 指定示例 [root@wing ~]# crontab --help -e 编辑crontab⽂件内容 crontab -e -l 查看crontab⽂件内容 crontab -l -r 删除crontab⽂件内容 crontab -r -u 管理其他⽤户的计划任务 crontab -u wing -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表示周六、⽇、四 // /1 表示每隔n单位时间, 如*/10 每10分钟   crond编写示例 00 02 * * * ls //每天2:00整 00 02 1 * * ls //每⽉1号2:00整 00 02 14 2 * ls //每年2⽉14号2:00整 00 02 * * 7 ls //每周⽇2:00整 00 02 * 6 5 ls //每年6⽉的周五2:00整 00 02 14 * 7 ls //每⽉14号2:00整或每周⽇2:00整,这两个时间都执⾏ 00 02 14 2 7 ls //每年 2 ⽉ 14 号 2:00 整 或者 每周⽇ 2:00 整,这两个时间都执⾏ 00 02 * * * ls //每天2:00整 * 02 * * * ls //每天2:00中的每⼀分钟 (逻辑错误) * * * * * ls //每分钟执⾏ ls * * 14 2 * ls //2⽉14号的每分钟(逻辑错误) */5 * * * * ls //每隔5分钟 00 02 * 1,5,8 * ls //每年1,5,8⽉的每天2:00整 00 02 1-8 * * ls //每⽉1到8号的2:00整   crond书写规范   //1.为计划任务增加必要的注释 [root@wing ~]# crontab -l ##time sync by wing 2023-03-19 */5 * * * * /usr/sbin/ntpdate time.windows.com &>/dev/null //2.规范计划任务执⾏脚本存放的路径/soft/scripts/ [root@wing ~]# crontab -l ##backup www to /backup wing 2023-03-19 00 01 * * * /bin/sh /soft/scripts/www_backup.sh &>/dev/null //3.执⾏shell脚本任务前加/bin/sh, 脚本结尾加&>/dev/null //调试好后应屏蔽debug输出信息,避免产⽣系统垃圾占⽤过多inode, 如需输出⽇志, 可重定向⾄⽇志⽂件 [root@wing ~]# crontab -l ####backup www to /backup wing 2023-03-19 00 01 * * * /bin/sh /soft/scripts/www_backup.sh &>/dev/null   4.crond配置编写实例 [root@wing ~]# crontab -e #每天凌晨切割nginx⽇志 00 00 * * * /bin/sh -x /soft/scripts/cut_nginx.sh &> /soft/scripts/log/nginx.log #每天5点备份数据库 00 05 * * * /bin/sh -x /soft/scripts/dump_sql.sh &>/soft/scripts/log/mysql.log #每5分钟检测数据库是否正常 */5 * * * * /bin/sh /soft/scripts/start_mysql.sh &>/dev/null   //注意: 1.我们所有的crond服务是运⾏的程序。⽽crontab命令⽤户⽤来设置定时规则的命令。 2.crond服务是企业⽣产⼯作中常⽤的重要服务,at很少使⽤,可以忽略。 3.⼏乎每个服务器都会⽤到crond服务。   cut_nginx.sh   #!/bin/bash # 设置⽇志⽬录和⽂件名   log_dir="/var/log/nginx" log_file="access.log" # 获取昨天的⽇期 yesterday=$(date -d "yesterday" +"%Y-%m-%d") # 切割⽇志⽂件 mv $log_dir/$log_file $log_dir/$log_file.$yesterday # 发送信号,使Nginx重新打开⽇志⽂件 kill -USR1 $(cat /run/nginx.pid) # 清理过期的⽇志⽂件(保留7天内的⽇志⽂件) find $log_dir -name "*.log.*" -mtime +7 -exec rm {} \;   dump_sql.sh   #!/bin/bash # Database credentials USER="root" PASSWORD="xxx" # Backup directory BACKUP_DIR="/var/backups/mysql" # MySQL dump command DUMP="/usr/bin/mysqldump" # Get date and time for backup file NOW=$(date +"%Y-%m-%d-%H-%M-%S") # Create backup directory if it doesn't exist mkdir -p $BACKUP_DIR # Backup each database to a separate file for db in $(mysql -u $USER -p$PASSWORD -e "show databases;" | grep -Ev " (Database|information_schema|performance_schema|sys)") do $DUMP --single-transaction --skip-lock-tables --user=$USER -p$PASSWORD $db | gzip > $BACKUP_DIR/$db-$NOW.sql.gz done # Delete backups older than 7 days find $BACKUP_DIR/* -mtime +7 -exec rm {} \;   start_mysql.sh   #!/bin/bash # 检查 MySQL 是否正在运⾏ pgrep mysqld > /dev/null if [ $? -ne 0 ]; then # MySQL 未运⾏,启动 MySQL 服务 systemctl start mysqld.service echo "MySQL 服务已启动" else # MySQL 已运⾏,输出运⾏状态 echo "MySQL 服务正在运⾏" fi 5.crond计划任务调试 1.调整任务每分钟执⾏, 检测是否是否正常, 有些任务不要频繁执⾏ 2.调整系统时间然后在检测任务, ⽣产不建议直接使⽤此⽅式 3.执⾏脚本, 将脚本执⾏输出写⼊指定⽇志⽂件, 观察⽇志内容是否正常 4.注意⼀些任务命令带来的问题 echo “wing” >>/tmp/test.log &>/dev/null 5.命令使⽤绝对路径, 防⽌⽆法找到命令导致定时任务执⾏故障 6.查看 /var/log/cron ⽇志进⾏调试 建议: 将需要定期执⾏的任务写⼊脚本中, 建⽴ /soft/scripts ⽬录统⼀存放脚本, 脚本中命令必须使⽤绝对 路径,⼿动执⾏脚本检测输出是否正常, 然后将脚本加⼊计划任务测试, 测试后⽆问题将脚本输出写⼊对应的⽇ 志⽂件中即可。 1.⼿动执⾏保留执⾏命令的正确结果 2.编写脚本 脚本需要统⼀路径/soft/scripts 脚本开头建议填写注释信息, 包括执⾏时间、周期、任务 脚本内容复制执⾏成功的命令⾄脚本⽂件中(减少每个环节出错⼏率) 脚本内容尽可能的优化, 使⽤⼀些变量或使⽤简单的判断语句 脚本执⾏的输出信息不要随意打印, 可以重定向⾄其他位置保留或丢⼊⿊洞 3.执⾏脚本 使⽤bash执⾏, 防⽌脚本没有增加执⾏权限(/usr/bin/bash) 执⾏命令以及脚本成功后并复制该命令 4.编写计划任务 加上必要的注释信息, ⼈、时间、任务 设定计划任务执⾏的周期 粘贴执⾏脚本的命令(不要⼿敲) 5.调试计划任务 增加任务频率测试、调整系统时间测试(不能⽤于⽣产) 检查环境变量问题、检查crond服务产⽣⽇志进⾏排查    

标签:00,log,701,crontab,任务,2023.6,Linux,crond,ls
From: https://www.cnblogs.com/BXXY5961/p/17464847.html

相关文章

  • Linux发行版本的应用方向有哪些
      Linux发行版本可以根据用途以及面向的用户群不同可以组略分为服务器和台式机,面向个人和企业。    ArchLinux发行版本在安装时要求用户有一定的Linux基础,这款发行版本不适合新手入门,不过作为服务器,确是很好的选择。Debian以及衍生的发行版本适合初学者入门学习,它采用GN......
  • 3_Installing Linux, Apache, MySQL, PHP (LAMP) Stack on Ubuntu 20.04
      地址:https://www.codewithharry.com/blogpost/lamp-stack-ubuntu-20-04/ InstallingLAMPstackonUbuntu20.04in5MinutesThispostwillexplainhowtoinstallLAMPstackonUbuntu20.04.LAMPstackconsistsofthefollowingcomponents:Linux-AnyLi......
  • linux 脚本 if [ $? -ne 0 ];then
    在shell命令中,if[$?-ne0];then是一个条件语句,用于检查上一个命令的执行状态。$?是一个特殊变量,它包含了上一个命令的退出状态码。-ne是不等于的意思。退出状态码为0表示命令执行成功,非0表示命令执行失败或出现错误。因此,if[$?-ne0];then的意思是:如果上一个......
  • linux内核编程语言环境
    3.1as86汇编器在Linux0.1x系统中使用了两种汇编器(Assembler)。一种是能产生16位代码的as86汇编器,使用配套的ld86链接器;另一种GNU的汇编器gas(as),使用GNUld链接器来链接产生的目标文件。as86+ld86是由MINIX-386的主要开发者之一BruceEvans编写的Intel8006、80386汇编编译程序......
  • SecureCRT for Linux 9.3无限30天试用
    SecureCRTforLinux9.3无限30天试用最近从Windows转到Linux,xshell没有linux版本,其他的又不想用,就下载了securecrt,但是都知道这个是收费的,只能用30天,买又买不起,下载好deb包安装后,默认在当前用户家目录下生成一个.vandyke目录,没有的话进到crt里面,Option-->GlobalOptions可以看到......
  • Linux-篇四
    组管理和权限管理基本介绍所有者、所在组、其他组、改变用户所在组文件/目录所有者一般文件的创建者就是该文件的所有者查看文件的所有者ll相当于ls-ahl修改文件的所有者文件/目录所在组当某个用户创建一个文件后,这个文件的所有组就是该用户所在的组(默认)修改文件/目录所在的组√......
  • linux time subsystem
    linuxtimesubsystemreference蜗窝科技时间子系统Linux时间管理系统一文入门linux内核高精度定时器hrtimer机制LinuxTime......
  • Docker(一):Linux系统下Docker的安装与卸载
    一、准备工作1.Linux系统,我这里使用的是云服务器CentOS72.查看系统内核系统内核需要3.0以上 3.系统版本 二、安装过程1.卸载旧的版本yumremovedocker\docker-client\docker-client-latest\docker-comm......
  • amazon linux ssh 使用密码登录
    amazonlinux ssh 使用密码登录1、使用AWS控制台创建的密钥对或者直接通过网页登录注意:使用pem私钥不允许直接登录root用户,只能登录默认用户例如:ec2-user,ubuntu等等2、创建root密码sudopasswdroot3、切换到root用户suroot4、修改sshd_config文件vim/etc/ssh/sshd_conf......
  • amazon linux 2 重置root密码
    amazonlinux2重置root密码linux的版本很多,但是重置root用户的密码的方法都是相似的,都是进入单用户模式修改root密码。步骤1.重启amazonlinux2重启amazonlinux2服务器后,进入系统加载页面2.按键盘“e”键,进入编辑模式3.移动光标找到linux16开头的那行,将光标移动到该行的末......