centos7设置定时任务执行.sh文件

  1. 首先编写一个.sh可执行文件
    创建:vi test.sh
    具体里边写什么内容就看各自的需求了

  2. 默认创建的这个.sh文件是没有权限的
    chmod +x test.sh
    授权之后再执行如果提示

    nohup: failed to run command ‘./startup.sh’: No such file or directory
    

    错误原因是startup.sh文件是我在Windows系统下创建并编辑的,其文件格式为Dos格式,而Linux下不能执行Dos格式的脚本。

    要解决这个问题,只需要使用vi打开这个脚本文件,在命令模式下执行如下指令:

    :set ff=unix
    

    后保存退出即可。

    修改后可以执行:set ff命令确认下,若显示 fileformat=unix,就说明修改成功了

  3. 设置crontab定时任务
      打开定时任务配置文件:crontab -e
      定时调用test.sh:
      
    * * * * * /usr/local/test.sh

  4. 保存退出

备注:
  定时任务需要crond服务的支持
    1.启动方法 service crond restart
    2.该服务默认是开机启动的
  取消定时任务
    1.全部取消 crontab -r
    2.取消某个 crontab -e 配置文件,删除要取消的哪一行配置
  查看目前都有那些定时任务
    crontab -l

第一个* 一小时当中的第几分钟 0-59
第二个* 一天当中的第几小时 0-23
第三个* 一个月当中的第几天 1-31
第四个* 一年当中的第几月 1-12
第五个* 一周当中的星期几 0-7(0和7都代表周日)

*        代表任何时间,比如第一个 * 就代表一小时中的每分钟都执行
,        代表不连续的时间,比如 0 8,12,16 * * * 代表每天8,12,16点0分执行
-        代表连续的时间范围,比如0 5 * * 1-6 代表在周一到周六凌晨5点0分执行
*/n     代表每个多久执行一次,比如*/10 * * * *代表每隔10分钟执行一次

举个例子比我我写的:
30 2 * * 0
就代表每周日的凌晨两点半会执行这个脚本
特殊例子:
0 0 1,15 * 1
每月1号和15号,每周1的0点0分都会执行
  注意:星期几和几号最好不要同时出现,他们的意义都是天,容易混淆

本次也有需要根据时间删除这个目录下的文件的需求顺便记录一下,/usr/local/sdb,清理掉20天之前的无效数据。

可以使用下面一条命令去完成:

find /usr/local/sdb -mtime +20 -name “.” -exec rm -Rf {} ;

这个是根据时间删除。

下面简要解释一下,这句shell命令:

find /usr/local/sdb -mtime +20 -name “.” -exec rm -Rf {} ;

/usr/local/sdb :准备要进行清理的任意目录
-mtime:标准语句写法
+10:查找10天前的文件,这里用数字代表天数,+30表示查找30天前的文件
"*.*":希望查找的数据类型,"*.jpg"表示查找扩展名为jpg的所有文件,"*"表示查找所有文件
-exec:固定写法
rm -rf:强制删除文件,包括目录
 {} \; :固定写法,一对大括号+空格+/+;

当然也可以根据文件名、根据大小,根据其他不同条件过滤删除,或者修改等,可以考虑sort等命令结合使用。

find 对应目录 -mtime +天数 -name “文件名” -exec rm -rf {} ;

例1:

find /usr/local/sdb -mtime +10 -name “.” -exec rm -rf {} ;

将/usr/local/sdb目录下所有10天前带”.”的文件删除

find:Linux的查找命令,用户查找指定条件的文件

/usr/local/sdb:想要进行清理的任意目录

-mtime:标准语句写法

+10:查找10天前的文件,这里用数字代表天数,+30表示查找30天前的文件

.”:希望查找的数据类型,”.jpg”表示查找扩展名为jpg的所有文件,””表示查找所有文件,这个可以灵活运用,举一反三

-exec:固定写法

rm -rf:强制删除文件,包括目录

{} ; :固定写法,一对大括号+空格++;

你可能感兴趣的:(centos7环境搭建)