
2つのアクティブなラズベリーパイがあります。彼らはすべてスクリプトを持っています:adxl345test.py
このスクリプトは加速度計からデータを収集します。私は通常、あるRPiでスクリプトを起動し、別のRPiでスクリプトを起動します。 1つのRPiで2つのRPiのスクリプトを実行しています。このようにして、あるRPiは、独自のスクリプトと別のRPiの外部スクリプトの実行を開始します。
sudo python adxl345test.py
コンソールに書き込み、Enterキーを押して各RPiでスクリプトを起動します。クロックはPTPdと同期されます。 RPiはインターネットに接続されています。
1 つのコマンドで両方のスクリプトを実行します。ここにいる:
pi@Sensor1:~ $ sudo python adxl345test.py & sshpass -p 'password' ssh pi@ip sudo python adxl345test.py
sshpass(sudo apt-get install sshpass
)を使用してコマンドに直接パスワードを入力しました。
今、データロギングを中断したい!通常Ctrl+を使用しますCが、これは単一のRPiで単一のスクリプトを実行した場合にのみ機能します。
私が探しているのは、RPiコンソールに単一のコマンドを作成してスクリプトを停止することです。現在の精度はそれほど重要ではありません。
おそらく次のコマンドが利用できると思いました。
sudo killall python & sshpass -p 'password' ssh pi@ip sudo killall python
---タスクを編集してください!
このコマンドは両方のRPiがデータ収集を停止します。あるRPiではすべてがうまく機能し、データは正しく記録されますが、他のRPiでは何らかの理由でデータをまったく記録しません。
x秒後に両方のRPiがデータの収集を停止できるようにしたいです。
私が実行していたスクリプトに重要な定義がありませんでした。これで、上記のkillall Commandoが正常に動作し、データが正しく保存されました。
答え1
まず、SSH公開鍵認証を使用してリモートRPIを介してコマンドを実行できます。これは非常に便利です。メインRPI(センサー1)から簡単なコマンドでこれを行うことができます。ssh-copy-id pi@ip
設定が必要な場合は、コメントでお手伝いします。
以下のように、「timeout」を使用して定義された期間スクリプトを実行できます。ここ。
killallに関しては、そのプロセスがすでに実行されていると確信していますか?スクリプトを起動したら、プロセスのPIDを取得してpgrep -f adxl345test.py
pidが返されることを確認し、それを終了してkill <PID>
データを取得することを確認してください。