Rumah > hujung hadapan web > tutorial js > Beberapa cara untuk menjalankan skrip Python di latar belakang

Beberapa cara untuk menjalankan skrip Python di latar belakang

PHP中文网
Lepaskan: 2017-04-01 15:15:29
asal
3330 orang telah melayarinya

Skrip pemantauan test1.py ditulis dalam python, berjalan dalam semasa mod True, mulakan skrip melalui arahan berikut apabila ssh remote (menggunakan terminal dempul):

Kodnya adalah seperti berikut:

python test1.py &
Salin selepas log masuk

Kini skrip berjalan seperti biasa dan nombor proses boleh dilihat melalui ps arahan keluar, tetapi terus melalui dempul) butang dilaksanakan), selepas log masuk semula, saya mendapati bahawa proses telah keluar.

Masalah telah diselesaikan melalui permulaan latar belakang saya akan meringkaskannya di sini untuk rujukan saya pada masa hadapan.

linux berjalan di latar belakang

dilaksanakan melalui fork
Dalam persekitaran Linux, proses daemon dalam c dilaksanakan melalui fork. Python juga boleh dilaksanakan dengan cara ini. Kod sampel adalah seperti berikut:

Kod adalah seperti berikut:

#!/usr/bin/env python
import time,platform
import os
def funzioneDemo():
    # 这是具体业务函数示例
    fout = open('/tmp/demone.log', 'w')
    while True:
        fout.write(time.ctime()+'\n')
        fout.flush()
        time.sleep(2)
    fout.close()
def createDaemon():
    # fork进程        
    try:
        if os.fork() > 0: os._exit(0)
    except OSError, error:
        print 'fork #1 failed: %d (%s)' % (error.errno, error.strerror)
        os._exit(1)    
    os.chdir('/')
    os.setsid()
    os.umask(0)
    try:
        pid = os.fork()
        if pid > 0:
            print 'Daemon PID %d' % pid
            os._exit(0)
    except OSError, error:
        print 'fork #2 failed: %d (%s)' % (error.errno, error.strerror)
        os._exit(1)
    # 重定向标准IO
    sys.stdout.flush()
    sys.stderr.flush()
    si = file("/dev/null", 'r')
    so = file("/dev/null", 'a+')
    se = file("/dev/null", 'a+', 0)
    os.dup2(si.fileno(), sys.stdin.fileno())
    os.dup2(so.fileno(), sys.stdout.fileno())
    os.dup2(se.fileno(), sys.stderr.fileno())
    # 在子进程中执行代码
    funzioneDemo() # function demo
if name == 'main': 
    if platform.system() == "Linux":
        createDaemon()
    else:
        os._exit(0)
Salin selepas log masuk

Ia dilaksanakan melalui kaedah permulaan

Aplikasi boleh dimasukkan ke dalam perkhidmatan sistem melalui permulaan Contoh lengkap direkodkan terus di sini.

1. Tulis skrip python

Kodnya adalah seperti berikut:

[root@local t27]
# cat test123.py
#!/usr/bin/env python
import os,time
while True :    
print time.time()    
time.sleep(1)
Salin selepas log masuk


2 upstatFail konfigurasi

Kodnya adalah seperti berikut:

[root@local t27]
# cat /etc/init/mikeTest.confdescription "My test"author "Mike_Zhang@live.com"
start on runlevel [234]stop on runlevel [0156]
chdir /test/t27exec /test/t27/test123.pyrespawn
Salin selepas log masuk

3 🎜>
Kod adalah seperti berikut:

4. Mulakan perkhidmatan
initctl reload-configuration
Salin selepas log masuk

Kod adalah seperti berikut:


[root@local t27]# start mikeTest
mikeTest start/running, process 6635
[root@local t27]# ps aux | grep test123.py
root      6635  0.0  0.0  22448  3716 ?        
Ss   09:55   0:00 python /test/t27/test123.py
root      6677  0.0  0.0 103212   752 pts/1   
 S+   09:56   0:00 grep test123.py
Salin selepas log masuk
5. Hentikan perkhidmatan


Kodnya adalah seperti berikut:

Dicapai melalui skrip bash
[root@local t27]# stop mikeTest
mikeTest stop/waiting
[root@local t27]# ps aux | grep test123.py
root      6696  0.0  0.0 103212   752 pts/1    S+   09:56   0:00 grep test123.py
[root@local t27]#
Salin selepas log masuk

1 , kod python


Kodnya adalah seperti berikut:

[root@local test]# cat test123.py#!/usr/bin/env python
import os,time
while True :    print time.time()    time.sleep(1)
Salin selepas log masuk
2. Tulis skrip permulaan



Jika Terus menggunakan & untuk memulakan proses:

Kodnya adalah seperti berikut:

[root@local test]# cat start.sh#! /bin/sh
python test123.py &
Salin selepas log masuk

Tutup terminal ssh terus, yang akan menyebabkan proses keluar.

Dicapai melalui skrin, tmux, dsb.
Jika anda ingin menjalankan program buat sementara waktu, anda boleh memulakan program melalui skrin, tmux penerangan tentang cara memulakan tmux.

[root@local test]#./start.sh
Salin selepas log masuk

1 Mulakan tmux

Masukkan tmux dalam terminal untuk memulakan

python test123.py &
Salin selepas log masuk

2 >
Hanya laksanakan arahan berikut secara terus (rujuk skrip di atas): python test123.py

3 Terus tutup terminal ssh (seperti butang tutup pada dempul); >

4. Selepas ssh up semula, laksanakan arahan berikut:

Kodnya adalah seperti berikut:

Sekarang anda boleh melihat bahawa program python masih ada Jalankan seperti biasa.

Berjalan di latar belakang di bawah tingkap

Saya belum mempelajarinya secara mendalam di bawah tingkap Kaedah yang sering saya gunakan ialah mengubah suai sambungan skrip python kepada ". .pyw" dan klik dua kali padanya. Ia boleh dijalankan di latar belakang tanpa mengubah suai sebarang kod.

Di atas ialah kandungan beberapa cara menjalankan skrip Python di latar belakang Untuk kandungan yang lebih berkaitan, sila perhatikan laman web PHP Cina (www.php.cn)!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Isu terkini
php - jenkins怎么在后台运行
daripada 1970-01-01 08:00:00
0
0
0
如何停止运行Shell脚本中的后台进程
daripada 1970-01-01 08:00:00
0
0
0
运行后右边没有输出,咋办
daripada 1970-01-01 08:00:00
0
0
0
Python pyinstaller 打包后在其他电脑运行失败
daripada 1970-01-01 08:00:00
0
0
0
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan