web-dev-qa-db-ja.com

/ etc / crontab「test -x」の意味

私の/etc/crontabファイル:

# m h dom mon dow user  command
17 *  * * * root    cd / && run-parts --report /etc/cron.hourly
25 6  * * * root  test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6  * * 7 root  test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6  1 * * root  test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#

これが実際に何をしているのかはわかっていますが、コマンドラインはわかりません。

男の「テスト」はまったく役に立たない:

test - check file types and compare values

どんな助けでも大歓迎です

9
Olivier Pons

FreeBSDのman testから:[1]

 -x file       True if file exists and is executable.  True indicates only
               that the execute flag is on.  If file is a directory, true
               indicates that file can be searched.

したがって、cronjobsはanacronがインストールされている[2](つまり、予想される場所にanacronと呼ばれる実行可能ファイルがある)かどうかをテストし、そうでない場合を実行します-つまり、それぞれの/etc/cron.*フォルダ内のスクリプト。

(1) Bashの組み込みtestには同じ-xオプションがあります

(2)Anacronは、常に実行されているとは限らないコンピューター用に設計されたcronの代替品です。 つまり、実行するジョブがある場合weeklyの場合、実行されますweekly、コンピュータの稼働時間に関連して、つまり、毎週金曜日に実行されるわけではありません、ただし、24 * 7時間の稼働時間ごと。編集間違いです、コメントを参照してください)

12
sr_

[ -x <filename> ]test -x <filename>も同じことを行い、このファイルが存在し、実行可能かどうかをテストします。

5
favadi

Manページで引用されているように、testはevalとよく似ており、条件式exprを評価し、戻りステータスで終了します。多くの場合、テストは、ファイルのタイプを式として判別するために使用されます。この場合、trueまたはfalseケースの戻りのチェックに使用されます。 crontabで、test -x filename。ファイル名は式として使用されます。これは[ -x filename ]と同じです。ファイルが存在し、実行可能である(ビットが設定されている)場合、これはtrueを返します。 man testは、ファイルの条件式およびその他の有効なシェル式を評価するためのタイプのさまざまなオプションの明確な詳細を提供します。

例えば:

test -1 -gt -2 && echo yesは「はい」と印刷します。

test 0x100 -eq 1エラー->テスト:-eqの前に整数式が必要です

1
Nikhil Mulley