単一クローン操作のシェルの指定

単一クローン操作のシェルの指定

rootとして実行する必要があり、デフォルトのshシェルの代わりにbashを必要とするcronジョブがあります。

crontabには正常に実行される他のジョブがあり、ファイルの上部に指定してジョブが中断されるroot危険を冒したくありません。SHELL=/bin/bashcrontab

他の既存のジョブで使用されるシェルを変更せずにbashを使用して自分のcronジョブを実行するように指定するにはどうすればよいですか?

私はこのような行がトリックを行うことができると思います0 * * * * SHELL=/bin/bash myjobが、CentOSのcronドキュメントではこれに関する言及を見つけることができません。

また、私の作業(ファイルの最後の変数)の前にSHELL変数を設定するとうまくいくかもしれないと思いましたが、環境変数の配置の効果とドキュメントの順序で割り当てられているか、単に割り当てられたかについてのドキュメントが見つかりませんでした。場所にかかわらずグローバルと見なされます(またはすべての操作が前でないとエラーが発生する可能性があります)。

操作に応じてシェルを指定できますか?

答え1

シェルを指定する最も直接的な方法は、シェルの実行可能ファイルを呼び出すことです。たとえば、myjob usingというコマンドを実行するには、bash次のコマンドラインのようなものを使用します。

/bin/bash -c 'myjob'

対応するcrontabエントリは次のとおりです。

0 * * * * /bin/bash -c 'myjob'

または、myjobスクリプトの場合は、次のコマンドラインのようなものを使用できます。

/bin/bash '/path/to/myjob'

対応するcrontabエントリは次のとおりです。

0 * * * * /bin/bash '/path/to/myjob'

答え2

シェルスクリプトの場合は、実行可能であり、-lineがスクリプトファイルの正しいインタプリタ(たとえば)を指定していることをmyjob確認してください。それはすべてです。#!#!/bin/bash

一連のコマンドの場合は、次のものを配置することをお勧めします。それらbashスクリプトで上記#!のように適切な -line を使用します。

これにより、crontabエントリを正しくインポートする詳細(スクリプトを実行するタイミングを除く)についてあまり心配する必要がなくなります。また、Python、Perl、または他のシェルバリアントでスクリプトを再実装するときにcronjobを更新する必要はありません。

関連情報