Systemctl'ye bu servisin daha önce başladığını nasıl anlatabilirim


0

Böyle bir servis birim dosyam var mediation.service:

[Unit]
Description=Mobile-IP Log dumper

[Service]
Type=forking
ExecStart=/opt/mediation/mediation start
ExecStopPost=/opt/mediation/mediation stop
ExecReload=/opt/mediation/mediation reload
PIDFile=/var/lib/mediation/syslog-ng.pid

Şimdi, birinin /opt/mediation/mediation startkullanmak yerine servisi doğrudan başlattığını varsayalım .systemctl start mediation

Bu durumda systemctl status mediationgösterecek:

● mediation.service - Mobile-IP Log dumper
   Loaded: loaded (/etc/systemd/system/mediation.service; enabled; vendor preset: disabled)
   Active: inactive (dead) since Mon 2016-07-11 11:24:11 CEST; 8s ago
  Process: 14088 ExecStopPost=/opt/mediation/mediation stop (code=exited, status=0/SUCCESS)
  Process: 13482 ExecStart=/opt/mediation/mediation start (code=exited, status=0/SUCCESS)
 Main PID: 13746

systemctl status mediationHizmetin doğru durumunu (yani çalışıyor) göstermesi mümkün mü ? Systemctl, durumu denetlediğinde PIDFile'i yeniden yüklemiyor gibi görünüyor, çünkü bu durumda tüm bilgiler mevcut olacak ve uygun durum biliniyor.


Mobil IP? Hala günümüzde işe yarıyor ve nasıl o iş yapabilir
grawity

Mobile-IPuygulamanın sadece bizim iç adıdır. Mobil-IP protokolü ile ilgili değildir - belki isim çok akıllı değildir, ancak şimdi değiştirmek için artık çok geç.
Wernfried Domscheit

Yanıtlar:


3

Hayır, bunu yapamazsın.

systemd hizmet izleme ağırlıklı cgroups dayanmaktadır, bu nedenle işlem edemez parçası olarak kabul edilmesi mediation.servicebu apropriate CGroup içinde olmadığı sürece. (Örneğin, kullanıcı girişleri sshd.service adresinden bu şekilde ayrılır: başka bir gruba taşınır.) PID dosyaları için fazla önemsemez, ek doğrulama için kullanmasına rağmen.

Kurulduğu sürece Fakat süreç elle doğru CGroup (via / sys / fs / CGroup / systemd) taşınır bile, hala bütün hizmet 'aktif' olarak kabul edilmeyecektir aracılığıyla systemd.


Debian'da ve hala bir /etc/init.dkomut dosyası karışımına sahip olan diğer dağıtımlarda , bu, genel olarak "LSB fonksiyonları" komut dosyasını, elle çalıştırıldığında initscript'i systemctl aracılığıyla otomatik olarak yeniden çalıştırmak üzere düzenleyerek çözülür.

Ancak doğrudan ödemelere başlamak gibi … peki, sanmıyorum? Veya, manuel başlatmaları da systemctl'ye yönlendiren benzer bir sarmalayıcı komut dosyası oluşturun.


0

Doğrudan bir çözüm olmadığından, geçici bir çözüm betiğe bu tür satırları eklemek için bir şey olabilir.

if [[ ! `ps --no-headers -o args -p $PPID | grep systemd` ]] ; then 
   echo "You must start the application with 'systemctl start mediation'"
   exit 1
fi

Bu, servisin systemctl dışında başlatılmasını önler.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.