OS X'de arka planda çalışan Python betiğimi (sonsuz bir “while” döngüsüyle) saklamanın bir yolu var mı? Ayrıca, aynı amaçla, bir USB sürücüsünde "autorun" python betiğine sahip olmanın bir yolu var mı?Python'u OS X üzerinde arka planda çalıştırma
cevap
Komut dosyasının otomatik olarak başlayan bir süreç olarak çalışmasını istiyorsanız, launchctl ve bir plist dosyasını kullanabilirsiniz.
#!/usr/bin/env python
import os
import time
while True:
os.system('echo " foo" >> /Users/bob/foostore.txt')
time.sleep(1)
, bir arka plan programı işlemi olarak çalıştırmak zorunda bir Plist dosyası oluşturmak için: Örneğin
Bora, ev dizininde bir dosyaya her saniye kelimesini 'foo' yazıyor basit python komut dosyası vardır , ~/Library/LaunchAgents/com.bobbob.osx.test.plist
, içeriği:
launchctl load ~/Library/LaunchAgents/com.bobbob.osx.test.plist
:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST 1.0//EN http://www.apple.com/DTDs/PropertyList-1.0.dtd >
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.bobbob.osx.test</string>
<key>Program</key>
<string>/Users/bob/pyfoo.py</string>
<key>KeepAlive</key>
<true/>
</dict>
</plist>
sonra bir terminalden plist yüklemek için launchctl
kullanımı
Bu komut dosyasını yükleyecek ve programı <key>Program</key>
altındaki <string>
öğesinde hemen çalıştıracaktır. Program için <ProgramArguments>
düğümü kullanarak <string>
öğesinin bir dizisini kullanarak bağımsız değişkenler de belirtebilirsiniz. Daha fazla bilgi için komut dosyasını kaldırmak istiyorsanız launchctl
ait boşaltma komutunu kullanabilirsiniz, launchd.plist man page
bkz:
launchctl unload ~/Library/LaunchAgents/com.bobbob.osx.test.plist
komut kullanılan Etiket herhangi bir şey olabilir, ama üzerinde benzersiz olmalıdır Sisteminiz, bu yüzden Apple genellikle ters alan adı kullanır.
Bir komut dosyasını otomatik olarak düzeltmeye gelince, bunu yapmanın bir yolu olduğunu sanmıyorum.
Sadece normal şekilde kabuk kullanarak arka planda Python komut dosyasını çalıştırın: Mac OS X tarafından yaptığı bir şey olsaydı
python myscript.py &
autorun sorusuna gelince, bu çok büyük bir güvenlik deliği olurdu varsayılan, yani, hayır, elbette değil. Ancak, amaca göre böyle bir şey uygulayan bir komut dosyası yazabilirsiniz: takılıyken bir USB sürücüsünü periyodik olarak arayın ve takılıyken bir şey yapın (hatta ikinci bir komut dosyasını çalıştırın).
Bu soruya bakın. Unix benzeri sistemlerde python betiklerinin izlenmesi için yollar: Python Daemon Packaging Best Practices
Elbette, ihtiyacınız olan şey buysa, betiği kindall tarafından belirtildiği gibi arka planda çalıştırabilirsiniz.
Ben launchctl
çalıştı ve El Capitan işe gelemedi ve etrafında biraz daha aradı ve bu post
TL Bulunan; senin senaryo üzerinde DR
Kullanım shebang hattını #!/usr/bin/env python
veya #!/path/to/python
chmod +x test.py
nohup /path/to/test.py &
ps ax | grep test.py
Not Defteri'ni kullanabilirsiniz https://linux.die.net/man/1/nohup
$ nohup python <your_script.py> &
Bu işleminizi çalıştıracak ve çıktıyı aynı dizinde yer alan nohup.out dosyasına ekleyecektir. &, komut dosyasını diğer yanıtlarda açıklandığı gibi arka planda çalıştırır.
- 1. Android'de arka planda çalıştırma işlemi
- 2. Docker'da Arka Planda Jupyter Defterini Çalıştırma
- 3. Pencereleri önyükleme yaparken arka planda Batch Dosyası Çalıştırma
- 4. OS X
- 5. iphone - Arka planda NSTimers
- 6. OS X
- 7. Sorun var arka planda
- 8. PyQt uygulamam neden Mac OS X'teki arka planda açılıyor?
- 9. iPhone OS 4 Çoklu Görev - Ses Çalma Arka planda
- 10. OS X
- 11. Mac OS X üzerinde PECL Kurun 10.6
- 12. OS X üzerinde GCC 4.7.1 yükleniyor
- 13. OS X üzerinde imzalı ikili dosyaların belirtimi
- 14. Komut satırı Mac OS X üzerinde IntelliJ
- 15. OS X üzerinde Numba yüklenirken hata oluştu
- 16. Metin üzerinde çalışma süreçleri yazma (OS X)
- 17. aws cli OS üzerinde güncelleme olmayacak X
- 18. valgrind OS X üzerinde çalışmayan 10.8
- 19. WKWebView (OS X) yazdırma içeriği (OS X)
- 20. OS X
- 21. OS X
- 22. OS X
- 23. OS X
- 24. OS X
- 25. OS X
- 26. WebView'i arka planda açma
- 27. Uygulama öğesinde Arka Planda (
- 28. Aktivite arka planda çalışır
- 29. watchos 2: Arka planda
- 30. kaçının uygulaması azaltma Elektron arka planda olduğunda
Ekranın – Robus