crontab -eで変数を使用できますか?


9

言ってもいい:

MYPATH=/root/scripts  
MYSCRIPT=doit.sh

0 1 * * * $MYPATH/$MYSCRIPT

crontab -e

で変数を使用することは可能crontab -eですか?

回答:


11

はい、この方法で変数を定義して使用できます。右側の文字列:あり(あなたの例でヒットしていない)の制限はあります=看板を外し先頭のスペースで、文字通りに解釈されるので、次のような構文を使用することはできませんFOO=$BAR/qux(例えばPATH=$HOME/bin:$PATH有益な何もしません)。

これはドキュメントに記載されています。

man 5 crontab

(マニュアルのセクション1にコマンドman crontabのドキュメントが表示されていることに注意してください。セクション5にファイル形式のドキュメントが必要です。)crontab crontab


6

試しただけで、はい、可能です。この簡単な例でそれを理解できますcrontab

FOO = qwerty
* * * * * echo $ FOO>〜/ out

ファイルを確認します~/out(毎分更新されます)"qwerty"


1
OPが同様のことを自分で理解する方法を示すために+1。
-Arthaey

より良い例では、ターゲットスクリプト内で$ FOOを使用します。
Acumenus 14

4

Linux crontabはリテラル値を保持するいくつかの変数の定義をサポートしますが、長いテキストを短い表現に圧縮したり、電子メール出力の送信先など、cron自体に関するいくつかのことを制御する以外にはあまり使用しません。

柔軟性は、cronエントリのコマンド部分がVixie cronを使用するシステム(通常Linuxシステムにインストールされるもの)に渡される/bin/sh -cか、シェルで定義されることを理解していることSHELLです。これが意味することは、コマンドラインの残りの部分は単純なシェルスクリプトです。注:使用されているシェルを理解してください。/bin/sh通常/bin/bash、Linuxでは$( ... )組み込みコマンドが機能しますが、代わりに/bin/shしか理解しない古いシステムでは機能しません`

たとえば、保存されたメッセージのMBXファイルを毎月アーカイブし、それを圧縮する簡単なcrontab行があります。次のようになります。

15 0 1 * *  nf=MailFeed-$( date +\%Y\%m ).mbx && cd Logs && mv MailFeed.mbx $nf && bzip2 -9 $nf

これは、毎月1日の午前12時15分に実行され、CCYYMMを含む新しいファイル名を設定し、現在のファイルを新しい名前に移動して圧縮します。覚えておくべきことは、エスケープされていない%(パーセント記号)は改行として扱われ、それに続くデータはパーセント記号の前のコマンドにstdinとして送信されることです。そのため、法線date +Y+mdate +\%Y\%m上記のように書かれています。


-2

いいえ、cronジョブにcron項目のみを含めることはできません。bash-scriptを作成してcronjob経由でbash-scriptを実行することはできませんか?


1
他の一部の大学では真ですが、Linuxのcronは環境変数の割り当てをサポートしています。
ジル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.