プロが教えるわが家の防犯対策術!

cron でシェルスクリプトファイルを呼び出す処理の中で
kubectlコマンドを実行していますが機能しません。

通常のlinux上での
kubectl get pod -A は機能します。

sample.shに
kubectl get pod -A を記載し、
sample.shを実行すると機能します。

このsample.shをcronで定期的に実行すると
機能しません。

またやってみたこととして
which kubectl
の結果
/usr/local/bin/kubectl
が出力されたので、
sample.shに
/usr/local/bin/kubectl get pod -A を記載したところ
機能しませんでした。


この解決方法がわかる方教えてください。

A 回答 (2件)

私はご質問を次のように読み取りました。



1)ご自身のアカウントでログインした後、ターミナル上で...
$ kubectl get pod -A
は機能します。

2)ご自身で作成したシェルスクリプト...
sample.shに「kubectl get pod -A」を記載し、sample.shを実行すると機能します。

3)このsample.shをcronで実行すると機能しません。

4)sample.shに「/usr/local/bin/kubectl get pod -A」を記載したところ機能しませんでした。

cronコマンドでシェルスクリプトを実行させる時、多くの事を確認することが前提になります。それに対しご質問者様のご提示された内容は、原因を特定するには少なすぎて、多くを仮定の基にお話することになります。
先ずはご質問を参照して感じることです。

1/2/3)シェルスクリプト「sample.sh」が正しい"シバン"を持っているのか(あるいは持たないのか)、を強く感じました。
シバンとはシェルスクリプトの1行目に置く「#!/bin/csh -f」みたいな奴です。ご質問者様がMS-DOS batファイルのエキスパートなら、Unix系特有の『シェル』と『シバン』を理解すれば問題解決できるでしょう。
シェルスクリプト「sample.sh」がシバンを持たない場合、ご自身のアカウントにログインした後、ターミナル上でsample.shを起動した時は、アカウントのシェルと同じシェルと環境で、sample.shに記述されたコマンドは実行されることになり、正常に起動できること。
及びcronコマンドとしてsample.shを起動する際には、cronが開いたシェル上でsample.shに記述されたコマンドは実行されることになり、恐らく起動できなくなることなどが想像されます。

4)ご質問者様の調査方法、及びsample.shへの記述方法に誤りはないはずです。ですから本来正常に機能するはずなのですがご質問者様は「機能しませんでした。」と言われました。
そこでNo1の回答者様は「ログを採ってみれ。」と仰っています。
私も調査の第一歩はその辺りかと思います。

シェルスクリプトによる起動がうまく行かなければ、それを止めて直接cronコマンドに「/usr/local/bin/kubectl get pod -A > /tmp/log.txt 2>&1」を書いてみることだと思います。
正常に起動できることを確認した後、シェルスクリプトの使用に進むべきだと思います。

大変長くなってしまいました、お詫びいたします。尚、ご不明の点があれば補足などで問い合わせください。
    • good
    • 0
この回答へのお礼

ご丁寧に回答していただき誠にありがとうございます。
隅々まで参考にさせていただきます。

お礼日時:2022/08/14 00:14

そのコマンドは知らないのですが、とりあえずスクリプトの中で、


> /tmp/log.txt 2>&1
とかして、標準とエラー出力を拾ってみたらどうですか?
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。こちらで調査してみます。

お礼日時:2022/08/14 00:14

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!