crontab 不执行我的 bash 脚本

crontab 不执行我的 bash 脚本

我创建了一个简单的可执行脚本来为我移动文件,因为文件的名称是每天的日期,该脚本创建文件名,然后移动文件。我想使用 cron 安排它每晚运行。

当我在 bash 中运行我的脚本时,它可以工作。如果我在 cron 中准确指定路径和文件名,它也可以工作。

当我要求 cron 运行我的脚本时,就会出现问题。在我看来, cron 无法运行子进程来根据日期创建文件名。我的脚本如下:

#!/bin/bash
mv /home/folder1/$(date "+%Y-%m-%d").txt /media/folder2/folder3

这就是我在 crontab 中设置作业的方式:

0 21 * * * /home/folder1/bash_text.txt

我尝试过 $(which mv),但没有成功。 (在脚本和 cron 命令中都尝试过)

0 21 * * * $(which mv) /home/folder1/$(date "+%Y-%m-%d").txt /media/folder2/folder3

仅当我用实际文件名替换文件 $(date "+%Y-%m-%d").txt 的名称时,这才有效。

0 21 * * * $(which mv) /home/folder1/2020-04-28.txt /media/folder2/folder3

如果有人可以帮助我,请感激不尽。正如你所知,我对 Linux 很陌生,所以我正在不断学习,如果你在回复中考虑到这一点,我将不胜感激。

答案1

我没有足够的声誉来发表评论......

每种情况下的错误是什么?

请参阅此处如何查找 cron 错误:cron 错误记录在哪里?

对于第一个设置

/home/folder1/bash_text.txt真的有执行权限吗?

如果是这样,它应该可以工作。

对于第二个设置

Kusalananda 提供的链接应该有效。

在所有情况下

在 crontab 中执行命令的默认 shell 是/bin/sh.也许这个不适合...

你可以这样修改它:

SHELL=/bin/bash

0 21 * * * command

有关使用 crontab 的更多信息:

$ man 5 crontab

希望这可以帮助。

相关内容