首页>建站相关>为linux添加一个定时任务

为linux添加一个定时任务

博客文章不多,不准备另行安装一个插件来生成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

linux_timing_task

在以上各个时间设定字段中,还可以使用以下特殊字符:

  • 星号(*):代表所有可能的值,例如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

标签: linux

移动端可扫我直达哦~

推荐阅读

linux 2024-03-27

linux如何将文件拷贝至上一层文件夹

发现Wordpress有个24年1月份的更新,服务器里保留的版本是4.5.29,最新版本已经更新到了4.5.31。于是就想下载下来尝试一下,因为博客的服务器是天翼最低配的服务器,跑新版本的Wordpress一直觉得有点卡顿,所以最高仅...

建站相关 linux

linux 2023-10-14

centos8安装中文支持以显示中文文件名称

偶然发现了github上“jrotty”整理的typecho文档,比官方的要详细一些,排版也很漂亮。就想在自己的服务器上也部署一份,结果上传到服务器之后出现了很多问题,利用F12调试发现了一堆的404错误。文档是markdown格式的...

建站相关 linux

linux 2022-10-14

让unzip解压缩到指定文件夹

阿里云的服务器快要到期了,手上另有一台天翼云的服务器。因为自建博客也不产生什么利润,为了控制成本,准备把手上的两个域名指向同一个服务器,由nginx根据域名分派任务。因为wordpress的压缩包默认解压到同文件夹的名为“wordpr...

建站相关 linux

linux 2022-10-12

EPEL企业Linux增强软件包

EPEL是一个Fedora特别兴趣小组,它为企业Linux创建、维护和管理一组高质量的附加软件包,包括但不限于Red Hat Enterprise Linux (RHEL)、CentOS、 Scientific Linux (SL)、...

建站相关 linux

linux 2022-10-11

阿里云ECS服务器如何重新安装系统

老博客已经有小半年没有更新,之前的库存文章也手工迁移完毕,准备重新安装下系统,之前一直用的Lamp环境,趁此机会学习一下如何使用Nginx。阿里云ECS控制台首先当然是登录阿里云,进入ECS控制台,点击实例名称进入详情页;运行中的服务...

建站相关 linux

linux 2022-09-30

linux的邮件提示功能

捣鼓定时任务的时候系统提示了这样一条信息:“You have new mail in /var/spool/mail/root”,按图索骥去看了一下,是个挺大的文件,保存了从服务器创建至今的所有邮件,进度条很长,硬是用pagedown...

建站相关 linux

linux 2022-09-28

linux利用shell脚本进入指定目录

这个博客使用了天翼云的云服务器,安装的服务端软件是nginx,nginx默认的目录深度挺深,进出颇为不便。虽然用键盘劈里啪啦输入一长串命令来操作服务器看起来也蛮酷的,日子久了终归有点不太方便。所以就想着尝试用批处理命令进入一个指定的文...

建站相关 linux