计划任务
一, 一次调度执行 -----at
语法格式
at 时间规格
now +5min
teatime tomorrow (teatime is 16:00) midnight noon
5pm august 3 2024
root@linux-server ~ ]# yum -y install at
[root@linux-server ~]# systemctl status atd #查看启动状态
[root@linux-server ~ ]# systemctl start atd #首先要启动服务
[root@linux-server ~ ]# systemctl enable atd # 做开机启动[root@linux-server ~]# at now +1min #一分钟后开始执行
at> useradd uuuu
at> <EOT> #Ctrl+D
job 2 at Thu Jul 13 11:55:00 2023[root@linux-server ~]# id uuuu
[root@linux-server ~]# atq #查看一次性任务
[root@linux-server ~]# atrm id #删除一次性任务
[root@linux-server ~]# cd /var/spool/at[root@linux-server ~]# at 4pm at 12:30 +3[day|min|hour|month|year|week]
at 4pm 2023-09-03teatime 下午4点
noon 中午12点
midnight 午夜12点小需求:
at now +15min
at 3pm
at 3pm tomorrow
at 3pm +1week
at 10:00 2024-10-01
输入重定向批量调度
[root@linux-server ~]# vim at.jobs
useradd u99
useradd u00
touch /a.txt[root@linux-server ~]# at 20:33 < at.jobs
二,循环调度执行cron用户级
https://crontab.guru/ 查看任务运行时间网址
安装软件
[root@qfedu.com ~]# yum -y install crontabs #如果软件不存在安装启动服务
rhel5/6:
[root@qfedu.com ~]# /etc/init.d/crond status
[root@qfedu.com ~]# /etc/init.d/crond startrhel7:
[root@qfedu.com ~]# systemctl start crond.service
[root@qfedu.com ~]# systemctl status crond.service
[root@qfedu.com ~]# systemctl enable crond.service开机启动(rhel5/6)
[root@qfedu.com ~]# chkconfig crond on
[root@linux-server ~]# systemctl status crond.service #查看服务状态[root@linux-server ~]# ps -ef | grep crond
root 755 1 0 20:18 ? 00:00:00 /usr/sbin/crond -n#crond进程每分钟会处理一次计划任务
存储位置:
[root@linux-server ~]# cd /var/spool/cron/管理方式:
crontab -l List the jobs for the current user. //列出当前用户的计划任务
crontab -r Remove all jobs for the current users. //删除当前用户所有的计划任务
crontab -e Edit jobs for the current user. //编辑当前用户的计划任务
管理员可以使用 -u -l -e username, 去管理其他用户的计划任务
语法格式 :
Minutes Hours Day-of-Month Month Day-of-Week Command
分钟 小时 日 月 周 执行的命令,最好是命令的绝对路径
0-59 0-23 1-31 1-12 0-7时间:
*:每
*/5 每隔分钟
,:不同的时间段
- : 表示范围[root@linux-server ~]# vim /home/soso.sh
#!/bin/bash
touch /opt/a.txt
[root@linux-server ~]# chmod +x /home/soso.sh
创建计划任务
[root@linux-server ~]# crontab -e //当前用户编写计划任务
[root@linux-server ~]# crontab -l #列出计划任务
每天6:00执行
0 6 * * * /home/soso.sh每天8:40执行
40 8 * * * /home/soso.sh每周六凌晨4:00执行
0 4 * * 6 /home/soso.sh每周六凌晨4:05执行
5 4 * * 6 /home/soso.sh每周六凌晨5:00执行
0 5 * * 6 /home/soso.sh每周一到周五9:30
30 9 * * 1-5 /home/soso.sh每周一到周五8:00,每周一到周五9:00
0 8,9 * * 1-5 /home/soso.sh每周六23:59
59 23 * * 6 /home/soso.sh每天0:30
30 0 * * * /home/soso.sh22 15 3 2 5 #每年2月的3日和周五的15:22执行
22 13 */3 2 * #每年的2月每隔三天的13:22执行
22 15 10,15,30 * *
使用其他用户创建
[root@linux-server ~]# crontab -u jack -e #使用jack用户创建
[root@linux-server ~]# crontab -u jack -l #查看jack用户的计划任务
[root@linux-server ~]# crontab -r #删除当前用户的计划任务
[root@linux-server ~]# crontab -u jack -r #删除jack用户的计划任务
使用者权限文件:
文件:
/etc/cron.deny
说明:
该文件中所列用户不允许使用crontab命令文件:
/etc/cron.allow
# 当这个文件产生时,/etc/cron.deny文件失去作用,只有这个文件中的用户才能使用crontab
说明:
该文件中所列用户允许使用crontab命令系统本身的计划任务
/etc/crontab
日志轮转
rsyslog 日志管理
logrotate日志轮转
1.常见日志文件
#tail -f /var/log/messages #动态查看日志文件的尾部,系统主日志文件
#tail -f /var/log/secure #记录认证、安全的日志
tail /var/log/maillog #跟邮件postfix相关
#tail /var/log/cron #crond、at进程产生的日志
tail /var/log/dmesg #和系统启动相关
#tail /var/log/yum.log #yum的日志
tail -f /var/log/mysqld.log #MySQL日志
tail /var/log/xferlog #和访问FTP服务器相关
/var/log/boot.log #系统启动过程日志记录存放
#[root@linux-server ~]#w #当前登录的用户 /var/log/wtmp
#[root@linux-server ~]#last #最近登录的用户 /var/log/btmp
第一列,用户名;
第二列,终端位置,/pts/0 (伪终端)意味着从诸如ssh或者telnet的远程链接的用户,tty(teletypewriter)意味着直接连接到计算机或者本地链接的用户;
第三列,登录的ip或者内核。
第四列,开始时间;
第五列,结束时间(still login in 还未退出 down 直到正常关机 crash 直到强制关机);[root@linux-server ~]#lastlog #所有用户的登录情况 /var/log/lastlog
2.日志的优先级
日志级别分为:7种日志级别代号0-7
0 debug #有调试信息的,日志信息最多
1 info #一般信息的日志,最常用
2 notice #最具有重要性的普通条件的信息
3 warning #警告级别
4 err #错误级别,阻止某个功能或者模块不能正常工作的信息
5 crit #严重级别,阻止整个系统或者整个软件不能工作的信息
6 alert #需要立刻修改的信息
7 emerg #内核崩溃等严重信息
none #什么都不记录
3.logrotate日志轮转
logrotate (轮转,日志切割)
1. 如果没有日志轮转,日志文件会越来越大
2. 将丢弃系统中最旧的日志文件,以节省空间
3. logrotate本身不是系统守护进程,它是通过计划任务crond每天执行
logrotate 配置文件:
主配置文件:/etc/logrotate.conf (决定每个日志文件如何轮转)