返回

Cron 作业中的 '&' 之谜:在幕后平稳运行

Linux

## 在 Cron 作业中使用 "&":幕后运行的奥秘

简介

在 Linux 环境中,Cron 定时任务调度器是管理和自动化系统任务的强大工具。它允许您设置定期运行的命令,即使您不在机器前。在编写 Cron 作业时,您可能会遇到一个反复出现的问题:是否应该使用 "&" 符来表示在后台运行命令。本文将深入探讨在 Cron 作业中使用 "&" 的细微差别,并指导您在各种情况下如何做出明智的决策。

在后台运行 Cron 作业

当在 Cron 表达式后添加 "&" 时,它指示 Cron 在后台运行命令。这意味着命令将立即执行,而 Cron 将继续处理 Crontab 文件中的后续命令,而不会等待该命令完成。

何时使用 "&"

一般来说,在以下情况下使用 "&":

  • 后台运行: 当您希望命令在后台运行时,而 Cron 继续执行其他命令。
  • 输出重定向: 当您希望将命令的输出重定向到文件或其他命令时。

何时不使用 "&"

在以下情况下不要使用 "&":

  • 前台执行: 当您希望阻止 Cron 执行其他命令,直到命令完成为止。
  • 显示输出: 当您希望在控制台中看到命令的输出时。

示例

让我们通过一个示例来说明何时使用 "&"。假设您要设置一个 Cron 作业,每 20 分钟运行一次脚本 /home/me/monitor/check.sh,并将输出写入 /home/me/monitor/check.log 文件。为此,您可以使用以下命令:

*/20 * * * * /home/me/monitor/check.sh /home/me/monitor/check.properties >> /home/me/monitor/check.log 2>&1 &

在这里,"&" 非常重要,因为它允许脚本在后台运行,同时 Cron 继续执行其他命令。此外,输出被重定向到文件,不会打印到控制台中。

结论

在 Cron 作业中使用 "&" 符是一个决定,应根据具体需求做出。如果您希望命令在后台运行并重定向输出,请使用 "&"。如果您希望阻止 Cron 执行其他命令或看到命令的输出,请不要使用 "&"。

常见问题解答

  1. 为什么有时不使用 "&" 会导致 Crontab 中的后续命令不执行?
    答:当 Cron 前台运行命令时,它会在命令完成之前阻止执行后续命令。
  2. 在 Cron 作业中使用 "&" 有什么风险?
    答:后台运行命令意味着 Cron 不会等到命令完成才继续执行。如果命令失败或陷入无限循环,可能会导致系统问题。
  3. 我应该多久使用一次 "&"?
    答:只有当您希望命令在后台运行并重定向输出时才使用 "&"。
  4. 除了 "&" 之外,还有什么方法可以在 Cron 作业中运行命令?
    答:您可以使用 "nohup" 命令或将命令放入后台(例如 "command &")。
  5. Cron 作业是否可以使用其他符号来控制命令执行?
    答:是的,还有其他符号,例如 ">" 用于输出重定向和 "<" 用于输入重定向。