web-dev-qa-db-ja.com

RaspberryPiでスクリプトを個別に実行する

コラッツの予想が特定の数に適用できるかどうかをチェックし、出力をファイルに書き込む(Raspberry Piで実行される)プログラムなど、いくつかのpythonプログラムがあります。

数十億程度まで反証されていないことは知っていますが、プログラミングの練習のために実行したいだけです。 RPiの起動時に起動するように設定し、sshセッションで起動することはできますが、Piを使用する主な理由は、パフォーマンスが高くても電力をあまり消費せずに、10億のような数に達することができるようにするためです実用的ではありません。

python col.pyと入力してSSHセッションを開始すると、セッションを終了すると実行が停止します。 SSHを使用してスクリプトを開始し、セッションを終了したときにスクリプトが停止しないようにするにはどうすればよいですか(終了するか、RPiがシャットダウンするまで続行します)。

1
poiasd

これを実際に行うには、いくつかの方法があります。

私が自分自身に尋ねる最初の質問は、「後でこのタスクを確認/操作する必要がありますか?」です。

はいの場合は、 screen または tmux を使用します—これはhtop—の例です。ctrla-d スクリーンセッションを切り離し、screen -rそれを再接続します。ターミナルを閉じた後でも、切り離された画面セッションは機能しますが、私はここでそれを行うのが面倒でした。

enter image description here

それ以外の場合はNohup python col.py &バックグラウンドでタスクを実行するだけです。

1
Journeyman Geek

screen を使用することは問題ありませんが、 Nohup& とともに使用することもできます。

したがって、あなたの場合は、次のようなコマンドを実行するだけです。

Nohup python col.py &

各アイテムがどのように機能するかを理解するために:

  • Nohup:これは「ハングアップなし」を意味します。つまり、ターミナルセッションが切断されても、そのNohupコマンドに接続されているプロセスは実行を続けます。
  • &:このコンテキストでのアンパサンドは、バックグラウンドプロセスとして先行するコマンドを実行するようにシェルに指示します。

これを実行するだけの場合:

Nohup python col.py

python col.pyは実行されますが、バックグラウンドプロセスとしては実行されません。それはあなたをターミナルに閉じ込める前景のプロセスでしょう。そして、これを実行した場合:

python col.py &

python col.pyはバックグラウンドで実行されますが、2番目にログアウトするとpython col.pyコマンドは終了します。

Nohup&の組み合わせを実行することは、独立したバックグラウンドプロセスとして無人タスクを実行する最も単純で最も一般的に使用される方法です。

5
JakeGould