返回
Cron 作业中的 '&' 之谜:在幕后平稳运行
Linux
2024-03-19 12:52:32
## 在 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 执行其他命令或看到命令的输出,请不要使用 "&"。
常见问题解答
- 为什么有时不使用 "&" 会导致 Crontab 中的后续命令不执行?
答:当 Cron 前台运行命令时,它会在命令完成之前阻止执行后续命令。 - 在 Cron 作业中使用 "&" 有什么风险?
答:后台运行命令意味着 Cron 不会等到命令完成才继续执行。如果命令失败或陷入无限循环,可能会导致系统问题。 - 我应该多久使用一次 "&"?
答:只有当您希望命令在后台运行并重定向输出时才使用 "&"。 - 除了 "&" 之外,还有什么方法可以在 Cron 作业中运行命令?
答:您可以使用 "nohup" 命令或将命令放入后台(例如 "command &")。 - Cron 作业是否可以使用其他符号来控制命令执行?
答:是的,还有其他符号,例如 ">" 用于输出重定向和 "<" 用于输入重定向。