リモートシステムで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.log
picocomはまだ実行中ですが、「dtached」の間はこれを行うことができます。
答え3
ユーザーセッションを参照すると、実行中の画面セッションにコマンドを送信するオプションと、現在のscreen
ウィンドウにキーストロークを送信するコマンドを使用できます。-X
stuff
screen -dmS newScreen bash
screen -S newScreen -X stuff "picocom <options>\n"
screen -ls
screen -r <pid>
コマンドを実行するには、次の行の引用符を参照してください。*
bash -c
...それも可能であることを確認していませんtmux
。