これは私が英語を母国語として使用している人ではないので変わることがありますが、クローンタブ5マニュアルページ自体が矛盾しています。
空行、先行スペース、タブは無視されます。空白以外の最初の文字がポンド記号(#)の行はコメントであるため無視されます。コメントはコマンドの一部と見なされるため、cronコマンドと同じ行には許可されません。同様に、環境変数の設定と同じ行に注釈を付けることはできません。
たとえば、crontabライン
00 20 * * * sh test.sh # frobnicate the sales data
これはうまくいくようです。それでは、問題は何ですか?
このコメントはcron自体で解析され解釈されないことは明らかです。これは最後のコマンドフィールドの一部として処理され、シェルに渡されます。シェルはこれを問題なくコメントアウトします。
それでは、問題は何ですか?
それとも、crontabのマニュアルページがうまく表現されていませんか?
答え1
Marcusの回答が示すように、あなたの質問はすでにここに回答されています。
このコメントはcron自体で解析され解釈されないことは明らかです。これは最後のコマンドフィールドの一部として処理され、シェルに渡されます。シェルはこれを問題なくコメントアウトします。
ただし、これを実際の環境に適用するには、次の点を考慮してください。
SHELL=/bin/sh
* * * * * foo.sh bar#bar
/bin/sh
POSIXなどのshをコメントアウトとして使用しないでください引数を使用して-c
実行します。ただし、引数を使用して実行してください。 Cronは「レビュー」に興味がありません。foo.sh bar#bar
#
foo.sh
bar#bar
* * * * * foo.sh "foo #bar"
以前と似ています。
SHELL=/bin/echo
* * * * * foo bar # asdf
これはecho
パラメータ-c
とを使用して実行されますfoo bar # asdf
。echo
文字列を正しく印刷します。 Cronは「レビュー」に興味がありません。
より簡単な場合には、
00 20 * * * sh test.sh # frobnicate the sales data
cronは引数を取り、シェルを実行し、-c
POSIXsh test.sh # frobnicate the sales data
に似たシェルはそれをコメントアウトして実行する前に削除する必要がありますsh test.sh
。 cronは、 "shell"がコマンドラインで実行することに実際には気にしません。
マニュアルページに「コメントは許可されていない」と書かれているからといって、それにハッシュ記号を入れることが禁止されるという意味ではなく、単にcronからコメントとして処理されないということです。ここで、「許可」は「可能にする」を意味します(例:7を意味するwiki単語辞書)。
答え2
述べたように、Cronの観点からはコメントとは見なされません。
これは質問に答えます。
この行にはCronコメントを含めることはできません。行の残りの部分全体がシェルで実行されるコマンドにコピーされます。 Cronによって呼び出されるシェルがこの文字列を処理する方法は完全にシェルの責任であり、シンボルは選択した#
シェルからコメントとして解釈されないことがあります。
このマニュアルページにはこの問題に関する正確な情報が記載されているため、明確に説明されています。実際にそこにコメントすると、結果も説明されます。
「に関してはなぜ》、具体的な答えはなく、このように定義されています。