GNU/Linux >> Linux の 問題 >  >> Linux

cronタブジョブ内で`date`を実行する方法は?

ログファイル名に現在の時刻が含まれる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ファイルでインラインで実行することは可能ですか、それともこれを行うためにシェルスクリプトを作成する必要がありますか?

承認された回答:

簡単な答え:

%をエスケープします %として :

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 ')'

crontabのマンページは、コマンドが最初のエスケープされていない%までしか読み取られないことを確認します。 サイン:

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


Linux
  1. 1 時間ごとに実行可能ファイルを実行するように cron ジョブを設定する方法は?

  2. cron はどのようにジョブを内部的にスケジュールしますか?

  3. $_GET パラメータを cron ジョブに渡す

  1. 実行中のSystemdコンテナ内でコマンドを実行する方法は?

  2. docker コンテナ内で cron ジョブを実行する方法

  3. 現在実行中の cron ジョブを表示するには?

  1. TrueNASでcronジョブを設定する方法

  2. cronジョブを設定する方法

  3. cronに隔週でジョブを実行するように指示する方法は?