day17-2019年3月22日

2019-03-22  本文已影响0人  Linux_wu_sir

1)步骤拆分

2)框架思维

3)能复制粘贴就复制粘贴

定时任务

什么是定时任务?

周期性的执行任务计划的软件

crond 

为什么要使用?

使用定时任务可以每天,每小时,按需求重复的执行一项工作

例如:备份 都是0点以后

需要写一个程序实现自动备份,然后让定时任务软件帮助执行

怎样使用?

(1)系统定时任务计划

1、不用管理员干预,系统可以自动执行

2、也可以利用系统任务为管理员服务

[root@oldboy_template-2 logrotate.d]# 

[root@oldboy_template-2 logrotate.d]# ll /var/log/messages*

-rw-------  1 root root 1216088 Mar 22 10:10 /var/log/messages

-rw-------. 1 root root 1973890 Mar 20 09:46 /var/log/messages-20190320

[root@oldboy_template-2 logrotate.d]# ll /etc/cron.daily/logrotate   /etc/logrotate.conf 

-rwx------. 1 root root 219 Oct 31 03:12 /etc/cron.daily/logrotate

-rw-r--r--. 1 root root 662 Jul 31

sar 查看cpu使用情况  

(1)用户定时任务计划

在Linux系统中

cron是定时任务的软件名,crond是服务进程名,crontab命令是用来设置定时任务规则的配置命令

要想配置定时任务,首先需要启动crond这个服务

[root@oldboy_template-2 logrotate.d]# systemctl status crond

● crond.service - Command Scheduler

   Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)

   Active: active (running) since Fri 2019-03-22 08:26:30 CST; 1h 52min ago

 Main PID: 6457 (crond)

   CGroup: /system.slice/crond.service

           └─6457 /usr/sbin/crond -n

Mar 22 08:26:30 oldboy_template-2 systemd[1]: Started Command Scheduler.

Mar 22 08:26:30 oldboy_template-2 crond[6457]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 1% if used.)

Mar 22 08:26:30 oldboy_template-2 crond[6457]: (CRON) INFO (running with inotify support)

crontab命令是用来设置定时任务规则

内容存放位置/var/spool/cron/用户名

以当前用户名作为文件名

-l list

-e edit

-u user

编写定时任务的语法:            

# 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

特殊符号

* 每

- 连续区间

, 列举

/n n是数字

定时任务对%的要求,百分号要转义\%

一般调用脚本

mkdir /server/scripts -p

运维规范:

脚本位置:/server/scripts

软件位置:/server/tools

编译位置:/application/软件名字-版本-然后要软链接

命令行执行

/bin/sh /server/scripts/bak.sh 可以不加执行权限

1、命令行执行

cd /var/www

tar zcf /data/html_$(date +%F).tar.gz  ./html

2、尽量用脚本文件实现

#mkdir /server/scripts -p #存放脚本的文件

cd /server/scripts

#cat bak.sh

tar zcf /data/html_$(date + %F).tar.gz ./html

命令行执行

/bin/sh /server/scripts/bak.sh 

3、编辑定时任务

#bak html dir by wu at 20201111

00 00 * * * /bin/sh /server/scripts/bak.sh &>/dev/null

[root@oldboy /server/scripts]#crontab -l|tail -2

#bak html dir by oldboy at 20201111

00 00 * * * /bin/sh /server/scripts/bak.sh &>/dev/null

4、检查正式结果

[root@oldboy /server/scripts]#ls -l /data

要领:

为定时任务添加必要的注释(时间 人 地点 做了什么)

所有定时任务尽量用脚本实现

在脚本前加/bin/sh 防止脚本没有权限,导致无法执行

定时任务结尾注意添加 >/dev/null 2>&1

在指定用户下执行定时任务(用户权限最小化)

不要随意打印输出

定时任务要放在规范的目录下

规范操作过程,减少出错

执行命令全路径

时间变量%要反斜线转义(只有定时任务时需要)

若脚本中调用了系统环境变量,需要重新定义

出错或无法执行检查/var/log/cron日志文件

要领1:为定时任务规则添加必要的注释

要领2:所有的定时任务尽量都以脚本的形式执行

要领3:在执行的shell脚本前加上/bin/sh

要领4:定时任务中命令或脚本的结尾加>/dev/null 2>&1

要领5:在指定用户下执行相关定时任务

要领6:生产任务计划程序中不要随意打印输出信息,有输出的信息去掉

要领7:定时任务执行的脚本要存放到规范路径下

要领8:配置定时任务要规范操作过程,减少出错

要领9:定时任务脚本中程序命令及路径尽量用全路径

要领10:时间变量%号要用反斜线转义(只有定时任务里是命令时需要)

要领11:若脚本中调用了系统环境变量,要重新定义

要领12:出错或无法执行,检查/var/log/cron日志文件

上一篇 下一篇

猜你喜欢

热点阅读