1.应用场景

主要用于在服务器[linux]上编写定时脚本,执行执行任务,同时明白存在的问题.

2.学习/操作

环境

阿里云ECS

centOS 7.4

root权限

1. 文档阅读

Linux Crontab 定时任务 | 菜鸟教程  //Linux Crontab 定时任务

https://www.jianshu.com/p/58b6808817f9  //Linux下如何创建定时任务?

Linux添加shell(.sh)脚本并添加定时任务 - 灬菜鸟灬 - 博客园 //Linux添加shell(.sh)脚本并添加定时任务

/etc/crontab文件和crontab -e命令区别 - 茄子_2008 - 博客园  //etc/crontab文件和crontab -e命令区别

http://vbird.dic.ksu.edu.tw/linux_basic/0430cron_3.php

crontab实用手册 - ggjucheng - 博客园

新浪博客(crontab真实文件所在位置)

CentOS安装crontab及使用方法 - G-Beniot - 博客园

shell脚本如何判断文件大小_PureMastiff的博客-CSDN博客_shell 判断文件大小 //shell脚本如何判断文件大小

2. 整理输出

2.1 介绍

Linux Crontab 定时任务 | 菜鸟教程  //Linux Crontab 定时任务

Linux crontab 命令 | 菜鸟教程

2.2 在线工具

Crontab.guru - The cron schedule expression editor

2.3 编写定时任务

一般crontab系统会默认安装, 如果没有安装, 请自行安装

centOS:  yum  install  -y cron

Ubuntu:  apt-get  install -y cron

crontab作为系统服务.同nginx, mysql,  apache,  php-fpm等相同

相关命令如下:

/sbin/service crond start //启动服务

/sbin/service crond stop //关闭服务

/sbin/service crond restart //重启服务

/sbin/service crond reload //重新载入配置

如果不能使用, 请使用systemctl 命令, 用法与其他相同

步骤

3.1 先查看root权限下的定时任务

crontab -l //查看定时任务

3.2 创建定时任务

crontab -e

按下i, 进入编辑模式

这里是, 每分钟标准输出[追加方式]字符串'hello' 到 test.txt文件中, test.txt文件并不存在.这里会自行创建

* * * * * echo 'hello' >> test.txt

保存退出!

3.3 查看定时任务  //这是root权限下

看到已经有存在定时任务

3.4 验证定时任务是否生效

可以看到定时任务已经生效.

3.5 编写 shell 脚本[执行PHP代码] 配合 crontab 来工作

重新创建定时任务

1. 进入家目录 ~

cd ~

2. 创建目录crontab

mikdir  /crontab

3. 创建shell脚本

vim test.sh

test.sh内容:

#!/bin/sh
cd ~
php -q ./ningxiaofa/test.php

4. 添加权限:chmod +x ./test.sh  //掉坑了

5. 查看执行结果:./test.sh

6. 创建test.php

<?php

echo "hello world ! \n\r";

7. 创建定时任务

crontab -e

进入编辑模式, 输入

每隔1分钟, 执行shell脚本

* * * * *  ~/crontab/test.sh >> ~/test.txt

过程结果:

6. 查看定时执行任务结果

如果没有出现预期的结果, 请启动/重启crontab服务.

Note

如果修改了crontab, 需要重新启动服务

2.4 删除定时任务

crontab -r // 默认删除所有该用户权限的定时任务

补充

Mac下也是一样

Mac本身通常已经内置了crontab

这里简单创建了一条定时任务

2.5 深入提问和探究

crontab的工作原理 结合例子详细介绍

Crontab是Linux系统中用于定时执行任务的工具,其工作原理可以简述为:

  1. Crontab通过读取系统指定的文件(通常是/etc/crontab或/var/spool/cron/crontabs/用户名称)来获取要执行的定时任务列表。
  2. 这些定时任务由五个时间字段来控制:分钟、小时、日、月、星期几。Crontab会根据这些时间字段来判断哪些任务需要在当前时间执行。
  3. 如果定时任务需要运行,则Crontab将执行与该任务相关联的命令或脚本。
  4. 当Crontab启动一个任务时,它会以所属用户的身份启动一个新的进程来执行该任务。

下面给出一个例子来介绍Crantab的工作原理:

假设我们有一个名为backup.sh的脚本,我们希望每天夜里11点备份一次系统文件到/home/user/backup目录下。我们可以通过编辑/root/.crontab文件来实现:

# Minute Hour Day of Month Month Day of Week Command

# (0-59) (0-23) (1-31) (1-12) (0-7, where both 0 and 7 mean Sun)

0 23 * * * /bin/bash /root/backup.sh

这个crontab条目意味着每天11点整(0 23 * * *),Crontab将调用/bin/bash /root/backup.sh,也就是我们的备份脚本。

当系统时间到达每天晚上11点时,Crontab将读取/root/.crontab文件并检查其中所有的定时任务。发现了与当前时间匹配的任务之后,Crontab将启动一个新的进程来执行我们的备份脚本。该进程将以root用户的身份运行,并将执行我们在脚本中定义的操作,即将系统文件备份到/home/user/backup目录下。

总之,Crantab通过读取指定的配置文件并根据时间字段判断需要执行哪些任务,然后通过启动相应的进程来执行这些任务。

root身份执行crontab -e创建的定时任务在哪里?

2023/3/28 10:17:13

通过crontab -e命令创建的定时任务会保存在当前用户的crontab文件中。对于root用户,它的crontab文件通常位于/var/spool/cron/crontabs/root文件中。

这个文件是只有root用户有写权限的,包含了所有由root用户通过crontab -e命令创建的定时任务。每行一个定时任务,并用空格或TAB键将时间字段和要执行的命令或脚本分隔开来。

需要注意的是,修改/var/spool/cron/crontabs/root文件需要使用root用户的权限。如果您想查看当前root用户的crontab文件,可以使用以下命令:

sudo crontab -u root -l

如果是root账户,

简写

crontab -l

这将列出当前root用户的所有定时任务。如果您想编辑此文件并添加或删除任务,请使用以下命令:

sudo crontab -u root -e

这将打开root用户的crontab文件,并允许您进行编辑。完成编辑后,按下Ctrl+X,然后按下Y并回车以保存更改。

/var/spool/cron/crontabs/root 文件不存在

如果/var/spool/cron/crontabs/root文件不存在,则可能表示当前root用户没有设置过任何定时任务。在这种情况下,您可以使用以下命令来创建一个新的crontab文件:

sudo crontab -u root -e

这将打开一个空的crontab文件以供您添加定时任务。您可以按照规范的格式添加新任务并保存文件。一旦您添加了任务,Crontab将自动在指定的时间运行它们。

如果您希望查看当前root用户的crontab文件(即使它为空),可以使用以下命令:

sudo crontab -u root -l

这将显示当前root用户的crontab文件内容。

定时任务存在,但是/var/spool/cron/crontabs/root 文件不存在

如果您的系统上存在定时任务,但是/var/spool/cron/crontabs/root文件不存在,则可能表示该文件已被删除或移动到其他位置。在某些情况下,这可能是由于系统管理员将crontab文件存储在不同的目录中而引起的。

您可以尝试使用以下命令来查找root用户的crontab文件:

sudo find / -name root -type d -prune -o -type f -print 2>/dev/null | grep crontab

这将在系统中搜索所有包含“crontab”字符串的文件,并且在其中寻找属于root用户的相关文件。

如果找到了一个类似于/home/root/crontab的文件,请使用以下命令将其设置为root用户的crontab文件:

[已经是root账户下的定时任务,不需要处理]

sudo crontab -u root /home/root/crontab

请注意,在这个示例中,/home/root/crontab是一个代表root用户自定义的crontab文件路径。您需要替换为自己的路径。

如果找不到任何与root用户关联的crontab文件,则可能需要重新创建它。您可以使用以下命令将当前的crontab文件保存到新的位置:

sudo crontab -u root -l > /home/root/crontab

然后,使用以下命令将该文件作为root用户的crontab文件进行设置:

sudo crontab -u root /home/root/crontab

现在,您应该能够在/var/spool/cron/crontabs/root文件中看到root用户的定时任务。

crontab 执行定时任务进程的生命周期 详细介绍

当Crontab启动一个定时任务进程时,该进程的生命周期与其他Linux进程类似,并且受到相同的限制和控制。下面是一些关于Crontab定时任务进程生命周期的详细介绍:

  1. 进程的创建:当Crontab决定要运行一个定时任务时,它将以所属用户的身份创建一个新的进程来执行该任务。该进程将从shell上下文中继承环境变量、文件描述符等信息,并在此基础上执行任务。

  2. 进程的执行:一旦进程被创建,它将开始执行任务相关的命令或脚本。如果该任务需要使用其他程序或库,则进程将在其环境中加载这些资源,并使用它们来完成任务。

  3. 进程的监控:Crontab会监视每个定时任务进程的运行情况。如果进程出现异常(例如崩溃或无响应),则Crontab将尝试重新启动该进程,以确保任务能够正常运行。如果进程连续多次出现异常,则Crontab可能会停止尝试,同时向任务的拥有者发送错误通知。

  4. 进程的终止:当任务完成或进程遇到错误时,进程将退出并返回一个状态码。在大多数情况下,状态码为0表示任务已成功完成,而非零状态码表示任务失败。Crontab将记录每个进程的状态码,并根据其值采取适当的措施,例如发送通知或重新尝试运行该任务。

  5. 进程的清理:一旦Crontab决定不再需要一个定时任务进程时,它将终止该进程并释放分配给它的所有系统资源,例如内存和文件描述符。此后,进程的生命周期结束,它不再占用系统资源。

综上所述,Crontab定时任务进程的生命周期与其他Linux进程类似,并受到相同的限制和控制。Crontab会监控进程的运行情况,并在必要时重新启动或停止进程,以确保任务能够正常运行。

“Crontab将记录每个进程的状态码,并根据其值采取适当的措施,例如发送通知或重新尝试运行该任务。” 详细介绍

在Crontab中,每个定时任务进程在完成后都会返回一个状态码。状态码是一个整数值,表示任务的执行结果。通常情况下,状态码为0表示任务成功完成,而非零状态码表示任务失败。

对于每个定时任务,Crontab将记录其上次运行的时间、状态码和其他相关信息。

如果任务的状态码表明它已经失败,Crontab将采取适当的措施来处理这种情况,例如:

  1. 发送通知:Crontab可以向任务的拥有者发送电子邮件或其他通知,以告知他们任务的失败情况。这有助于及时发现问题并尽早解决它们。

  2. 重新尝试:如果任务的状态码表明它已经失败,Crontab可以尝试重新启动该任务,并检查是否能够正常运行。这通常是通过在稍后的时间点再次执行相同的命令或脚本来实现的。

  3. 记录日志:Crontab会记录每个定时任务的运行情况,并将其保存在系统日志文件中。这些记录可以用于跟踪任务的历史以及了解任务失败的原因。

需要注意的是,Crontab的行为是高度可配置的。您可以设置不同的选项来控制Crontab如何处理定时任务的状态码,例如在哪些条件下发送通知或重新尝试任务。这些选项可以在Crontab的配置文件中进行设置,例如/etc/crontab/var/spool/cron/crontabs/用户名文件。

总之,Crontab将记录每个进程的状态码,并根据其值采取适当的措施来处理定时任务的失败情况。这有助于确保任务能够正确执行,并及时发现和解决任何问题。

"Crontab可以向任务的拥有者发送电子邮件或其他通知,以告知他们任务的失败情况。这有助于及时发现问题并尽早解决它们。" 具体如何通知,需要做什么配置

Crontab可以通过将标准输出和标准错误重定向到特定文件、命令行选项或环境变量等方式记录任务的输出信息。如果任务执行失败,可以设置邮件地址并配置系统邮件命令(如sendmail)来发送通知邮件。在crontab文件中,使用MAILTO变量指定接收通知的邮件地址,例如:

MAILTO=youremail@example.com

这将使cron将所有任务的标准输出和标准错误发送到你指定的邮件地址。如果你只想接收某个任务的通知,可以将MAILTO放在该任务的行上方。

注意:为了使邮件功能正常工作,系统需要配置正确的外发邮件服务器,并且必须具有发送邮件权限。

/etc/crontab 文件中配置MAILTO=root 怎么解释

在/etc/crontab文件中配置MAILTO=root,表示将系统的cron服务发送的所有错误信息和输出结果都发送到root用户的邮箱中。

该配置会覆盖掉默认情况下的MAILTO变量,如果在crontab文件或命令行中指定了其他MAILTO变量,则会覆盖/etc/crontab中的设置。使用root作为收件人可以确保管理员能够及时收到所有cron任务的通知,以便快速响应问题。

如何查看root账户邮件地址

root账户的邮件地址通常可以在系统中的/etc/aliases文件中找到。您可以使用以下命令查看该文件:

cat /etc/aliases

在/etc/aliases文件中,您应该能够找到一个名为“root”的条目,其中包含root用户的邮件地址。例如:

root: admin@example.com

可看到,这里并没有配置

这表示所有发送给root用户的邮件都将被重定向到admin@example.com邮箱中。如果您修改了/etc/aliases文件,请运行以下命令以使更改生效:

newaliases

请注意,某些系统可能没有设置/etc/aliases文件,而是将root用户的邮件地址硬编码在cron脚本或其他系统配置文件中。在这种情况下,您需要查找相应的文件来确定root用户的邮件地址。

如何将root用户的邮件地址硬编码在cron脚本或其他系统配置文件?

将root用户的邮件地址硬编码在cron脚本或其他系统配置文件中,可以确保root用户始终收到与该脚本或配置相关的通知。下面是两种可能的方法:

1. 在cron脚本中

可以在cron脚本中添加一行类似于以下命令来设置root用户的邮件地址:

MAILTO=root@example.com

这将指定所有此cron作业的输出和任何错误消息都发送到root@example.com。

2. 在系统配置文件中

如果您想要为整个系统设置默认的root用户邮箱,可以将其添加到/etc/environment文件中。打开该文件并添加以下行:

MAILTO=root@example.com

保存并关闭文件后,这将设置系统范围内的MAILTO变量。请注意,这只会影响使用环境变量的程序,不是所有程序都支持从此变量获取邮件地址,并且某些程序可能会覆盖该设置。

无论是哪种方法,都必须确保指定的邮箱地址有效,并且系统已正确配置以通过SMTP服务器发送邮件。

“系统已正确配置以通过SMTP服务器发送邮件。” 怎么理解?

为了确保cron任务的通知邮件能够成功发送,系统必须正确配置以通过SMTP服务器发送邮件。这需要在系统中安装并正确配置一个邮件传输代理(MTA),例如Postfix或Sendmail。

一般来说,配置MTA需要以下步骤:

  1. 安装MTA软件包:根据您的Linux发行版不同,可以使用适当的命令安装MTA软件包。

  2. 配置MTA:打开MTA配置文件,通常是/etc/postfix/main.cf或/etc/mail/sendmail.cf,在其中设置与您的SMTP服务器相关的参数,例如SMTP服务器地址、端口和身份验证等。

  3. 测试MTA:使用命令行工具如mail或sendmail等发送测试邮件,以确保MTA能够成功发送邮件。

  4. 重启MTA服务:在修改了MTA配置文件后,需要重新启动MTA服务以使更改生效。

如果MTA配置不正确,则可能导致cron任务的通知邮件无法投递或被退回。因此,确保MTA和SMTP服务器的正确配置对于cron任务的正常运行非常重要。

有些麻烦,这个方式,先不采用。

直接通过查看系统日志来定位定时任务运行状况。

“Crontab定时任务进程的生命周期与其他Linux进程类似,并受到相同的限制和控制。” 详细介绍

Crontab定时任务进程的生命周期与其他Linux进程类似,并受到相同的限制和控制。以下是一些相关的限制和控制:

  1. 进程环境变量:Crontab任务的环境变量通常是有限制的,只包含了少数必需的系统级别变量,例如PATH和HOME等。这是为了保证安全性和可靠性。

  2. 进程权限:Crontab任务的权限受到其所属用户的限制,通常默认情况下是普通用户权限。如果需要执行特权操作,则需要相应的特殊设置。

  3. 进程资源限制:Crontab任务的进程资源限制(如内存、CPU使用率等)受到操作系统的限制,可以通过相关命令如ulimit进行设置。

  4. 进程信号处理:Crontab任务可以接收和处理来自操作系统和其他进程发送的信号。例如,SIGTERM信号可以用于正常终止进程,而SIGHUP信号则可以用于重新加载配置文件或重启进程。

  5. 进程日志记录:Crontab任务的输出结果可以被记录到指定的文件或者发送到指定的邮箱地址中,方便用户随时查看。

总之,Crontab任务的限制和控制与其他Linux进程类似,需要合理管理和配置,才能保证任务的正常运行并避免潜在的安全问题。

如果创建的进程数达到系统限制,则crontab的定时任务会排队等待创建进程? 而且所有的进程依然是分时获取CPU时间片进行执行?

是的,如果创建的进程数达到系统限制,则新的crontab定时任务将排队等待创建进程。这是因为操作系统为每个用户和系统分配了一定数量的进程资源,包括进程ID、文件描述符、内存和CPU时间片等。当这些资源用完时,就无法创建新的进程。

当存在大量的crontab定时任务时,操作系统会按照优先级和调度算法分时分配CPU时间片给各个进程进行执行。这意味着所有的进程都需要分时获取CPU时间片进行执行,而不能独占CPU。

此外,即使是已经创建的进程也受到操作系统对进程资源限制的控制,例如内存和文件句柄等,因此需要合理管理和配置,以充分利用系统资源并确保任务的正常运行。

“操作系统为每个用户和系统分配了一定数量的进程资源”具体是怎样的 平均分配?

操作系统为每个用户和系统分配一定数量的进程资源,包括进程ID、文件描述符、内存和CPU时间片等。这些资源的分配方式因操作系统而异,但通常采用以下策略:

  1. 进程ID:每个用户都有自己的进程ID空间,通常是在一个固定的范围内分配。例如,在Linux系统中,默认情况下,普通用户可以使用2到32768之间的进程ID,而root用户可以使用1到65535之间的进程ID。

  2. 文件描述符:操作系统会为每个进程分配一定数量的文件描述符,用于打开、读取和写入文件等I/O操作。这些描述符通常是连续的整数,例如在Linux系统中,默认情况下,每个进程可以打开1024个文件。

  3. 内存:操作系统会为每个进程分配一定量的虚拟内存,但实际的物理内存分配是动态的,取决于系统的可用内存和其他进程的使用情况。操作系统会通过页表机制将虚拟内存映射到物理内存。

  4. CPU时间片:操作系统按照调度算法为各个进程分时分配CPU时间片进行执行,以保证公平性和优先级。通常,每个进程会被分配一小段时间(例如几毫秒)来执行其任务,然后被暂停并等待下一次分配时间片。

总之,操作系统为每个用户和系统分配一定数量的进程资源,以保证系统的稳定性和可靠性。这些资源的具体分配方式因操作系统而异,但通常是根据平均分配、优先级、公平性等标准来进行分配的。

“Crontab会记录每个定时任务的运行情况,并将其保存在系统日志文件中。这些记录可以用于跟踪任务的历史以及了解任务失败的原因” 如何查看

Crontab会将每个定时任务的运行情况记录在系统日志文件中,通常是/var/log/syslog或/var/log/messages文件。您可以使用以下命令查看这些记录:

grep CRON /var/log/syslog 或者 grep CRON /var/log/messages

上述命令将搜索系统日志文件以查找包含关键词“CRON”的行,这些行包含了crontab任务的信息。通常,每条记录都包含日期、时间、任务名称、任务执行结果等详细信息。

如果需要查看某个特定任务的历史记录,可以通过在crontab文件中设置LOGFILE参数,将任务输出和错误信息记录到指定的文件中。例如:

0 * * * * /path/to/job.sh >> /path/to/logfile 2>&1

这将把脚本的标准输出和错误信息附加到指定的日志文件中。您可以使用cat或less等工具来查看该文件中的记录。

下面是公司项目测试服情况

分析可知:

上面的cron*文件就是定时任务的日志信息,而且是每周/七天进行文件归档。

问题:谁/哪里来做的归档?

tbd

/etc/cron.daily 介绍

/etc/cron.daily是一个目录,用于存放在Linux系统上每天需要执行的cron任务脚本。当系统启动时,cron守护进程将扫描该目录并自动运行其中的所有脚本。

这些脚本通常是用于管理系统、备份数据、监视日志、清理临时文件等任务。例如,logrotate和mlocate等系统工具就是通过在/etc/cron.daily目录中提供相应的脚本来定期执行的。

默认情况下,这些脚本可执行权限设置为755,属主和属组都是root。您可以使用以下命令查看/etc/cron.daily目录中的文件列表:

ls /etc/cron.daily

如果需要添加新的每日任务,可以在/etc/cron.daily目录中创建相应的脚本文件,并确保其可执行权限已设置。这些脚本将在每天的预定时间(通常是凌晨)由cron自动执行。

需要注意的是,由于每个脚本都在同一时间段运行,因此必须合理安排各个脚本的执行顺序,以避免资源竞争或其他问题。【自己创建的定时任务脚本,似乎有这个问题,tbd】此外,如果某个脚本的执行时间过长或导致系统负载过高,可能会对系统性能产生不利影响。

anacron 介绍

anacron是一种用于在Linux系统上运行计划任务的程序,与cron类似,但具有一些不同之处。主要特点包括:

  1. 延迟启动:与cron每分钟检查是否有任务需要执行相比,anacron只在系统空闲时才会检查任务,并按照预定的延迟时间启动运行。

  2. 灵活的计划:与cron不同,anacron允许您设置每个任务的间隔和延迟时间,而不是仅提供固定的时间间隔选项。

  3. 运行错误处理:如果任务没有在计划时间内完成,则anacron可以稍后再次尝试执行它,以确保任务在某个时间段内得到执行。

  4. 用户权限控制:anacron可以使用各种用户权限来运行计划任务,从而更好地管理文件权限和安全性。

默认情况下,anacron在/etc/cron.daily、/etc/cron.weekly和/etc/cron.monthly目录中查找任务,并在系统空闲时按照预定的延迟时间运行它们。您可以通过编辑对应目录中的脚本文件,或者添加新的脚本文件来定制anacron任务。

需要注意的是,anacron通常作为系统服务在后台运行,因此不像cron那样需要手动启动。如果需要重新加载anacron配置或强制运行计划任务,可以使用以下命令:

sudo anacron [-f] [-n] [-s]

其中-f选项用于强制执行所有可运行的anacron任务,-n选项仅显示要执行的任务列表,而-s选项用于重新加载anacron配置。

既然有了cron为什么还需要anacron

虽然cron是一个非常有用的计划任务程序,但它也有一些局限性。其中最显著的是,cron需要系统连续运行并启动,才能按照预定时间运行计划任务。如果系统在任务运行时突然关机或休眠,则这些任务可能会被忽略或延迟到下一次运行。

与此相比,anacron提供了更加灵活和适应的计划任务功能。它可以在系统空闲时运行计划任务,并允许您将任务按照特定的间隔和延迟时间进行配置。这使得anacron可以更好地适应不同类型的系统环境和需求,例如笔记本电脑、虚拟机或云服务器等。

此外,anacron还提供了自动错误处理机制,以确保计划任务在预期的时间内完成。如果由于某种原因导致任务无法在计划时间内完成,anacron可以稍后再次尝试执行它,以确保任务在某个时间段内得到执行。

总之,anacron提供了一个更加灵活、智能和适应的计划任务解决方案,可以帮助您更好地管理和优化系统性能。虽然cron仍然是一个很好的选择,但在某些情况下,anacron可能更适合您的需求。

如何使用anacron

使用anacron来运行计划任务通常需要以下步骤:

  1. 安装和配置anacron:在大多数Linux发行版中,anacron已经预先安装。如果没有,请使用适当的命令进行安装。一旦安装完成,您可以编辑/etc/anacrontab文件来更改默认设置。

  2. 创建计划任务脚本:与cron类似,anacron需要一个可执行的脚本来运行计划任务。您可以创建一个脚本文件,并使用相应的命令和选项来设置计划任务的时间、间隔和延迟。在脚本文件中,您可以使用任何支持的命令和工具来执行所需的操作,例如备份、清理、监视等等。

  3. 将脚本放在适当的位置:与cron类似,anacron也需要将脚本放置在特定的目录中,通常是/etc/cron.daily、/etc/cron.weekly或/etc/cron.monthly等。这些目录中的脚本会在系统空闲时被自动启动运行。

  4. 测试和调试脚本:在将脚本提交给anacron之前,建议您先测试和调试它,以确保它能够正常运行并按照预期的时间运行。您可以手动运行脚本,并检查输出结果和日志文件,以确保它没有错误或异常。

需要注意的是,anacron相比cron具有更高的灵活性和复杂性,因此需要更多的配置和管理工作。如果您不确定如何使用anacron,在线文档或官方网站上可以找到更多信息和教程。

mandb 介绍

mandb是一个Linux系统上的命令行工具,用于创建和维护man(manual)页面索引数据库。它通常在每次安装新man页面或更新man页面时自动运行,以确保man页面索引文件的最新版本可供使用。

man页面包含有关Linux系统上各种软件包、库和命令的文档,可以帮助用户了解如何正确地使用它们。但是,当man页面数量增加时,手动搜索和查找特定页面会变得困难。这时,mandb就派上了用场,它能够快速地搜索和访问大量man页面,并提供简单的命令行界面。

在创建或更新mandb数据库时,mandb会扫描指定的man页面目录,并将其保存到一个二进制索引文件中。这个索引文件可以被man命令使用来查找和显示man页面,从而提高整个文档系统的性能和可靠性。

通常,在Linux系统上,mandb计划任务会自动运行,以便及时更新mandb数据库。如果需要手动更新mandb数据库,可以使用以下命令:

sudo mandb

需要注意的是,mandb可能需要一些时间来创建或更新数据库,特别是在第一次运行时或在添加大量新man页面时。在这种情况下,请耐心等待mandb完成操作,并避免在此期间执行其他操作。

2>&1 解释

2>&1是一种shell重定向语法,用于将标准错误输出(stderr)重定向到标准输出(stdout),以便将它们合并在一起。具体来说,2表示stderr文件描述符的代号,&表示将其与另一个文件描述符绑定,1则表示stdout文件描述符的代号。

例如,如果有以下命令:

command > output.txt 2>&1

这表示将命令的标准输出重定向到名为“output.txt”的文件中,并且将标准错误输出也重定向到同一个文件中。因此,无论是stdout还是stderr所输出的内容,都会被写入“output.txt”文件中。

需要注意的是,2>&1必须出现在重定向符号(>、>>、<等)之后,否则它将不起作用。此外,如果只想将stdout或stderr重定向到文件中而不是两者合并,请使用>或2>符号,分别代表重定向标准输出和重定向标准错误输出。

>符号默认是将标准输出(stdout)重定向到指定文件中,而不是标准错误输出(stderr)。如果要将标准错误输出重定向到同一个文件中,需要使用2>&1语法,将标准错误输出和标准输出合并起来。

例如,下面的命令将标准输出重定向到“output.txt”文件中:

command > output.txt

而下面的命令将标准错误输出重定向到“error.txt”文件中,并将标准输出重定向到“output.txt”文件中:

command 2> error.txt > output.txt

在这个例子中,2>表示将标准错误输出重定向到“error.txt”文件中,而>则表示将标准输出重定向到“output.txt”文件中。如果要将标准错误输出和标准输出都重定向到同一个文件中,可以使用2>&1符号,如下所示:

command > output.txt 2>&1

这将把标准错误输出合并到标准输出中,并将它们一起重定向到“output.txt”文件中。

...

3.问题/补充

TBD

4.参考

参考文档列表

后续补充

...

Linux[Mac] Crontab 定时任务学习与探究相关推荐

  1. 【Linux】crontab定时任务配置全过程

    因为测试工作中需要在服务器上配置定时任务执行脚本,使用到了linux 的crontab.特此记录一下配置的整个流程. crontab命令用于设置周期性被执行的指令.该命令从标准输入设备读取指令,并将其 ...

  2. 【Linux】crontab 定时任务 遇到几个问题

    文章目录 cron 与 crontab 区别 bash xxx.sh 可以执行,但是crontab定时任务不执行,也没有报错信息,无日志: 首先区分 crontab -e 和 /etc/crontab ...

  3. linux创建crontab定时任务

    导读 cron是Linux中默认的计划任务.使用cron,你可以安排一个计划(比如:命令或者shell脚本)周期性地运行或者在指定的分钟.小时.天.周.月等特定时间运行.cron在你安排不同的常规维护 ...

  4. linux的crontab定时任务完整配置和定时任务不执行分析

    如果未安装需要先安装 CentOS(ubantu自行百度,原理类似)下面的安装方法: [root@CentOS ~]# yum install vixie-cron [root@CentOS ~]# ...

  5. _CentOS「linux」学习笔记11:crontab定时任务常用参数和基本语法

    ​linux基础操作:主要介绍了crontab定时任务的常用参数和基本语法 crontab[定时任务,重复执行特定的命令或脚本,类似Windows下的计划任务] crontab常用参数和基本语法介绍: ...

  6. linux怎么查看定时任务有没有运行,怎么看crontab定时任务是否执行

    定时执行操作命令,每一个用户拥有自己的crontab,那么大家知道怎么看crontab定时任务是否执行呢?接下来大家跟着学习啦小编一起来了解一下的看crontab定时任务是否执行解决方法吧. 看cro ...

  7. Mac 开启定时任务 crontab

    1 定时任务 有时候会遇到这种情况,需要定期执行一下某个脚本文件,此时可以考虑定时任务. 设置定时任务: linux/mac下的定时执行主要是使用crontab文件中加入定制计划来执行,Cron本身是 ...

  8. Linux crontab定时任务配置方法(详解)

    id="BAIDU_DUP_fp_iframe" src="https://pos.baidu.com/wh/o.htm?ltr="> 脚本之家 服务器常 ...

  9. linux crontab 定时任务 计划任务 不执行 原因

    前言 最近在工作中遇到了一些问题,crontab定时任务居然不执行,后来我在网上找的时候发现网上主要说了这几个原因: 1 crond服务未启动 crontab不是Linux内核的功能,而是依赖一个cr ...

最新文章

  1. 自定义spring kafka consumer 线程池
  2. 研究人员发现绝大部分酷派(Coolpad)手机暗藏后门(转)
  3. java大数 bigin_Java大数操作
  4. linux版的微博客户端,在Linux下安装Weibird:查看和编写微博的GTK+客户端
  5. 使用ajax请求cgi,Python CGI同步AJAX请求
  6. led数字字体_led电视质量排行榜
  7. 阿里云ecs云服务器和域名的购买,绑定及备案教程
  8. PHP实训笔记,Java实训笔记(八)之mysql
  9. 阿里巴巴编码规范认证考试总结
  10. FoveaBox(Beyond Anchor-based Object Detector) 学习笔记
  11. mysql 每日备份脚本分享
  12. python爬取网易云音乐飙升榜音乐_python爬取网易云音乐热歌榜实例代码
  13. 数字签名标准算法——DSA
  14. CANoe.DiVa 操作指南 - 预期响应设置
  15. 数据库约束的一些用法总结(constraint)
  16. 排列组合---隔板法
  17. 2021盘点:国内外10大低代码开发平台
  18. CSDN排名第一的人
  19. 中国手机地图用户超7千万 LBS开启掌上世界
  20. 函数的return,返回值

热门文章

  1. matlab文件名加前缀_利用MATLAB批量对文件重命名
  2. 2017鸡年女宝宝名字还可以这样起个大吉大利的呢
  3. 2021食品生产企业食品安全管理人员必备知识考试题库
  4. 信息安全国际认证-CISA
  5. MooTools入门
  6. Java入门姿势【面向对象:1】啥事面向对象、类和对象如何理解
  7. 解决Ubuntu18.04关机卡在System halted
  8. Android上传阿里云音频后IOS无法播放
  9. Node使用微信上传临时素材接口
  10. 【EDUPEP-N8508GS黄金版】EDUP EP-N8508GS黄金版 迷你USB无线网卡【行情 报价 价格 评测】...