- 首先编写一个.sh可执行文件
创建:vi test.sh
具体里边写什么内容就看各自的需求了 - 默认创建的这个.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,就说明修改成功了
- 设置crontab定时任务
打开定时任务配置文件:crontab -e
定时调用test.sh:
* * * * * /usr/local/test.sh
- 保存退出
备注:
定时任务需要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:强制删除文件,包括目录
{} ; :固定写法,一对大括号+空格++;