回答:
コマンドへの絶対パスを入力する必要を避けるために、シェルは$PATH
環境変数を導入し、各ディレクトリはa :
で区切られ、左から右に検索が行われます。cron
多くの場合、この$PATH
変数を含む環境全体をクリアします。したがって、スクリプトは、シェルでの動作と比較して、cronで異なる動作をする場合があります。
ユーザーwhich db2
として実行しdb2inst1
て、db2
プログラムの完全なパスを取得します。出力がの場合、/usr/bin/db2
cronコマンドは次のようになります。
/usr/bin/db2 connect to myDB2
ユーザーecho "$PATH"
として実行しdb2inst1
て$PATH
変数を取得し、この変数がcronスクリプトでも使用できることを確認します。たとえば、出力がの場合、/usr/local/bin:/usr/bin:/bin
シェルスクリプトの先頭に次の行を追加します。
export PATH="/usr/local/bin:/usr/bin:/bin"
https://askubuntu.com/a/23438/227839で回答さPATH
れているように、シェルスクリプトで設定する必要があります。
#!/bin/bash
PATH="/usr/local/bin:/usr/bin:/bin"
# rest of script follows
または、すべてのcronジョブに適用されるcrontabファイルで:
PATH="/usr/local/bin:/usr/bin:/bin"
0 1 * * * db2 connect to myDB2
db2 とmyDB2が何であるかを定義する必要があります。そうでない場合は、実行する' file 'または ' application ' の絶対ロケーションを使用します。
例:
/bin/rm /home/ubuntu/a.txt