セッションを開かずにバックグラウンドでpicocomを実行する

セッションを開かずにバックグラウンドでpicocomを実行する

リモートシステムでSSHセッションをアクティブに保たなくても、picocomはリモートシステムにシリアルデータを書き込もうとしています。

私は試した:


picocom <my options>

ログアウトすると消えます。


picocom <my options> & 

ターミナルに出力がなく、シャットダウンするとジョブはpicocom停止C-a C-xしますが、シャットダウンしません(必要に応じて単純なジョブはkill -9機能killしません。その後、ttyロックを手動で消去する必要があります/var/lock/)。


picocom <my options> > tmp/data.log&

その後、他のSSHセッションで:

tail -f tmp/data.log

ファイルにデータは出力されませんdata.log


bash -c "picocom --baud 115200 /dev/ttyACM1 > /home/pi/tmp/data.log" &

ファイルへの出力もありません。ジョブはすぐに停止状態になります。


nohup sh -c "picocom --baud 115200 /dev/ttyACM1 > /home/pi/tmp/data.log" &

tailファイルから開始出力を取得しましpicocomたが、ジョブは終了します。


知っておくと良い点:picocomに反応しませんC-z

私の質問は次のとおりです

  • picocomバックグラウンドで実行できますか?
  • セッションを開かずにシリアル端末にログインするための代替案は何ですか?

答え1

別の方法はデバイス設定stty、それから猫と一緒に読んでください:

stty <my options>
nohup sh -c "cat /dev/ttyACM0 > data.log" &

答え2

使用することをお勧めします分離。 dtachを使用すると、バックグラウンドでプログラムを実行できます。私はセッションを開かずに(リモートRaspberry Piで)シリアルロギングのためにpicocomでうまく使用しました。

また、picocomに組み込まれたロギングを使用して-gシリアルデータをファイルに保存することをお勧めします。

dtachをインストールしたら、picocomを使用して実行できます。例:

dtach -A /tmp/dtach picocom --baud 115200 /dev/ttyACM1 -g /home/pi/tmp/data.log

その後、ピココムを実行すると、バックグラウンドに置くことができます。C-\

使用のために「dtached」プロセスに再参加してください。

dtach -a /tmp/dtach

picocomがバックグラウンドでログファイルに書き込むことがわかったので、cat /home/pi/tmp/data.logpicocomはまだ実行中ですが、「dtached」の間はこれを行うことができます。

答え3

ユーザーセッションを参照すると、実行中の画面セッションにコマンドを送信するオプションと、現在のscreenウィンドウにキーストロークを送信するコマンドを使用できます。-Xstuff

screen -dmS newScreen bash
screen -S newScreen -X stuff "picocom <options>\n"
screen -ls
screen -r <pid>

コマンドを実行するには、次の行の引用符を参照してください。*

bash -c...それも可能であることを確認していませんtmux

関連情報