cronjob可以写成shell吗?

Can a cronjob be written in a shell?

我需要在 .sh 文件中编写一个 cronjob。是否可以在 .sh 文件中编写一个 cronjob?

我的定时任务是

*/1 * * * * bash /abc/def/ghi/sample.sh

此 cronjob 将每分钟执行一次。

Update 根据 Jonathan Leffler 的评论,变量 SHELL 可能无法被 cron 识别(取决于版本)和不是 POSIX 强制要求的。仅就该帐户而言,这将使问题中的方法成为更好的选择。


cron 将(尝试)执行其中的任何内容。按照您的方式,它将 运行 bash 带有以下参数,因此 bash 将 运行 您的脚本。 (感谢评论中的Jonathan Leffler。)

或者,您可以通过设置 SHELL 变量

,通过您选择的 shell 告诉 cron 运行 所有命令
SHELL=/bin/bash
* * * * * /abc/def/ghi/sample.sh

有关详细信息和示例,请参阅 Linux 系统上的 man 5 crontab


鉴于评论中提出的问题,这似乎是适当的添加。

要设置 cron 作业,我们需要制作一个 "crontab" 文件。这是通过调用

crontab -e

选项 -e 用于 "edit." 编辑器出现,然后您可以输入问题中的行,然后是 "save" 和 "quit"。出现哪个编辑器取决于设置,但如果您什么都没做,它很可能是 vi。 'root' 可能需要 'allow' 为用户提供此功能。您可以通过 crontab -l.

查看您的 crontab 的内容

到时候命令将被执行,脚本“/path/sample.sh”将 运行。在该脚本中,您的第一行应该是 #!/bin/bash。您显示的行不在脚本中,它属于 crontab 文件。脚本的其余部分 "sample.sh" 应该包含 bash shell 可以执行的代码。

注意 请参阅 Jonathan Leffler 的(附加)评论以了解更多详细信息和专业知识。