博客文章不多,不准备另行安装一个插件来生成sitemap,参考(照搬)了张戈博客的免插件sitemap代码,利用一个php文件来生成sitemap。接下来准备利用wget命令抓取并另存为xml文件,实现文件的静态化。
linux的crontab命令
linux提供了使用者控制计划任务的命令 :crontab 命令,允许用户每隔10分钟检查邮件服务器是否有新信,或者每隔一段时间去访问一个特定的网络地址,crontab命令的语法如下:
crontab [ -u user ] { -l | -r | -e }
通过-u参数可以为不同的用户设置不同的定时任务,例如,“-u ixdba”表示设定ixdba用户的crontab服务,如果省略了这个参数,则默认为当前用户,此参数一般由root用户来运行;
crontab -l
-l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容;
crontab -e
-e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件;
crontab -e
-r:删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。
crontab命令文件的格式
前文介绍过通过“-e”参数可以打开用户的crontab文件,需要添加定时任务的时候,我们需要打开这个文件,按照固定的格式来编写定时任务,文件的每一行代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:
minute hour day month week command
在以上各个时间设定字段中,还可以使用以下特殊字符:
- 星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作;
- 逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”;
- 中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”;
- 正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。
按规定格式编辑完文件之后,保存并退出,自定义的任务随即被加入进程,需要注意的是,自定义任务并不会立即被触发,一般需要等待至少2分钟。
crontab时间设置实例
实例1:每1分钟执行一次command
* * * * * command
实例2:每小时的第3和第15分钟执行
命令:
3,15 * * * * command
实例3:在上午8点到11点的第3和第15分钟执行
命令:
3,15 8-11 * * * command
实例4:每隔两天的上午8点到11点的第3和第15分钟执行
3,15 8-11 */2 * * command
实例5:每个星期一的上午8点到11点的第3和第15分钟执行
3,15 8-11 * * 1 command
忽略日志输出
每条任务调度执行完毕,系统都会将任务输出信息通过电子邮件的形式发送给当前系统用户,这样日积月累,日志信息会非常大,可能会影响系统的正常运行,因此,将每条任务进行重定向处理非常重要。可以在crontab文件中设置如下形式,忽略日志输出:
0 */3 * * * /usr/local/apache2/apachectl restart >/dev/null 2>&1
“/dev/null 2>&1”表示先将标准输出重定向到/dev/null,然后将标准错误重定向到标准输出,由于标准输出已经重定向到了/dev/null,因此标准错误也会重定向到/dev/null,这样日志输出问题就解决了。
解决最初的诉求
将 sitemap.php 放到某个不为人知的目录,然后定时使用 wget 去请求这个文件,并将数据保存为 sitemap.xml 存放到网站根目录就可以了!比如:
每天在网站根目录生成一个 sitemap.xml diypath 为 sitemap.php 的实际位置
0 1 * * * wget -O /home/wwwroot/zhang.ge/sitemap.xml https://zhang.ge/diypath/sitemap.php >/dev/null 2>&1
如果是启用了 https 的站点,需要加入 –no-check-certificate 的选项:
每天在网站根目录生成一个 sitemap.xml diypath 为 sitemap.php 的实际位置(针对 https 网站)
0 1 * * * wget -O /home/wwwroot/zhang.ge/sitemap.xml --no-check-certificate https://zhang.ge/diypath/sitemap.php >/dev/null 2>&1
评论(0)