Crontab NTP Sendmail
A B C D E program
分钟 时段 月份第几日 月份 星期中的第几天
当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程式,其余类推
当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其余类推
当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其余类推
当 f1 为 a, b, c,… 时表示第 a, b, c,… 分钟要执行,f2 为 a, b, c,… 时表示第 a, b, c…个小时要执行,其余类推
查看其他用户的Crontab命令集合
crontab -u username -l
* * * * * // 5个都是个星号,代表每分钟都会执行。
30 * * * * // 每到 30分的时候执行一次,也就是每小时执行两次。
* 18 * * * // 每天的 18 点执行一次。
* */2 * * * // 每隔 2 小时执行一次, */ 是间隔时段的表示法。
--------------------------------------------------------------------------------
ntpdate -d time.nist.gov
ntpdate -d ntp.sjtu.edu.cn
ntpdate ntp.sjtu.edu.cn
ntpdate ntp2.aliyun.com
ntpdate ntp1.aliyun.com
每十分钟执行时间同步
*/10 * * * * /usr/sbin/ntpdate ntp.sjtu.edu.cn
systemctl restart crond
--------------------------------------------------------------------------------
每秒钟执行
vi 1.sh
#!/usr/bin/bash
while true
do
t=`date`
echo "$t "
sleep 2
done
sh 1.sh 测试每2秒输出date
每2秒打印一下时间
while 循环命令格式
while testcommand
do
commands
done
--------------------------------------------------------------------------------
在 12 月内, 每天的早上 6 点到 12 点中,每隔 20 分钟执行一次 /usr/bin/backup
*/20 6-12 * 12 * /usr/bin/backup
systemctl restart crond
每一小时执行myscript.php如下:
00 * * * * /usr/local/bin/php /home/john/myscript.php
systemctl restart crond
每天 4 点重启 httpd
00 4 * * * /usr/sbin/systemctl httpd restart
systemctl restart crond
每天 02:00 执行任务
0 2 * * * /bin/sh backup.sh
每天 5:00和17:00执行任务
0 5,17 * * * /scripts/script.sh
每分钟执行一次任务
* * * * * /scripts/script.sh
每周日 17:00 执行任务
0 17 * * sun /scripts/script.sh
每 10min 执行一次任务
*/10 * * * * /scripts/monitor.sh
在特定的某几个月执行任务
* * * jan,may,aug * /script/script.sh
在特定的某几天执行任务
0 17 * * sun,fri /script/scripy.sh
在每周五、周日的17点执行任务
在某个月的第一个周日执行任务
0 2 * * sun [ $(date +%d) -le 07 ] && /script/script.sh
每四个小时执行一个任务
0 */4 * * * /scripts/script.sh
每周一、周日执行任务
0 4,17 * * sun,mon /scripts/script.sh
--------------------------------------------------------------------------------
mail -s '主题' complet@163.com
echo '内容' | mail -s '主题' complet@163.com
systemctl start sendmail 启动慢或启动后报错 My unqualified host name (host) unknown; sleeping for retry
vi /etc/hosts(增加一个hostname后面加. )
192.168.55.138 dd. dd
发送不出去,临时修改hostname dd.com
然后systemctl restart sendmail
tail /var/log/maillog
如果想要阅读mail,首先安装mail:yum -y install mailx
阅读/var/spool/mail/root 邮件内容:mail -f /var/spool/mail/root
清空messages文件:cat /dev/null>root
关闭linux系统的邮件功能自动提示:echo "unset MAILCHECK">> /etc/profile
查看日志
--------------------------------------------------------------------------------
Centos7.5 mysqldump+crontab自动备份数据库
vi /db.sh
#!/bin/bash
mysqldump -A -uroot -p142857> /mysqlallbak.sql
crontab -e
*/1 * * * * /db.sh
--------------------------------------------------------------------------------
vi /usr/sbin/bakmysql.sh
DATE=`date +%Y%m%d%H%M` #every minute
DATABASE=fgdatabase #database name
DB_USER=root #database username
DB_PASS="+lintang" #database password
BACKUP=/bak/mysqldata #backup path
#backup command
/usr/bin/mysqldump -u$DB_USER -p$DB_PASS -h 127.0.0.1 -R --opt $DATABASE |gzip > ${BACKUP}\/${DATABASE}_${DATE}.sql.gz
#just backup the latest 5 days
find ${BACKUP} -name "${DATABASE}_*.sql.gz" -type f -mtime +5 -exec rm {} \; > /dev/null 2>&1
chmod +x /usr/sbin/bakmysql.sh
每天凌晨3点备份一次
00 3 * * * /usr/sbin/bakmysql.sh
systemctl restart crond
--------------------------------------------------------------------------------
MySQL定时自动完整备份(mysqldump+crontab)
目录准备
mkdir /mysql
mkdir /mysql/backup
mkdir /mysql/backup/scripts
mkdir /mysql/backup/files
mkdir /mysql/backup/logs
备份脚本
新建脚本
vi /mysql/backup/scripts/backup_full.sh
脚本内容
#!/bin/bash
#备份目录
BACKUP_ROOT=/mysql/backup
BACKUP_FILEDIR=$BACKUP_ROOT/files
BACKUP_LOGDIR=$BACKUP_ROOT/logs
#当前日期
DATE=$(date +%Y%m%d)
######备份######
#查询所有数据库
#-uroot -p123456表示使用root账号执行命令,且root账号的密码为:123456
DATABASES=$(mysql -uroot -p123456 -e "show databases" | grep -Ev "Database|sys|information_schema")
#DATABASES=$(mysql -uroot -p123456 -e "SELECT SCHEMA_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME NOT IN ('sys','mysql','information_schema','performance_schema');" | grep -v "SCHEMA_NAME","ken.io")
echo $DATABASES
#循环数据库进行备份
for db in $DATABASES
do
echo
echo ----------$BACKUP_FILEDIR/${db}_$DATE.sql.gz BEGIN----------
mysqldump -uroot -pRoot@1024 --default-character-set=utf8 -q --lock-all-tables --flush-logs -E -R --triggers -B ${db} | gzip > $BACKUP_FILEDIR/${db}_$DATE.sql.gz
echo ----------$BACKUP_FILEDIR/${db}_$DATE.sql.gz COMPLETE----------
echo
done
echo "done"
备份测试&验证
#执行备份脚本
sh /mysql/backup/scripts/backup_full.sh
#查看备份文件
ll /mysql/backup/files -h
#解压指定文件({file}自己替换成备份的文件)
gunzip /mysql/backup/files/{file}
三、定时任务
安装crontab
yum install -y crontab
1、定时执行MySQL完整备份
创建定时备份任务
#添加定时任务
crontab -e
#每天凌晨3点执行
00 3 * * * sh /mysql/backup/scripts/backup_full.sh
#查看定时任务
crontab -l
2、定时清理7天以前的备份
创建文件清理脚本
#创建脚本文件
vi /mysql/backup/scripts/backup_full_clean.sh
#写入以下内容
#!/bin/bash
find /mysql/backup/files -mtime +7 -name "*.gz" -exec rm -rf {} \;
创建定时清理任务
#添加定时任务
crontab -e
#每天凌晨1点执行
00 1 * * * sh /mysql/backup/scripts/backup_full_clean.sh
#查看定时任务
crontab -l
--------------------------------------------------------------------------------
Ubuntu17.04 mysqldump+crontab自动备份数据库
vi /bkdbname.sh
#!/bin/bash
BKPATH="/path/to/shell-path/"
BKDBNAME="dbname"
BKDATE=$(date +%Y%m%d_%H%m%s)
BKFILE=${BKPATH}${BKDBNAME}_${BKDATE}.sql.gz
/usr/bin/mysqldump -uroot -p"password" ${BKDBNAME} | gzip>${BKFILE}
添加定时任务
打开编辑 /etc/crontab, 在末尾添加 定时任务.
chmod +x /bkdbname.sh
# back database 每天17点备份
0 17 * * * willike sh /bkdbname.sh
--------------------------------------------------------------------------------
crontab定时监控tomcat进程 停止时自动启动
#!/bin/sh
#获取tomcat进程ID
TomcatID=$(ps -ef | grep tomcat | grep -w 'tomcat'|grep -v 'grep'|awk '{print $2}')
#Tomcat启动程序(根据自己路径编写)
StartTomcat=/usr/local/tomcat/bin/startup.sh
TomcatCache=/usr/local/tomcat/work
#定义要监控的页面地址(写比较简单页面即可)
WebUrl=https://hao.360.cn/?wd_xp1
#日志输出
TomcatMonitorLog=/tmp/TomcatMonitor.log
Monitor(){
echo "[info]开始监控tomcat...[$(date +'%F %H:%M:%S')]"
#判断Tomcat进程是否存在
if [[ $TomcatID ]];then
echo "[info]当前tomcat进程ID为:$TomcatID,继续检测......"
#检测是否启动成功(成功的话页面会返回状态"200")
TomcatServiceCode=$(curl -I -m 10 -o /dev/null -s -w %{http_code} $WebUrl)
if [ $TomcatServiceCode -eq 200 ];then
echo "[info]返回码为$TomcatServiceCode,tomcat启动成功,测试正常......"
else
echo "[error]tomcat出错,请注意......状态码为$TomcatServiceCode,错误日志已输出到$TomcatMonitorLog[error],开始重启tomcat"
#杀掉原tomcat进程
kill -9 $TomcatID
sleep 3
#清理tomcat缓存
rm -rf $TomcatCache
$StartTomcat
fi
else
echo "[error]tomcat进程不存在!tomcat开始自动重启......[info]$StartTomcat,请稍候......"
rm -rf $TomcatCache
$StartTomcat
fi
echo "编写完成"
}
Monitor>>$TomcatMonitorLog
二、保存退出后,给脚本执行权限
指令:chmod a+xmonitor.sh
三、启动脚本,使用crontab执行定时任务
[root@izjjh7u0ge4d6yztomcat]# ./monitor.sh
看monitor.sh文件是否已经监控
使用crontab需要先启动crontab,然后使用vi添加定时执行任务。
/sbin/service crond start
vi /etc/crontab
添加内容为:
*/1 * * * * /usr/local/tomcat/monitor.sh
保存并退出,可以用crontab -l指令来查看当前的定时任务。