問題がある
同じホストでkillを使用してilogtaildプログラムを終了したときに、このilogtaildデバイスがまだアクティブなのはなぜですか?
#systemctl status ilogtaild
● ilogtaild.service - SYSV: ilogtail is log collect agent of Simple Log Service
Loaded: loaded (/etc/rc.d/init.d/ilogtaild; static; vendor preset: disabled)
Active: active (running) since Fri 2017-08-18 12:38:07 CST; 1min 59s ago
Docs: man:systemd-sysv-generator(8)
Process: 33718 ExecStop=/etc/rc.d/init.d/ilogtaild stop (code=exited, status=0/SUCCESS)
Process: 33745 ExecStart=/etc/rc.d/init.d/ilogtaild start (code=exited, status=0/SUCCESS)
CGroup: /system.slice/ilogtaild.service
├─33747 /usr/local/ilogtail/ilogtail
└─33749 /usr/local/ilogtail/ilogtail
#kill -9 33747 33749
#systemctl status ilogtaild
● ilogtaild.service - SYSV: ilogtail is log collect agent of Simple Log Service
Loaded: loaded (/etc/rc.d/init.d/ilogtaild; static; vendor preset: disabled)
Active: active (exited) since Fri 2017-08-18 12:38:07 CST; 2min 9s ago
Docs: man:systemd-sysv-generator(8)
Process: 33718 ExecStop=/etc/rc.d/init.d/ilogtaild stop (code=exited, status=0/SUCCESS)
Process: 33745 ExecStart=/etc/rc.d/init.d/ilogtaild start (code=exited, status=0/SUCCESS)
ねえ
#systemctl is-active ilogtaild
active
ilogtaildの設定
#systemctl cat ilogtaild
# /etc/systemd/system/ilogtaild.service
[Unit]
Documentation=man:systemd-sysv-generator(8)
SourcePath=/etc/rc.d/init.d/ilogtaild
Description=SYSV: ilogtail is log collect agent of Simple Log Service
Before=runlevel2.target runlevel3.target runlevel4.target runlevel5.target shutdown.target z_nic_irq_set.service muahao.service e2e-qos.service
After=network-online.target network.service khotfix.service
Conflicts=shutdown.target
[Service]
Type=forking
Restart=no
TimeoutSec=5min
IgnoreSIGPIPE=no
KillMode=process
GuessMainPID=no
RemainAfterExit=yes
ExecStart=/etc/rc.d/init.d/ilogtaild start
ExecStop=/etc/rc.d/init.d/ilogtaild stop
大丈夫です。
#systemctl status crond
● crond.service - Command Scheduler
Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2017-08-18 12:43:25 CST; 920ms ago
Main PID: 36532 (crond)
CGroup: /system.slice/crond.service
└─36532 /usr/sbin/crond -n -m/dev/null
#kill -9 36532
#systemctl status crond
● crond.service - Command Scheduler
Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
Active: failed (Result: signal) since Fri 2017-08-18 12:43:36 CST; 2s ago
Process: 36532 ExecStart=/usr/sbin/crond -n $CRONDARGS (code=killed, signal=KILL)
Main PID: 36532 (code=killed, signal=KILL)
ねえ
#systemctl is-active crond
failed
構成
#systemctl cat crond
# /usr/lib/systemd/system/crond.service
[Unit]
Description=Command Scheduler
After=auditd.service systemd-user-sessions.service time-sync.target
[Service]
EnvironmentFile=/etc/sysconfig/crond
ExecStart=/usr/sbin/crond -n $CRONDARGS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
[Install]
WantedBy=multi-user.target
ベストアンサー1
●ilogtaild.service - SYSV:ilogtailは、単純なログサービス用のログ収集エージェントです。 ロード済み:ロード済み(/etc/rc.d/init.d/ilogtaild;静的;ベンダーデフォルト:無効) … ドキュメント: man:systemd-sysv-generator(8)
明示的に作成されたシステムサービスユニットを使用していません。 LSBヘッダー情報が欠落している systemd-sysv-generator
van Smoorenburgスクリプトで生成された単位を使用しています。すべての場合に適用される単一のアプローチをとり、いくつかの推測で修正します。 van Smoorenburgスクリプトは、長期実行デーモンを起動することも、起動しないことも、PIDファイルを使用することも、使用しないこともあります。これらの可能性に対応するサービスユニットを作成してみてください。rc
systemd-sysv-generator
rc
systemd-sysv-generator
自動生成されたサービスユニットには、van Smoorenburgスクリプトのヘッダ情報に基づいて名前付きPIDファイルがありますRemainAfterExit=false
。 (PIDファイルの名前が指定されている場合。)RemainAfterExit=true
rc
RemainAfterExit
false
だから:
- 短期的には、
/etc/rc.d/init.d/ilogtaild
RedHatヘッダーを使用してPIDファイル名を指定する必要がありますpidfile:
。それ以外の場合、systemdは継続的にvan Smoorenburgスクリプトであるrc
と仮定し、長期実行デーモンを残すことはありません。 - 長期的には、使用を中止し、
/etc/rc.d/init.d/ilogtaild
乱数systemd-sysv-generator
サービス単位で梱包することに頼ることを中止する必要があります。