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

コメントするには評判が足りません...

各ケースのエラーは何ですか?

クローンエラーを見つける方法についてはこちらをご覧ください。クローンエラーはどこに記録されますか?

最初の設定の場合

/home/folder1/bash_text.txt実際に実行権限がありますか?

もしそうなら、それはうまくいくはずです。

2番目の設定の場合

Kusalanandaから提供されたリンクは機能するはずです。

あらゆる状況で

crontabでコマンドを実行するためのデフォルトのシェルはです/bin/sh。たぶんこれは適切ではないかもしれません。

次のように変更できます。

SHELL=/bin/bash

0 21 * * * command

crontabの使用方法の詳細については、次を参照してください。

$ man 5 crontab

お役に立てば幸いです。

関連情報