在项目中,有时需要服务器在指定时间完成某些操作,
这时我们可以使用 crontab
命令来完成这些操作。
在这篇文章中我们使用 crontab 结合 shell 脚本,
实现定时访问某个 url ,并保存日志。。。
首先打开命令行,编辑crontab文件:
crontab -e
在crontab文件中添加一行
*/1 * * * * /tmp/ceshi/ceshi >> /tmp/ceshi/ceshi.log 2>&1
代码解释:
*/1 * * * *
表示每一分钟执行一次/tmp/ceshi/ceshi
脚本文件的位置>>
追加/tmp/ceshi/ceshi.log
输出日志文件位置2>&1
标准错误输出 重定向到 标准输出命令行下保存 :wq
下面我们新建名为 ceshi 的 shell
脚本:
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
curl -sS --connect-timeout 10 -m 60 'https://www.baidu.com/'
echo "----------------------------------------------------------------------------"
endDate=`date +"%Y-%m-%d %H:%M:%S"`
echo "★[$endDate] Successful"
echo "----------------------------------------------------------------------------"
保存退出,这里一个定时访问百度的计划任务就添加完成了, 我们可以查看 /tmp/ceshi/ceshi.log 文件查看访问的日志。。。
Permission denied
权限被拒绝,这里是因为执行文件的权限的问题,
这里我们将ceshi文件的权限修改一下即可。。
chmod 777 /tmp/ceshi/ceshi
/bin/bash^M: bad interpreter: No such file or directory
这是由于shell脚本文件是dos格式,即每一行结尾以\r\n来标识,而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格式。
本文为冯奎原创文章,转载无需和我联系,但请注明来自冯奎博客fengkui.net
最新评论