2016-04-27 8 views
1

ファイル内で異なる行のコードを実行するようにcrontabを設定しようとしています。私は基本的にいくつかのjava -jarを起動するbashスクリプトファイルを持っています。問題は、各行を異なる時間に実行する必要があることです。私はcrontabが異なる時間にスクリプト全体を実行するように設定できますが、実行する行はありません。これで、bashファイルは1つのファイルに留まり、いくつかのファイルに分割されないことが重要です。 ありがとう! (クーロンから渡されたコマンドライン引数を経由して)それを行うの毎回ファイル内の1行だけでcrontabを実行する

+1

あなたのbashスクリプトを実行するスクリプトで機能を決定コマンドライン引数を取ることを確認します。次に、cronから適切なコマンドライン引数を指定して同じスクリプトを適切なタイミングで呼び出します。あるいは、bashスクリプト自体を時間を意識させて、単にcronで同じコマンドを使って呼び出すこともできます。 – jDo

+1

なぜ別のスクリプトに分割してみませんか? – Barmar

+0

変更が加えられたときに1つのファイルのみを変更する必要があるためです。 – user3134453

答えて

2

一つの方法

some_script.sh:

if test $1 = 1 ; then 

    # echo "1 was entered" 
    java -jar some_file.jar 

elif test $1 = 2 ; then 

    # echo "2 was entered" 
    java -jar another_file.jar 

fi 

のcrontab例:

* 1 * * * /bin/bash /home/username/some_script.sh 1 
* 2 * * * /bin/bash /home/username/some_script.sh 2 

別のアプローチ(時間bashスクリプトでのマッチング)

some_script.sh:

hour=$(date +"%H"); 

if test $hour = 1 ; then 

    # echo "the hour is 1"; 
    java -jar some_file.jar 

elif test $hour = 2 ; then 

    # echo "the hour is 2"; 
    java -jar another_file.jar 

fi 

crontabの例:

* 1 * * * /bin/bash /home/username/some_script.sh 
* 2 * * * /bin/bash /home/username/some_script.sh 
+0

ありがとうございます。それは大いに役立ちます。 – user3134453

+0

@ user3134453よろしくお願いいたします。あなたが興味を持っている場合には、私がコメントで述べた2番目のアプローチを追加しました。 – jDo

+1

ありがとうございました! – user3134453

関連する問題