RPiで同時に実行されている2つのプログラムを停止する方法

RPiで同時に実行されている2つのプログラムを停止する方法

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.pypidが返されることを確認し、それを終了してkill <PID>データを取得することを確認してください。

おすすめ記事