了解 Cron 的输出

了解 Cron 的输出

我无法理解 的输出cron。假设我有一个每五分钟运行一次的 cronjob:

*/5 * * * * root /home/user/Desktop/shell.sh

shell.sh包含以下内容:

#!/bin/bash
echo "hello"
bash -i

我有以下问题:

  1. 作业在哪里运行?例如,在运行 shell 脚本的地方是否启动了新的 TTY 进程?

  2. 输出发送到哪里?我读到输出发送到所有者的邮件。这是否意味着 root 会收到包含该echo语句的邮件?

  3. 命令怎么样bash?脚本是否在其控制终端会话中启动 bash 进程,该进程一直运行直到终端会话结束(在脚本结束时?)?

  4. 假设我已经逆向了上述 bash 脚本中的 shell 代码,并且nc在我的计算机上运行了一个监听器。这是否意味着每 5 分钟我都会收到一个连接,该连接会在脚本运行完成后立即关闭?

抱歉问了这么多问题。我对这方面还不熟悉。谢谢。

答案1

crontab并不完全像传统的 shell 那样工作。

  1. 该作业以 root 身份运行,但没有任何 TTY。该命令在非交互式环境中运行,因此bash -i可能返回错误或在执行后关闭。

  2. 输出通常通过邮件发送。Ubuntu 通常附带一个非常小的邮件系统,名为exim4。查看文件是否/var/mail/<your username>存在。您可以尝试使用以下命令阅读邮件:

    mail -u <your username>
    
  3. 由于您的脚本以 开头#!/bin/bashbash因此将被使用,但这不会在任何终端中运行。除非您的脚本包含循环,否则该过程会在脚本结束时结束。

  4. 我不确定我是否理解了的用例nc,但如果您nc从运行crontab到连接并向您的计算机发送消息, nc并且bash将在命令完成后立即结束。

相关内容