別のスクリプト内でスクリプトを呼び出す

別のスクリプト内でスクリプトを呼び出す

cronjobを使用して10分ごとに呼び出すスクリプトがあります。

*/10 * * * * ~/mydirectory/myscript.sh

これで、内部に別のスクリプトがあります。内部でこれを呼び出したいとし~/mydirectoryましょう。どちらのスクリプトも実行可能ファイルとして編集されており、コマンドラインから実行するとすべてがうまく機能します。私は次のように実行します:myotherscript.shmyscript.shchmodmyscript.sh~/mydirectory

。 myscript.sh

しかし、cronjobが機能していないようです。基本スクリプト内で2番目のスクリプトへの参照を削除しても機能します。2番目のスクリプトを参照する方法に問題があるようです。内容はmyscript.sh次のとおりです。

#! /bin/bash
do-something
do-something-else
. myotherscript.sh

~/mydirectorycronjobが実行されているときに現在のディレクトリがないため、cronjobがファイルを見つけることができない可能性がありますかmyotherscript.sh?では、ファイルをどのように表示できますか?ある時点では、それを別のディレクトリに移動したり、あるmyotherscript.sh時点で名前を変更したり、変更を加えたく~/mydirectoryないので、デフォルトのスクリプト内に絶対パスを指定したくありません。myscript.sh新しい絶対パスを参照するコンテンツです。

ボーナスの質問:今、cronjobが実行されたとき、私は基本的に親指を立てて最善を尽くしたいと思います。しかし、成功したかどうか、失敗した場合、その理由を知る方法はありません。 cronjobが期待どおりに実行されない理由を確認する方法についてのヒントはありますか?

ベストアンサー1

さて、Glenn Jackmanの答えがうまくいき、追加の質問にも答えられました。しかし、その後、cronjobがスクリプトと同じディレクトリで実行されるようにするための、よりエレガントであると考えられる別の方法を見つけました。

ただ交換してください

*/10 * * * * ~/mydirectory/myscript.sh

そして

*/10 * * * * cd ~/mydirectory && ./myscript.sh

これで問題が解決します。すべてが正常です。

おすすめ記事