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中文网
PHP中文网asal
2017-04-01 15:15:293287semak imbas

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 &

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)

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)


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

3 🎜>
Kod adalah seperti berikut:

4. Mulakan perkhidmatan
initctl reload-configuration

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
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]#

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)
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 &

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

1 Mulakan tmux

Masukkan tmux dalam terminal untuk memulakan

python test123.py &

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)!

Kenyataan:
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