ユーザ用ツール

サイト用ツール


debian:debiantips

文書の過去の版を表示しています。


Debian子ネタ集

標準のエディタを変更する

Debian 標準のテキストエディタは nano なのを変更するには update-alternatives で切り替える.

# update-alternatives --config editor

ufw で samba のポートを開く

これは Raspbian の場合ですが,ufw が CIFS と言う名称で定義されていますので,以下のコマンドを実行.

/etc/ufw/applications.d/ 以下に色いろあると思います.

# ufw allow CIFS

Debian jessie での rsyslog の動き

Debian jessie は systemd が導入されました.このため,Debian jessie では,systemd-journald と,rsyslogd の二つのログプロセスが動作していることになります (実際二つのログプロセスが動いています)

どれがどう切り分けられているのか,気になったので調べてみました.

rsyslog-8.4.2/plugins/imuxsock/imuxsock.c に,以下の記述があります.

rsyslog-8.4.2/plugins/imuxsock/imuxsock.c
/* defines */
#ifndef _PATH_LOG
#ifdef BSD
#define _PATH_LOG       "/var/run/log"
#else
#define _PATH_LOG       "/dev/log"
#endif
#endif
#ifndef SYSTEMD_JOURNAL
#define SYSTEMD_JOURNAL  "/run/systemd/journal"
#endif
#ifndef SYSTEMD_PATH_LOG
#define SYSTEMD_PATH_LOG SYSTEMD_JOURNAL "/syslog"
#endif
...
/* activate current listeners */
static inline rsRetVal
activateListeners()
{
...
                listeners[0].sockName = UCHAR_CONSTANT(_PATH_LOG);
                if(runModConf->pLogSockName != NULL)
                        listeners[0].sockName = runModConf->pLogSockName;
                else if(sd_booted()) {
                        struct stat st;
                        if(stat(SYSTEMD_PATH_LOG, &st) != -1 && S_ISSOCK(st.st_mode)) {
                                listeners[0].sockName = (uchar*) SYSTEMD_PATH_LOG;
                        }
                }

Linux では,標準ではログのためのソケットは /dev/log ですが,rsyslog では,sd_booted() の戻り値が真の場合,“/run/systemd/journal/socket” と言うファイルが存在して,さらにそれがソケットを指していれば,それをログのためのソケットとして使うようです.

sd_booted() の実体は,rsyslog-8.4.2/runtime/sd-daemon.c にあります.

rsyslog-8.4.2/runtime/sd-daemon.c
_sd_export_ int sd_booted(void) {
#if defined(DISABLE_SYSTEMD) || !defined(__linux__)
        return 0;
#else
        struct stat st;
 
        /* We test whether the runtime unit file directory has been
         * created. This takes place in mount-setup.c, so is
         * guaranteed to happen very early during boot. */
 
        if (lstat("/run/systemd/system/", &st) < 0)
                return 0;
 
        return !!S_ISDIR(st.st_mode);
#endif
}

“/run/systemd/system/” と言う名前のディレクトリがあるかどうかで決まります.

要は,rsyslog は,自身で systemd が動いているかを “/run/systemd/system/” ディレクトリの有無で判定し,もしこのディレクトリが存在しているならば,“/run/systemd/journal/socket” をログのためのソケットとして使うようです.

標準で読み取るログのためのソケットは “/dev/log” から “

debian/debiantips.1442931278.txt.gz · 最終更新: 2015-09-22 23:14 by tosihisa@netfort.gr.jp