pythonバックグラウンド実行
5134 ワード
Python
バックグラウンド運転Python
バックグラウンド運転については,多くの資料を検索し,Tornado
バックエンドライブラリと連携して実現した.まず
Linux
の中で、バックグラウンドとフロントについて話します.現在の状態で、ブロック型コマンド(
apt update
またはyum update
)が実行されている場合、このコマンドを実行した上で、コマンドを実行することはできません.もちろん&&
はメッセージキューと同様であり、前のコマンドが完了してから(状態にかかわらず)実行される.バックグラウンドは、複数の命令を同時に実行できる類似の同時実行です.これ以上、リダイレクト出力を行うことができます.
# -*- coding:utf-8 -*-
def run():
print("run 1")
import time
for i in range(100):
time.sleep(1)
print(i)
if __name__ == '__main__':
run()
python
ファイル(名前run.py
)があるとpython3 run.py
を使用すると、このプログラムは端末に数字(1-100)を出力しながら1秒休憩します.ctrl+c
が終了しない限り、またはctrl+z
がバックグラウンドに移動します.しかし、バックエンドプログラムの場合、
ctrl+z
はプログラムをバックグラウンドに入れ、一時停止状態にある.1つ目:バックグラウンドで一時停止しない掛け方(安利)
#
>>> python3 run.py
# ,
>>> nohup python3 run.py > my.log &
nohup
運転命令を切断しない&
バックグラウンド運転>
プログラム出力結果をmy.log
ログにリダイレクト出力し、日付ファイルを指定しない場合はデフォルトのnohup.out
を使用します../sh
ファイルで直接実行できますただしバックグラウンドで実行するには、現在の端末を閉じても実行できるようにするには、
nohup
コマンドと&コマンドが必要です.2つ目:
python-daemon
方式を使用pip3 install python-daemon
新しい
py
ファイルを書きます(名前:run 2)import daemon
from run import run
with daemon.DaemonContext():
run()
そして
python3 run2.py
第三種類:
ctrl+z
+bg
指令# ctrl+z
time@time:~$ python3 run.py
runing
0
1
2
^Z
[1]+ python3 run.py
time@time:~$
# bg %jubnum
time@time:~$ bg 1
[1]+ python3 run.py &
time@time:~$ 3
4
5
6
7
8
9
10
...
そうすれば、出力結果は端末の占有を継続し、
ctrl+z
はバックグラウンドで実行できない.なぜなら、
bg
命令自体はバックグラウンドで一時停止したプログラムを実行し続けるが、プログラム自体をバックグラウンドからフロントに呼び出すわけではないからである.したがって,端末を占有するのはプログラム自体ではなく,結果を出力する.現在の端末を
ctrl+c
で終了できない状況にする煩わしい方法がある.# ctrl+z
time@time:~$ python3 run.py
runing
0
1
2
^Z
[1]+ python3 run.py
du@du-GL553VD:~$
相変わらずですが、
bg 1
で出力結果にリダイレクト・・・time@time:~$ bg 1 > my.log
#
time@time:~$ bg 1 > my.log &
端末を閉じない限り、肉眼では見えない......??
***リアルタイム出力では使わないでください.そうしないと、コマンドも書けません.