linux定时执行

目前工作需要我运维爬虫,在集群上爬取速度会更快。由于爬虫代码很多时候是不变动的。但需要按照时间、周期等有规律爬取数据。故根据公司要求学习linux定时执行命令,以便按时完成爬虫排期规定的爬虫任务。

没怎么接触过linux操作,所以笔记以备忘。

给我的文件crontab.txt文件,含有同格式命令28条,其中第一条为0 6 * * * sh /home/chenfy/crawl/tt/crontab.sh。这是linux的crontab定时任务命令。参考(linux ( crontab 定时任务命令))[https://www.cnblogs.com/shizhengquan/p/10876386.html],其格式为`minute hour day month week command。时间代表触发自动执行的时间条件,command可指定command所在位置。详见此网址。关于命令本身,此示例的命令为sh,即运行脚本,后跟脚本的绝对地址(或者也可相对地址吧,暂未验证)。脚本内部命令可看同事给的linux计划执行/crontab.sh.example文件,其实这就是crontab.sh脚本,只不过希望运维人员根据具体版本环境修改后重命名为crontab.sh`再运行。脚本里面内容为:

cd /home/chenfy/crawls/tt
nohup /home/chenfy/.local/bin/scrapy crawl fang >> fang_zu.log 2>&1 &

cd后的内容即具体的爬虫代码,公司为了保证采用最新版本的代码,将代码放在gitlab仓库。遇到有代码更新(或为保险起见),git clone xxxgit pull original以让代码保鲜。nohup是为了保证在你退出帐户/关闭终端之后继续运行相应的进程,这些细节详见(nohup 详解)[https://www.cnblogs.com/jinxiao-pu/p/9131057.html]。 但是这些计划执行命令不可以直接在Xshell prompt执行,需要放入用户的crontab文件中(关于crontab文件的位置,暂未找到。但可通过crontab -l查看,并可通过crontab -e进入编辑。编辑时候采用linux的vim命令,按i可插入,再按esc将退出,再输入":"可选择退出与否保存与否。“:wq”代表保存并退出。

这些计划执行命令将根据设定的时间点开始执行,并不能限定执行完成时间。

注意以上细节应该就可以定时执行计划命令了,爬取的文件或在计划命令的工作路径或在爬虫代码设置的具体输出路径。将爬取的文件发给对应的爬虫项目负责人。

关于爬虫计划,暂不知道放在什么位置。仅计划了周期而没更严格的时间规定的话,可选择集群负荷较小的深夜凌晨。