Bu, Ubuntu Online, Fedora Online, Windows çevrimiçi öykünücüsü veya MAC OS çevrimiçi öykünücüsü gibi birden çok ücretsiz çevrimiçi iş istasyonumuzdan biri kullanılarak OnWorks ücretsiz barındırma sağlayıcısında çalıştırılabilen komut denetçisidir.
Program:
ADI
süpervizör - süpervizör Dokümantasyon
Supervisor, kullanıcılarının bir numarayı izlemesini ve kontrol etmesini sağlayan bir istemci/sunucu sistemidir.
UNIX benzeri işletim sistemlerindeki işlemlerin sayısı.
Launchd, daemontools ve runit gibi programların aynı hedeflerinden bazılarını paylaşır. farklı
bu programlardan bazıları, bunun yerine çalıştırılmak üzere tasarlanmamıştır. init "işlem kimliği" olarak
1". Bunun yerine, bir proje veya bir proje ile ilgili süreçleri kontrol etmek için kullanılması amaçlanmıştır.
müşteridir ve önyükleme sırasında başka herhangi bir program gibi başlaması amaçlanmıştır.
DOKÜMANTASYON
gözetmen
Süpervizörün sunucu parçasının adı gözetmen. Çocuğu başlatmaktan sorumludur.
programları kendi çağırdığında, istemcilerden gelen komutlara yanıt vererek, yeniden başlatmanın çökmesiyle veya
alt süreçlerden çıkıldı, alt sürecini günlüğe kaydettirdi stdout'u ve Stderr çıktı, üreten ve
alt süreç yaşamlarındaki noktalara karşılık gelen "olayları" işleme.
Sunucu işlemi bir yapılandırma dosyası kullanır. Bu genellikle şurada bulunur:
/etc/supervisord.conf. Bu yapılandırma dosyası bir "Windows-INI" stili yapılandırma dosyasıdır. Bilişim Teknoloji
uygun dosya sistemi izinleriyle bu dosyayı güvende tutmak önemlidir, çünkü
şifrelenmemiş kullanıcı adları ve şifreler içerir.
Koşu Gözetmen
Bu bölüm, bir BİNDİR nasıl çalıştırılacağını anlatırken gözetmen ve
süpervizörctl komutlar. Bu, Python kurulumunuzun sahip olduğu "bindir" dizinidir.
ile yapılandırıldı. Örneğin, aracılığıyla yüklenen bir Python kurulumu için
. / Yapılandırma --prefix=/usr/yerel/py; Yapmak; yapmak kurmak, BİNDİR olurdu /usr/yerel/py/bin.
Farklı platformlardaki Python yorumlayıcıları farklı bir BİNDİR. çıktısına bak
kurulum.py kurmak eğer seninkinin nerede olduğunu bulamıyorsan.
Ekleme a Programı
önce gözetmen sizin için yararlı bir şey yapacak, en az bir tane eklemeniz gerekecek
program yapılandırmasına gidin. NS program bölümünde bir program tanımlayacaktır.
çalıştırdığınızda ve yönettiğinizde gözetmen emretmek. Bir program eklemek için yapmanız gerekenler
düzenle süpervizör.conf dosyası.
Çalıştırılması mümkün olan en basit programlardan biri UNIX'tir. kedi programı. A program Bölüm
koşacak kedi zaman gözetmen işlemin başladığı aşağıda gösterilmiştir.
[program:foo]
komut =/bin/kedi
Bu dörtlük kesilip içine yapıştırılabilir. süpervizör.conf dosya. bu en basiti
olası program yapılandırması, çünkü yalnızca bir komutu adlandırır. Program yapılandırması
bölümlerde burada gösterilmeyen birçok başka yapılandırma seçeneği vardır. Görmek
Daha fazla bilgi için programx_section.
Koşu gözetmen
Başlatmak için gözetmen, koşmak $BINDIR/denetçi. Ortaya çıkan süreç şeytanlaştıracak
kendini ve terminalden ayırın. Bir işlem günlüğü tutar $CWD/gözetmen.log by
Varsayılan.
başlatabilirsiniz gözetmen geçirerek ön planda yürütülebilir -n üzerinde bayrak
Komut satırı. Bu, başlatma sorunlarının hatalarını ayıklamak için kullanışlıdır.
UYARI:
Ne zaman gözetmen başlar, varsayılan olarak yapılandırma dosyasını arayacaktır
yerleri dahil olmak üzere the akım çalışma rehber. Güvenlik bilincine sahipseniz,
muhtemelen sonra bir "-c" argümanı belirtmek isteyecektir gözetmen komut belirten
birinin sizi kandırmadığından emin olmak için bir yapılandırma dosyasına giden mutlak bir yol
bir haydut içeren bir dizinden süpervizör çalıştırma süpervizör.conf dosyası.
Supervisor bu olmadan root olarak başlatıldığında bir uyarı verilir. -c argüman.
Tarafından kontrol edilen program setini değiştirmek için gözetmen, düzenle süpervizör.conf dosya
ve öldürmek -HUP veya başka bir şekilde yeniden başlatın gözetmen işlem. Bu dosyanın birkaç örneği var
program tanımları.
The gözetmen komut, bir dizi komut satırı seçeneğini kabul eder. Bu komutların her biri
satır seçenekleri, yapılandırma dosyasındaki herhangi bir eşdeğer değeri geçersiz kılar.
gözetmen Komut satırı Opsiyonlar
-c DOSYA, --yapılandırma=DOSYA
yol bir gözetmen yapılandırma dosyası
-n, --nodaemon
koşmak gözetmen ön planda.
-h, --yardım et
Showroom gözetmen komut yardımı.
-u KULLANICI, --kullanıcı=KULLANICI
UNIX kullanıcı adı veya sayısal kullanıcı kimliği. Eğer gözetmen kök kullanıcı olarak başlatılır,
başlatma sırasında mümkün olan en kısa sürede bu kullanıcıya ayarlayın.
-m SEKİZLİ, --umask=SEKİZLİ
tarafından kullanılması gereken umask'ı temsil eden sekizli sayı (örn. 022) gözetmen
başladıktan sonra.
-d PATH, --dizin=PATH
Denetleyici bir arka plan programı olarak çalıştırıldığında, arka plan programı oluşturmadan önce bu dizine cd.
-l DOSYA, --logdosyası=DOSYA
Denetlenen etkinlik günlüğü olarak kullanılacak dosya adı yolu.
-y BAYT, --logfile_maxbytes=BAYT
Döndürme gerçekleşmeden önce denetçi etkinlik günlüğü dosyasının maksimum boyutu. Değer
sonekle çarpılır, örneğin "1" bir bayttır, "1MB" 1 megabayttır, "1GB" 1'dir
gigabayt.
-y NUM, --logfile_backups=NUM
Çevrede tutulacak denetçi etkinlik günlüğünün yedek kopyalarının sayısı. Her biri
günlük dosyası boyutunda olacak günlük dosyası_maxbytes.
-e SEVİYE, --logdüzeyi=SEVİYE
Süpervizörün etkinlik günlüğüne yazması gereken günlük düzeyi. Geçerli
seviyeler iz, ayıklamak, bilgi, uyarmak, hata, ve kritik.
-j DOSYA, --piddosyası=DOSYA
Denetçinin pid dosyasını yazması gereken dosya adı.
-i STRING, --tanımlayıcı=STRING
Bu örnek için çeşitli istemci kullanıcı arabirimleri tarafından sunulan keyfi dize tanımlayıcısı
süpervizörü.
-q PATH, --childlogdir=PATH
Süpervizörün kendi bilgilerini yazacağı bir dizine (zaten mevcut olmalıdır) giden yol OTO
-mode alt işlem günlükleri.
-k, --nocleanup
Önlemek gözetmen temizlik yapmaktan (eski OTO işlem günlük dosyaları)
başlangıçta.
-a NUM, --minfds=NUM
Denetçi için mevcut olması gereken minimum dosya tanımlayıcı sayısı
önce süreç başarılı bir şekilde başlayacaktır.
-t, --strip_ansi
ANSI kaçış dizilerini tüm alt günlük işlemlerinden çıkarın.
-v, --versiyon
Denetlenen sürüm numarasını stdout'a yazdırın ve çıkın.
--profile_options=LİSTESİ
Profil oluşturma için virgülle ayrılmış seçenekler listesi. nedenler gözetmen altında koşmak
profil oluşturucu ve virgülle ayrılmış bir liste olan seçeneklere dayalı çıktı sonuçları
Aşağıdakilerden: birikimli, aramalar, Arayanların. Örneğin kümülatif, arayanlar.
--minprocs=NUM
Denetlenen kişi için mevcut olması gereken minimum işletim sistemi işlem yuvası sayısı
önce süreç başarılı bir şekilde başlayacaktır.
Sinyalleri
The gözetmen programa belirli eylemleri gerçekleştirmesine neden olan sinyaller gönderilebilir.
çalışırken.
Bu sinyallerden herhangi birini teke gönderebilirsiniz. gözetmen işlem kimliği. Bu işlem kimliği
tarafından temsil edilen dosyada bulunabilir. pid dosyası parametresi [denetçi] Bölüm
yapılandırma dosyasının (varsayılan olarak $CWD/supervisord.pid).
işaret Eylemciler
SİGTERM
gözetmen ve tüm alt süreçleri kapanacaktır. Bu birkaç saniye sürebilir.
SIGINT
gözetmen ve tüm alt süreçleri kapanacaktır. Bu birkaç saniye sürebilir.
SIGQUIT
gözetmen ve tüm alt süreçleri kapanacaktır. Bu birkaç saniye sürebilir.
GÖRÜŞ
gözetmen tüm işlemleri durduracak, yapılandırmayı ilk yapılandırmadan yeniden yükleyecektir
bulduğu dosyayı ve tüm işlemleri yeniden başlatın.
SIGUSR2
gözetmen ana etkinlik günlüğünü ve tüm alt günlük dosyalarını kapatır ve yeniden açar.
Süre Güvenlik
Geliştiriciler, bir gözetmen olarak çalışan süreç
root, istenmeyen ayrıcalık yükselmesine yol açamaz. Fakat uyarı alıcı. Süpervizör
DJ Bernstein'ın daemontools'u kadar paranoyak değil, gözetmen
verilerin olabileceği yapılandırma dosyasında rastgele yol özelliklerine izin verir.
yazılı. Rastgele yol seçimlerine izin vermek, sembolik bağlantıdan güvenlik açıkları oluşturabilir
saldırılar. Yapılandırmanızda yolları belirtirken dikkatli olun. emin olun
gözetmen yapılandırma dosyası imtiyazsız kullanıcılar tarafından okunamaz veya yazılamaz ve
süpervizör paketi tarafından yüklenen tüm dosyaların "aklı başında" dosya izni korumasına sahip olduğunu
ayarlar. Ek olarak, PYTHONPATH aklı başında ve tüm Python standardı
kitaplık dosyaları yeterli dosya izni korumasına sahiptir.
Koşu gözetmen otomatik olarak on başlangıç
Supervisor'ın dağıtımla paketlenmiş bir sürümünü kullanıyorsanız, zaten olması gerekir.
dağıtımınızın hizmet yönetimi altyapısına entegre edilmiştir.
Çeşitli işletim sistemleri için kullanıcı katkılı komut dosyaları şu adreste bulunur:
https://github.com/Supervisor/initscripts
Takılıp kalmanız durumunda Serverfault'ta bazı cevaplar var: Ne kadar için otomatik olarak başlama
gözetmen on Linux (Ubuntu'da)
alt süreçler
gözetmen'nin birincil amacı, içindeki verilere dayalı süreçler oluşturmak ve yönetmektir.
yapılandırma dosyası. Bunu alt süreçler oluşturarak yapar. tarafından oluşturulan her bir alt süreç
süpervizör, tüm ömrü boyunca süpervizör tarafından yönetilir (gözetmen olduğunu
oluşturduğu her işlemin ana süreci). Bir çocuk öldüğünde, amir bilgilendirilir.
aracılığıyla ölümü SIGCHLD sinyali verir ve uygun işlemi gerçekleştirir.
şeytanlaştırmayan of alt süreçler
Süpervizör altında çalıştırılması amaçlanan programlar kendilerini şeytanlaştırmamalıdır. Bunun yerine, onlar
ön planda çalıştırılmalıdır. Çıktıkları terminalden ayrılmamalıdırlar.
başladı.
Bir programın ön planda çalışıp çalışmayacağını anlamanın en kolay yolu şu komutu çalıştırmaktır:
programı bir kabuk isteminden çağırır. Size terminalin kontrolünü geri veriyorsa,
ama çalışmaya devam ediyor, kendini şeytanlaştırıyor ve bu neredeyse kesinlikle yanlış olacak
süpervizör altında çalıştırmanın yolu. Esasen sizi gerektiren bir komutu çalıştırmak istiyorsunuz.
bastırmak Ctrl-C terminalin kontrolünü geri almak için. Size bir kabuk istemi geri verirse
basmaya gerek kalmadan çalıştırdıktan sonra Ctrl-C, süpervizör altında yararlı değildir. Tüm
programların ön planda çalıştırılacak seçenekleri vardır ancak bunu yapmanın "standart bir yolu" yoktur;
her programın belgelerini okumanız gerekir.
Aşağıda, ortak programları başlattığı bilinen yapılandırma dosyası örnekleri verilmiştir.
Süpervizör altındaki "ön plan" modu.
Örnekler of Programı Konfigürasyonlar
İşte bazı "gerçek dünya" program yapılandırma örnekleri:
Apache 2.2.6
[program:apache2]
command=/path/to/httpd -c "ErrorLog /dev/stdout" -DFOREGROUND
yönlendirme_stderr=doğru
İki Zope 2.X durumlarda ve bir SIFIR sunucu
[program:zeo]
komut=/yol/to/runzeo
Öncelikli = 1
[program:zope1]
komut=/yol/to/örnek/home/bin/runzope
Öncelikli = 2
yönlendirme_stderr=doğru
[program:zope2]
komut=/yol/to/başka/örnek/home/bin/runzope
Öncelikli = 2
yönlendirme_stderr=doğru
postgres 8.X
[program:postgres]
komut=/yol/to/postmaster
; "hızlı" kapatma sinyalini kullanıyoruz SIGINT
stop sinyali=INT
yönlendirme_stderr=doğru
OpenLDAP şaplak
[program:tokat]
komut=/path/to/slapd -f /path/to/slapd.conf -h ldap://0.0.0.0:8888
yönlendirme_stderr=doğru
Diğer Örnekler
Hizmetleri başlatmak için kullanılabilecek diğer kabuk komut dosyası örnekleri gözetmen yapabilmek
bulunabilir http://thedjbway.b0llix.net/services.html. Bu örnekler aslında
Daemon araçları ama öncül süpervizör için aynıdır.
Ön planda çeşitli programları başlatmak için başka bir tarif koleksiyonu mevcuttur
itibaren http://smarden.org/runit/runscripts.html.
pidproxy Programı
Bazı işlemler (gibi mysqld) tarafından oluşturulan gerçek sürece gönderilen sinyalleri yoksay
gözetmen. Bunun yerine, bu tür programlar tarafından "özel" bir iş parçacığı/işlem oluşturulur.
sinyallerin işlenmesinden sorumludur. Bu sorunlu çünkü gözetmen yapabilmek
sadece kendi yarattığı bir süreci öldürür. tarafından oluşturulan bir süreç ise gözetmen oluşturur
kendi alt süreçleri, gözetmen onları öldüremezsin.
Neyse ki, bu tür programlar tipik olarak aşağıdakileri içeren bir "pidfile" yazar.
"özel" süreç' PID'sidir ve süreci öldürmek için okunmalı ve kullanılmalıdır. Olarak
bu durum için bir geçici çözüm, özel bir pidproxy program bu tür başlatmaları işleyebilir
süreçlerin NS pidproxy program, bir süreci başlatan küçük bir ayardır ve
bir sinyalin alınması, sinyali bir pid dosyasında sağlanan pid'e gönderir. Bir örnek
pidproxy etkinleştirilmiş bir program için yapılandırma programı girişi aşağıda verilmiştir.
[program: mysql]
komut=/path/to/pidproxy /path/to/pidfile /path/to/mysqld_safe
The pidproxy program yapılandırmanızın içine konur $BINDIR süpervizör kurulduğunda
(bu bir "konsol komut dosyasıdır").
alt süreç çevre
Alt işlemler, işlemi başlatmak için kullanılan kabuğun ortamını devralır. gözetmen
programı. Birkaç ortam değişkeni tarafından ayarlanacaktır gözetmen çocuğun içinde kendini
ortamı da dahil olmak üzere SUPERVISOR_ENABLED (işlemin altında olduğunu gösteren bir bayrak
süpervizör kontrolü), SUPERVISOR_PROCESS_NAME (için yapılandırma dosyası tarafından belirtilen işlem adı
Bu süreç) ve SUPERVISOR_GROUP_NAME (için yapılandırma dosyası tarafından belirtilen işlem grubu adı
çocuk süreci).
Bu ortam değişkenleri, [denetçi] bölüm yapılandırması
adlı seçenek çevre (tüm alt süreçler için geçerlidir) veya per- [program:x]
Bölüm çevre yapılandırma seçeneği (yalnızca içinde belirtilen alt işlem için geçerlidir)
[program:x] Bölüm). Bu "ortam" ayarları ilavedir. Başka bir deyişle, her
alt işlemin ortamı şunlardan oluşacaktır:
Denetimi başlatmak için kullanılan kabuk içinde ayarlanan ortam değişkenleri...
... tarafından eklenen/geçersiz kılınan ...
Kendi ID’n ile mağazalarını oluştur the çevre değişkenler set içinde the çevre global
yapılandırma seçeneği ...
... tarafından eklenen/geçersiz kılınan ...
Kendi ID’n ile mağazalarını oluştur süpervizöre özel çevre değişkenler
(SUPERVISOR_ENABLED, SUPERVISOR_PROCESS_NAME, SUPERVISOR_GROUP_NAME) ..
... tarafından eklenen/geçersiz kılınan ...
Kendi ID’n ile mağazalarını oluştur the çevre değişkenler set içinde the süreç başına
"ortam" yapılandırma seçeneği.
Hiçbir kabuk tarafından yürütülmez gözetmen bir alt işlemi çalıştırdığında, bu nedenle ortam değişkenleri
gibi KULLANICI, PATH, ANASAYFA, SHELL, LOGNAME, vb. varsayılanlarından değiştirilmez veya
aksi takdirde yeniden atanır. Bu, bir çalıştırırken not etmek özellikle önemlidir.
programdan bir gözetmen ile root olarak çalıştır kullanıcı= yapılandırmada stanza. farklı
cron, gözetmen "temel" ortamı kutsallaştırmaya ve geçersiz kılmaya çalışmaz
gibi değişkenler KULLANICI, PATH, ANASAYFA, ve LOGNAME kullanıcı tanımlı bir setuid gerçekleştirdiğinde
içinde kullanıcı= program yapılandırma seçeneği. için ortam değişkenlerini ayarlamanız gerekiyorsa
aksi takdirde belirli bir program için bir kabuk çağırma ile ayarlanabilecek belirli bir program
kullanıcı, bunu açıkça yapmanız gerekir. çevre= program yapılandırma seçeneği. Bir örnek
Bu ortam değişkenlerinin ayarlanması aşağıdaki gibidir.
[program:apache2]
komut=/home/chrism/bin/httpd -c "ErrorLog /dev/stdout" -DFOREGROUND
kullanıcı = mesih
ortam=HOME="/home/chrism",USER="chrism"
Süreç Devletler
Süpervizör tarafından kontrol edilen bir süreç, herhangi bir zamanda aşağıdaki durumlardan birinde olacaktır.
Bu durum adlarını istemcilerdeki çeşitli kullanıcı arabirimi öğelerinde görebilirsiniz.
DURDURULDU (0)
Durdurma talebi nedeniyle süreç durduruldu veya hiç başlatılmadı.
BAŞLANGIÇ (10)
İşlem, bir başlatma isteği nedeniyle başlıyor.
KOŞU (20)
İşlem devam ediyor.
GERİ BAS (30)
Süreç girdi BAŞLANGIÇ durumu ancak daha sonra taşınmak için çok hızlı bir şekilde çıkıldı
the KOŞU devlet.
DURDURULUYOR (40)
Durdurma talebi nedeniyle süreç durduruluyor.
ÇIKIŞ (100)
Süreçten çıktı KOŞU durum (beklenen veya beklenmedik bir şekilde).
FATAL (200)
İşlem başarıyla başlatılamadı.
BİLİNMEYEN (1000)
İşlem bilinmeyen bir durumda (gözetmen programlama hatası).
Süpervizör altında yürütülen her süreç, aşağıdakilere göre bu durumlar boyunca ilerler.
Yönlendirilmiş grafik.
[image: Alt İşlem Durum Geçiş Grafiği] [image] Alt İşlem Durum Geçişi
Grafik.UNINDENT
içinde bir süreç var DURDURULDU İdari olarak durdurulup durdurulmadığını veya durdurulup durdurulmadığını belirtin.
hiç başlamadı.
Otomatik yeniden başlatma işlemi devredeyken GERİ BAS durum, otomatik olarak olacak
tarafından yeniden başlatıldı gözetmen. arasında geçiş yapacak BAŞLANGIÇ ve GERİ BAS o kadar devletler
sayısı nedeniyle başlatılamayacağı ortaya çıkıyor. başlangıç denemeleri vardır
maksimumu aştığında, bu noktada FATAL durum. Her başlangıç
yeniden deneme giderek daha fazla zaman alacaktır.
İçinde bir süreç olduğunda ÇIKIŞ durumda, otomatik olarak yeniden başlayacaktır:
· eğer olursa asla otomatik yeniden başlat parametre şu şekilde ayarlanmıştır: yanlış.
· koşulsuz olarak otomatik yeniden başlat parametre şu şekilde ayarlanmıştır: gerçek.
· şartlı olarak otomatik yeniden başlat parametre şu şekilde ayarlanmıştır: beklenmedik. ile çıkılırsa
içinde tanımlanan çıkış kodlarından biriyle eşleşmeyen çıkış kodu çıkış kodları
işlem için yapılandırma parametresi, yeniden başlatılacaktır.
Bir süreç otomatik olarak şundan geçer: ÇIKIŞ için KOŞU yapılandırılmasının bir sonucu olarak
koşullu veya koşulsuz olarak otomatik yeniden başlatmak için. arasındaki geçiş sayısı
KOŞU ve ÇIKIŞ hiçbir şekilde sınırlı değildir: bir konfigürasyon oluşturmak mümkündür
bu, çıkılan bir işlemi sonsuz bir şekilde yeniden başlatır. Bu bir özellik, bug değil.
Otomatik olarak yeniden başlatılan bir süreç, sonunda sona ererse asla otomatik olarak yeniden başlatılmaz. FATAL
durumu (bu durumdan manuel olarak yeniden başlatılması gerekir).
Bir süreç şuraya geçer: DURDURULUYOR bir idari durdurma talebi yoluyla belirtin ve
sonra sonunda DURDURULDU devlet.
Başarıyla durdurulamayan bir süreç, DURDURULUYOR sonsuza kadar devlet.
Bu duruma asla normal işlemler sırasında ulaşılmamalıdır, çünkü
süreç bir nihai yanıt vermedi SIGKILL amir tarafından kendisine gönderilen sinyal,
UNIX altında "imkansız".
Her zaman kullanıcı eyleminin başlatılmasını gerektiren durum geçişleri şunlardır:
FATAL -> BAŞLANGIÇ
KOŞU -> DURDURULUYOR
Her zaman olmasa da tipik olarak kullanıcı eyleminin başlatılmasını gerektiren durum geçişleri şunlardır:
belirtilen istisnalar dışında bunlar:
DURDURULDU -> BAŞLANGIÇ (işlemin otomatik olarak başlatılacağı şekilde yapılandırılmışsa, denetimli başlatma dışında)
ÇIKIŞ -> BAŞLANGIÇ (işlemin otomatik olarak yeniden başlatılacak şekilde yapılandırılması dışında)
Diğer tüm durum geçişleri, denetçi tarafından otomatik olarak yönetilir.
Sözlük
Daemon araçları
A süreç kontrol sistem by DJ Bernstein.
launchd
A süreç kontrol sistem Kullanılmış by Apple Mac OS X altında işlem 1 olarak.
runit A süreç kontrol sistem.
süperlans
Birbirine bağlanan çeşitli olay dinleyici uygulamaları sağlayan bir paket
İşlem belleği kullanımını ve kilitlenme durumunu izlemeye yardımcı olabilecek süpervizör:
http://pypi.python.org/pypi/superlance.
Umask Kısaltması kullanıcı maske: geçerli işlemin dosya modu oluşturma maskesini ayarlar.
Yerimizi http://en.wikipedia.org/wiki/Umask.
onworks.net hizmetlerini kullanarak süpervizörü çevrimiçi kullanın