Bashスクリプト:MQTTソースをtxtファイルに書き込みます。

Bashスクリプト:MQTTソースをtxtファイルに書き込みます。

Linuxシステム内のSDカードにmqttデータを保存するための小さなbashスクリプト(datalogger.sh)を作成しました。 Bashスクリプトは次のとおりです。 -

#!/bin/bash
fileNumber=1
temp=1 // flag to check and create new files
fileName="Data"
while [ $temp -le 1 ]
do
  if [ -f "/media/card/$fileName$fileNumber.txt" ]
  then
    ((fileNumber++))
  else
    touch "/media/card/$fileName$fileNumber.txt"
    mosquitto_sub -v -t "gateway/+/rx" | tee /media/card/$fileName$fileNumber.txt
    temp=2
  fi
done

次のコマンドを使用してbashスクリプトを実行すると、正常に動作します。

./datalogger.sh

次の手順では、update-rc.d datalogger.sh defaults起動時に自動的に実行されるようにbashスクリプトを使用しました。ただし、空のテキストファイルのみが取得されます。誰でも私を案内してもらえますか?私はどんな間違いを犯しましたか?ありがとう、

ベストアンサー1

システム起動スクリプトから起動すると、プロセスは通常、通常のユーザーセッションと比較して非常に制限された環境変数のセットを取得します。

mosquitto_sub$XDG_CONFIG_HOME/mosquitto_subまたはで構成ファイルをお読みください$HOME/.config/mosquitto_sub。起動スクリプトから起動するときに定義$XDG_CONFIG_HOMEされていない場合と$HOME存在しない場合があります。

その$PATH変数も通常のユーザーの変数と異なる可能性があるため、スクリプトがコマンドを見つけることができない可能性がありますmosquitto_sub

おすすめ記事