Rumah >hujung hadapan web >tutorial js >Beberapa cara untuk menjalankan skrip Python di latar belakang
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:
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.py5. Hentikan perkhidmatan
Kodnya adalah seperti berikut:
[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)!