linux计划任务,定时访问url

在项目中,有时需要服务器在指定时间完成某些操作,
这时我们可以使用 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 "----------------------------------------------------------------------------"

保存退出,这里一个定时访问百度的计划任务就添加完成了。。

常见问题解决:

问题一: 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格式。
冯奎博客

冯奎博客
请先登录后发表评论
  • latest comments
  • 总共0条评论