在项目中,有时需要服务器在指定时间完成某些操作,
这时我们可以使用 crontab 命令来完成这些操作。
在这篇文章中我们使用 crontab 结合 shell 脚本,
实现定时访问某个 url ,并保存日志。。。
首先打开命令行,编辑crontab文件:
Bash
Copy
在crontab文件中添加一行
Bash
Copy
代码解释:
*/1 * * * * 表示每一分钟执行一次
/tmp/ceshi/ceshi 脚本文件的位置
>> 追加
/tmp/ceshi/ceshi.log 输出日志文件位置
2>&1 标准错误输出 重定向到 标准输出
命令行下保存 :wq
下面我们新建名为 ceshi shell脚本:
Bash
Copy
保存退出,这里一个定时访问百度的计划任务就添加完成了。。
常见问题解决:
问题一: Permission denied
权限被拒绝,这里是因为执行文件的权限的问题,
这里我们将ceshi文件的权限修改一下即可。。
Bash
Copy
问题二: /bin/bash^M: bad interpreter: No such file or directory
这是由于shell脚本文件是dos格式,即每一行结尾以rn来标识,而unix格式的文件行尾则以n来标识。
查看脚本文件是dos格式还是unix格式的几种办法。
(1)cat -A filename 从显示结果可以判断,dos格式的文件行尾为^M$,unix格式的文件行尾为$。
(2)od -t x1 filename 如果看到输出内容中存在0d 0a的字符,那么文件是dos格式,如果只有0a,则是unix格式。
(3)vi filename打开文件,执行 : set ff,如果文件为dos格式在显示为fileformat=dos,如果是unxi则显示为fileformat=unix。
解决方法:
(1)使用linux命令dos2unix filename,直接把文件转换为unix格式
(2)使用sed命令sed -i “s/r//” filename 或者 sed -i “s/^M//” filename直接替换结尾符为unix格式
(3)vi filename打开文件,执行 : set ff=unix 设置文件为unix,然后执行:wq,保存成unix格式。