サービスの実行時にrsyslogがリストされないのはなぜですか?

サービスの実行時にrsyslogがリストされないのはなぜですか?

rsyslogを理解しようとしています。私のLinuxコンピュータの1つは、rsyslog次の出力に基づいてsystemdを介して実行するように設定されているようです。

>systemctl status rsyslog
rsyslog.service - System Logging Service
   Loaded: loaded (/usr/lib/systemd/system/rsyslog.service; enabled)
   Active: active (running) since Tue 2017-01-10 11:28:07 PST; 3 months 19 days ago
 Main PID: 954 (rsyslogd)
   CGroup: /system.slice/rsyslog.service
           L954 /sbin/rsyslogd -n

>ps ax | grep syslog
  954 ?        Ssl    6:22 /sbin/rsyslogd -n

しかし、他のLinuxボックスでは、systemv(systemctlが存在しない)が実行されているかどうかを認識していないようですrsyslogd

[root@box ~]# service --status-all | grep -i syslog 2>&1
[root@box ~]# ps ax | grep -i syslog
 7866 ?        Sl     1:49 /sbin/rsyslogd -n -c5 -i /var/run/syslogd.pid

なぜそのようなギャップがあるのですか?

service2番目のボックスでrsyslogdが実行されていますが、コマンドラインで「手動で」生成され、serviceinit.dスクリプトの1つで構成されていないことを「検出」しなかったという事実はありますか? (私の用語が原始的であれば申し訳ありません)。

私が実際に達成しようとしているのは次のとおりです。 2番目のボックスでrsyslogを再起動したいservice rsyslog restartservice --status-all

ボックス1の構成:

>uname -a
Linux box1 3.11.10-301.fc20.x86_64 #1 SMP Thu Dec 5 14:01:17 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
>lsb_release -a
LSB Version:    :core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-amd64:desktop-4.1-noarch:languages-4.1-amd64:languages-4.1-noarch:printing-4.1-amd64:printing-4.1-noarch
Distributor ID: Fedora
Description:    Fedora release 20 (Heisenbug)
Release:        20
Codename:       Heisenbug

ボックス2構成:

Linux box2 2.6.37+ #2 Tue Apr 18 03:07:09 PDT 2017 armv7l GNU/Linux

答え1

コマンドラインではなく、おそらく他の初期化スクリプトからのものかもしれません。昔はこんな命令がありました。

 $ sudo bash -c "find / -xdev -type f -print0 -size -1M | xargs -0 grep rsyslog"

またはおそらく、

$ sudo bash
# find / -xdev -type f -print0 -size -1M | xargs -0 grep rsyslog

システム内のすべてのファイルを参照して、必要な文字列を含む一般的なファイルを見つけます。 findの-mountオプションは/procから除外され、grepはファイルがその文字列を含むバイナリファイルとして現れるときにログを記録するのに十分スマートです。 -print0はxargsの-0オプションと連携し、パーサーを混乱させる可能性がある奇数文字、スペースを含むファイルを正しく処理することを保証します。 "-size -1M"を使用すると、1MB以下のファイルしか表示できません。このサイズより大きいファイルは注意を引く可能性がほとんどありません。 rsyslog はスクリプトから起動する可能性が高いです。

もちろん別の可能性もあります。つまり、プログラムがリモートで起動されます。特定のキーにバインドされたsshスクリプトでrsyslogを起動する人を簡単に想像できます。これを行うには、システムを受信するときにシステムでsyslogdを実行する必要があります。ログはそれを得ることです。

pstreeのようなコマンドは子が何であるかを示し、親から簡単に抜け出し、initによって継承することができます。

関連情報