Linux crontab 命令

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 | 定时任务(cronie 软件名称) crond (服务名称 进程名称) # crontab -l #查看定时任务脚本 (1)检查进程: ps -ef 、 ps aux(更加详细 cpu 内存使用率) # ps -ef | grep crond | grep -v grep | wc -l # ps -aux | grep -c '[c]rond' (2)检查服务状态 # systemctl is-active crond.service # systemctl is-enabled crond.service (3)使用定时任务 * * * * * 命令 (分 时 日 月 周)命令 例: 每天早上8:30去上班开车 30 08 * * * CMD 每周日早上9:30去上班开车 30 09 * * * 0 CMD 每天晚上12点准时回家开车 00 00 * * * CMD * 00 * * * CMD (4)定时任务常见特殊符号 * :每 / :隔 #*/10 * * * * CMD (每隔10分钟=每10分钟) - :范围 #* 08-21 * * * CMD ,: #00 08,09,10 * * 1-5 CMD 例如: * * * * * 命令 #每分钟 * /1 * * * * 命令 #每隔1分钟 01 * * * * 命令 #每小时的第一分钟 例如: [root@libin3 ~] # crontab -e * /1 * * * * date >> /tmp/time .log #写一个计时任务,date每隔1分钟输出到/tmp/time.log # tail -f /var/log/cron #打开一个新窗口查看cron日志的变化 # tail -f /tmp/time.log #打开一个新窗口查看time.log的变化 每天晚上12点打包备份 /etc/ 目录到 /tmp 下面 (要求每天的压缩包不能重复) 第一步 :命令加脚本 # tar zcvf /tmp/etc.tar.gz /etc/ #测试打包/etc/的命令 # mkdir -p /libin/scripts/ #创建脚本路径 # vim /libin/scripts/bak.sh #写脚本 #!/bin/bash tar zcf /tmp/etc- $( date +%F). tar .gz /etc/ # sh /libin/scripts/bak.sh #测试脚本是否正确 第二步:写入定时任务 可以先写为每分钟执行 crontab -e # backup etc dir by /tmp/ at 12 * * * * * sh /libin/scripts/bak .sh 第三步:验证定时任务 # tail -f /var/log/cron #查看定时任务的变化 # ll /tmp/etc- #查看备份的变化 第四步:修改定时任务为每天晚上12点 00 00 * * * sh /libin/scripts/bak .sh ==============================================注意 # date +%Y%m%d_%w #带%在定时任务中有特殊含义,否则只会执行三次;建议使用脚本放入定时任务,或加上\ # date +\%Y\%m\%d_\%w 关于 出现 /var/spool/mail/root 提示优化: 1、定时任务 定向到空或追加到文件 > /dev/null 2>&1 #定向到空>/dev/nul,或追加到文件 2>&1 > /dev/null 2>&1 == 1> /dev/null 2> /dev/null == &> /dev/null #1代表正确的信息 2代表错误的信息,同时记录错误或者正确的信息 >> /tmp/message .log 2>&1 #追加到文件 例如:: * /1 * * * * date >> /tmp/time .log 2>&1 #追加到文件的,可以定向到文件,可以把错误的信息记录下来 00 00 * * * sh /libin/scripts/bak .sh > /dev/nul 2>&1 #脚本类或者命令类,可以定向到黑洞 特殊字符设备 /dev/null :黑洞 /dev/zero :白洞 /dev/urandom :随机 1、关闭邮件服务 没有发出去的临时邮件 存放起来 ll /var/spool/postfix/maildrop/ 积累大量小文件 inode可能用光 2、邮件服务开启 不断收到 you have new mail /var/spool/mail/root 定时任务案例2: 1、每分钟显示网卡ip地址(ip或 ifconfig )和当前系统时间追加到 /tmp/time .log (1) # ip a s eth0 | awk 'NR==3' | awk -F"[ /]" '{print $6}' (2) # vim /libin/scripts/ip.sh #!/bin/bash ip a s eth0 | awk 'NR==3' | awk -F "[ /]" '{print $6}' (3) # sh /libin/scripts/ip.sh >>/tmp/time.log (4) # crontab -e * * * * * sh /libin/scripts/ip .sh >> /tmp/time .log 2>&1 #sh -x /libin/scripts/ip.sh >>/tmp/time.log 2>&1,可以先调式脚本 (5) # tail -f /var/log/cron (6) # tail -f /tmp/time.log #/libin/scripts/ip.sh:行2: ip: 未找到命令 注:定时任务中 环境变量问题PATH 在定时任务中 运行脚本 只认识 /usr/bin 和 /bin 这两个路径里面的命令 正确写法: (1) /usr/sbin/ip a s eth0 | awk 'NR==3' | awk -F "[ /]" '{print $6}' (2) #!/bin/bash . /etc/profile ip a s eth0 | awk 'NR==3' | awk -F "[ /]" '{print $6}' # sh -x /libin/scripts/ip.sh #调试脚本,-x:显示脚本的执行过程;带+的是执行的命令和过程,不带+号的是显示到屏幕的内容,+号越多优先执行 定时任务案例3: (1)每天晚上12点 打包备份 /etc/rc . local /etc/fstab /var/spool/cron 备份到backup (2)要求备份到 /backup/ip 地址命名目录中 /backup/192 .168.124.134 /backup/192 .168.124.134 /conf-2022-03-19_ 周几. tar .gz (3)删除 /backup 7天之前的备份 但是保留每周一的备份 =============== #变量名称=变量内容 [root@libin3 ~] # ip=192.168.124.134 [root@libin3 ~] # echo $ip [root@libin3 ~] # echo $ip $ip $ip 192.168.124.134 192.168.124.134 192.168.124.134 [root@libin3 ~] # touch $ip.{01..10} ================ # [root@libin3 ~] # hostname -I 192.168.124.134 192.168.122.1 [root@libin3 ~] # ip=`hostname -I` [root@libin3 ~] # echo $ip.txt 192.168.124.134 192.168.122.1 .txt [root@libin3 ~] # ip=`hostname -I | awk '{print $1}'` [root@libin3 ~] # echo $ip.txt 192.168.124.134.txt 第一步:变量与ip时间 变量 一次定义 多次使用 vim /libin//scripts/bak-conf .sh #!/bin/bash ip=` hostname -I | awk '{print $1}' ` date =` date +%F_%T` echo $ip $ date 第二步:打包备份 mkdir -p /backup/ $ip cd / && \ #\:撬棍,转义,换行 tar zcf /backup/ $ip /conf- $ date . tar .gz etc /rc . local \ etc /fstab var /spool/cron etc /hosts etc /profile 第三步:删除旧备份,保留每周一备份 mkdir /backup/192 .168.124.134/ # touch /backup/192.168.124.134/etc-2018-12-23_{1..6}.tar.gz # find /backup/192.168.124.134/ -type f -name "*.tar.gz" ! -name "*_1.tar.gz" # find /backup/192.168.124.134/ -type f -name "*.tar.gz" ! -name "*_1.tar.gz" | xargs rm -f #! -name :取反 ================================================ 在 crontab 定时一下 tar zcvf /文件存放路径 /webpage . tar .gz / 页面路径/ mysqldump -uroot -p(p后紧跟密码) 库名字 >/备份存放路径 /data .sql chmod 777 你的脚本 然后 crontab -e 每天 凌晨一点备份 里面就写 * 1 * * * /你的脚本路径 /backup .sh |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了