Sebuah skrip pemantauan tes1.py yang ditulis dalam Python berjalan sepanjang waktu sementara benar. Ketika SSH jauh (menggunakan terminal dempul), itu memulai skrip dengan perintah berikut:
Salinan kode adalah sebagai berikut:
python test1.py &
Sekarang skrip berjalan secara normal, dan Anda dapat melihat nomor proses melalui PS. Pada saat ini, Anda langsung menutup terminal SSH (tidak menggunakan perintah keluar, tetapi langsung menjalankannya melalui tombol tutup dempul). Setelah masuk lagi, Anda menemukan bahwa prosesnya telah keluar.
Masalahnya telah diselesaikan melalui metode startup latar belakang. Berikut adalah ringkasan, yang nyaman bagi saya untuk memeriksanya di masa depan.
Berlari di latar belakang di bawah Linux
Diimplementasikan melalui Fork
Di lingkungan Linux, proses daemon di C diimplementasikan melalui Fork, dan Python juga dapat diimplementasikan melalui metode ini. Kode contoh adalah sebagai berikut:
Salinan kode adalah sebagai berikut:
#!/usr/bin/env python
waktu impor, platform
Impor OS
def funzionedemo ():
# Ini adalah contoh fungsi bisnis tertentu
fout = buka ('/tmp/demone.log', 'w')
Sementara benar:
fout.write (time.cTime ()+'/n')
fout.flush ()
time.sleep (2)
fout.close ()
def createMemon ():
Proses #Fork
mencoba:
if os.fork ()> 0: os._exit (0)
Kecuali Oserror, kesalahan:
Cetak 'Fork #1 Gagal: %d ( %s)' %(error.errno, error.strerror)
os._exit (1)
os.chdir ('/')
os.setsid ()
Os.umask (0)
mencoba:
pid = os.fork ()
Jika PID> 0:
cetak 'daemon pid % d' % pid
os._exit (0)
Kecuali Oserror, kesalahan:
Print 'Fork #2 Gagal: %d ( %s)' %(error.errno, error.strerror)
os._exit (1)
# Redirection Standard IO
sys.stdout.flush ()
sys.stderr.flush ()
si = file ("/dev/null", 'r')
Jadi = 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 ())
# Jalankan kode dalam proses anak
funzionedemo () # demo fungsi
jika __name__ == '__main__':
if platform.system () == "linux":
createDaemon ()
kalau tidak:
os._exit (0)
Diimplementasikan melalui pemula
Aplikasi dapat dienkapsulasi ke dalam layanan sistem melalui pemula, dan contoh lengkapnya dicatat secara langsung di sini.
1. Tulis skrip Python
Salinan kode adalah sebagai berikut:
[root@local t27]# cat test123.py
#!/usr/bin/env python
Impor OS, waktu
Sementara benar:
cetak time.time ()
time.sleep (1)
2. Tulis file konfigurasi Upstat
Salinan kode adalah sebagai berikut:
[root@lokal T27]# cat /etc/init/miketest.conf
Deskripsi "Tes saya"
Penulis "[email protected]"
Mulailah di RunLevel [234]
Berhenti di RunLevel [0156]
chdir /tes /t27
exec /test/t27/test123.py
respawn
3. Muat ulang bagian atas
Salinan kode adalah sebagai berikut:
InitCtl Reload-Configuration
4. Mulai layanan
Salinan kode adalah sebagai berikut:
[root@local t27]# mulai miketest
Miketest Start/Running, Proses 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 poin/1 S+ 09:56 0:00 GREP Test123.py
5. Layanan berhenti
Salinan kode adalah sebagai berikut:
[root@local t27]# hentikan miketest
Miketest berhenti/menunggu
[root@local t27]# ps aux | grep test123.py
Root 6696 0,0 0,0 103212 752 poin/1 S+ 09:56 0:00 GREP Test123.py
[root@lokal T27]#
Diimplementasikan melalui skrip bash
1. Kode Python
Salinan kode adalah sebagai berikut:
[root@tes lokal]# cat test123.py
#!/usr/bin/env python
Impor OS, waktu
Sementara benar:
cetak time.time ()
time.sleep (1)
2. Tulis skrip startup
Salinan kode adalah sebagai berikut:
[root@tes lokal]# cat start.sh
#! /bin/sh
python test123.py &
3. Mulailah prosesnya
Salinan kode adalah sebagai berikut:
[root@tes lokal]#./start.sh
Jika Anda menggunakan & memulai proses secara langsung:
Salinan kode adalah sebagai berikut:
python test123.py &
Tutup terminal SSH secara langsung akan menyebabkan proses keluar.
Diimplementasikan melalui layar, tmux dan metode lainnya
Jika Anda menjalankan program sementara, Anda dapat memulai program melalui layar atau TMUX. Berikut adalah deskripsi tentang bagaimana TMUX dimulai.
1. Mulai tmux
Masukkan tmux di terminal untuk memulai
2. Mulai program di TMUX
Cukup jalankan perintah berikut secara langsung (lihat skrip di atas): python test123.py
3. Matikan terminal SSH secara langsung (seperti tombol tutup pada dempul);
4. Setelah Resshing, jalankan perintah berikut:
Salinan kode adalah sebagai berikut:
TMux melampirkan
Anda sekarang dapat melihat bahwa program Python masih mengeksekusi secara normal.
Jalankan di latar belakang di bawah Windows
Saya belum mempelajarinya secara mendalam di Windows. Metode yang sering saya gunakan adalah memodifikasi ekstensi skrip Python menjadi ".pyw", dan klik dua kali untuk dijalankan di latar belakang tanpa memodifikasi kode apa pun.