Crontab 每分钟运行脚本

Crontab 每分钟运行脚本

我目前正在尝试安排一个 cronjob 每分钟运行一个 .sh 脚本文件。

这是我的简单脚本:

#!/bin/sh
echo "Hello World" >> /Users/navania/crontab-scrip.log

我将其保存在桌面上,并将其命名为notify.sh。然后我打开一个新的终端窗口并输入crontab-e。这打开了一个新的nano文件,我在里面输入:

* * * * * /Users/navania/Desktop/notify.sh

我保存并退出了这个 nano 文件。我下一步该怎么做才能让 cronjob 成功运行?

迄今为止的步骤:

  1. 打开终端应用程序并输入crontab-e
  2. 这将打开一个新的 nano 文件,我在其中输入命令:* * * * * /Users/navania/Desktop/notify.sh
  3. 然后我按下 Control o 来保存它,然后按下 Control x 以 CrontabTest 的名称保存它。
  4. 当我退出时,它说 crontab 没有做出任何更改,这没有意义。
  5. 然后我打开日志文件,看看它是否每分钟打印一次 Hello World,但事实并非如此。

任何帮助都将不胜感激。谢谢!

答案1

您的脚本很可能每分钟都尝试运行一次。

按照 Kamil 的步骤更改 crontab 行以包含 /bin/sh

稍微修改一下脚本,将其输出到文件,而不是尝试写入屏幕,因为该命令不会在终端中运行。相反,它会在自己的进程中运行,这就是您看不到任何输出的原因。

例如像这样更改脚本:

#!/bin/sh
echo "Hello World" >> /Users/navania/crontab-scrip.log

并检查您的 .log 文件,查看是否有新行写入其中。

答案2

您应该使脚本可执行:

chmod +x /Users/navania/Desktop/notify.sh

并确保保存脚本的文件系统未使用 挂载noexec。然后命令

/Users/navania/Desktop/notify.sh

应该可以工作,cronjob 也应该可以工作。


或者,crontab 中的命令应该是

/bin/sh /Users/navania/Desktop/notify.sh

在这种情况下,可执行权限并不重要(脚本中的 shebang 也不重要)。


请注意不应期望 cronjob 的文本输出出现在任何终端中


还有这个问题:

  1. 然后我按下 Control o 来保存它,然后按下 Control x 以 为名称保存它CrontabTest
  2. 当我退出时,它说 crontab 没有做出任何更改,这没有意义。

我认为您需要保存打开的任何临时文件,而不是新文件。保存时请勿更改名称。

相关内容