私は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
なぜこの格差?
2番目のボックスは、rsyslogdが実行されているが、service
によって「検出」されていないという事実です。これは、rsyslogdがコマンドラインから「手動で」生成され、service
のinitの1つを介して構成されていないことを示しています。 .dスクリプト? (私の用語が原始的である場合は申し訳ありません)。
私が実際に達成したかったのは、2番目のボックスでrsyslogを再起動したかったので、service rsyslog restart
のようなものを実行することで再起動することを期待していました。しかし、service --status-all
を実行したときにrsyslogが見つからなかったため、この回り道にたどり着きました。
ボックス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
コマンドラインからではなく、おそらく別の初期化スクリプトからです。古き良き時代には、
$ 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」は、1メガバイト以下のファイルのみが表示されることを保証します。それよりも大きいファイルは、関心のあるものではない可能性があります。rsyslogは、スクリプトから開始される可能性があります。
もちろん、もう1つの可能性があります。それは、プログラムがリモートで開始されることです。特定のキーに関連付けられたsshスクリプトからrsyslogを開始する人を簡単に想像できます。これは、そのことだけを実行します。シェルを取得できない場合もあります。これは、想定されるマシンでsyslogdを実行するという点です。 Syslogを受信することはそれらを取るためにあります。
Pstreeのようなコマンドは、子が何であるかを表示できます。また、親の下から簡単に抜け出して、initに継承されるようにすることもできますが、