crontabジョブで「日付」を実行する方法は?

crontabジョブで「日付」を実行する方法は?

ログファイル名に現在の時刻を含むcronスクリプト用のログファイルを生成したいと思います。これは私が使用したいコマンドです:

0 * * * * echo hello >> ~/cron-logs/hourly/test`date "+%d"`.log

残念ながら、実行中に次のメッセージが表示されます。

/bin/sh: -c: line 0: unexpected EOF while looking for matching ``'
/bin/sh: -c: line 1: syntax error: unexpected end of file

dateさまざまな方法で役割から抜け出そうとしましたが、成功しませんでした。 crontabファイルでこれをインラインで実行できますか?それともこれを行うにはシェルスクリプトを作成する必要がありますか?

ベストアンサー1

短い答え:

%次のようにエスケープされました\%

0 * * * * echo hello >> ~/cron-logs/hourly/"test$(date +\%d).log"

また、$(...)使用されなくなった構文の代わりにコマンド置換を使用し、`...`そのコマンド置換の拡張を参照します。

長い答え:

このエラーメッセージは、コマンドを実行しているシェルに2番目のバックティック文字が表示されていないことを示します。

/bin/sh: -c: line 0: unexpected EOF while looking for matching '`'

これは、他の答えのいずれかを試したときに表示される2番目のエラーメッセージでも確認されます。

/bin/sh: -c: line 0: unexpected EOF while looking for matching ')'

これクローンタップマンページエスケープされていない最初のシンボルまでコマンドが読み取り専用であることを確認してください%

「6番目」フィールド(行の残りの部分)は、実行するコマンドを指定します。行の完全なコマンド部分(改行文字または文字まで)は、cronfile変数で指定されたシェルによって実行されます%/bin/shSHELL%パーセント記号( ) コマンドは\バックスラッシュ()でエスケープしない限り次のように変更されます。 改行文字,最初のデータ以降のすべてのデータは%標準入力としてコマンドに送信されます。

おすすめ記事