UNIX/設定ファイル

/etc/rsyslog.conf

【書式】if [not] $プロパティ  条件式  値  [and または or { [not] $プロパティ 条件式 値}]  then  [-]出力先 [; テンプレート] [& ~]

書式は上から順番に、最後まで評価される。
$IncludeConfig で複数のコンフィグを読み込む場合、コンフィグのファイル名の順番に読み込む。
& ~ と書き込むと、以降の処理を破棄する。つまり以降の設定を読み込まなくなる=ログが書き込まれなくなる。

プロパティ説明
msgログメッセージ
hostnameホスト名
fromhostログを送信したホストのホスト名
fromhost-ipログを送信したホストのIPアドレス
syslogfacilityファシリティ(数字)
syslogfacility-textファシリティ(テキスト)
syslogseverityプライオリティ(数字)
syslogseverity-textプライオリティ(テキスト)
条件式説明
contains文字列がプロパティの内容と一部一致
isequal(==)文字列がプロパティの内容と完全に一致
startswith文字列がプロパティの内容と前方一致
出力先説明
-syslogデーモンがログ書き出しの時、ディスクキャッシュの強制出力を行わない。
物理ディスクに書き込まれていない状態でサーバーが突然停止した場合、ディスクキャッシュ上のログは失われる
/dev/nullログを破棄(出力しない)
/dev/consoleコンソールにメッセージを出力する
/dev/tty1端末tty1にメッセージ出力
@ホスト名リモートホストへログを転送
ユーザー名指定したユーザーの端末にメッセージ表示
*全ユーザーに通知
ファシリティ説明
kern (0)カーネルのログ出力
user (1)ユーザープロセスの出力
mail (2)メールシステムの出力
daemon (3)各種デーモンによる出力
auth (4)認証システムによる出力(authprivの利用を推奨)
syslog (5)syslog機能による出力
lpr (6)印刷システムによる出力
news (7)ニュースサービスのログ出力
uucp (8)uucp転送を行うプログラムのログ出力
cron (9)cronによる出力
authpriv (10)認証システムによる出力(authとは出力結果が異なる)
ftp (11)FTPログ
local0〜local7 (16〜23)独自の設定
プライオリティ説明
emerg (0)危機的な状態
alert (1)早急な対処が必要
crit (2)危険な状態
err (3)一般的なエラー
warning (4)システムからの警告
notice (5)システムからの重大な通知
info (6)システムからの情報
debug (7)デバッグ情報
none指定したファシリティを除外(ログ出力させないようにする)

テンプレート

テンプレートを作成することで、ログ出力のフォーマットを独自にカスタマイズ出来る。

【書式】$template テンプレート名, ログフォーマット
ログフォーマット説明
msgログメッセージ
hostnameログを出力したホストの名前
fromhostログを受け取ったホストの名前
programnameプログラム名
syslogfacilityファシリティ(数字)
syslogfacility-textファシリティ(テキスト)
syslogseverityプライオリティ(数字)
syslogseverity-textプライオリティ(テキスト)
syslogprioritysyslogseverityと同等
syslogpriority-textsyslogseverity-textと同等
timegeneratedログを受け取った日時
timereportedログが出力された日時
timestamptimereportedと同等
$now現在時刻(書式:YYYY-MM-DD)
$year現在の年(4けた)
$month現在の月(2けた)
$day現在の日(2けた)
$hour現在の時(24時間表記、2けた)
$minute現在の分(2けた)
(例) /var/log/messageにファシリティとプライオリティを出力する
$template mytemplate,"%timegenerated% %hostname% [%programname%.%syslogfacility-text% %syslogpriority-text%] %msg%\n"
*.info;mail.none;authpriv.none;cron.none                /var/log/messages;mytemplate
(例) ファシリティがlocal4 且つ、127.0.0.1以外からメッセージを受信したログを timeformatで指定した形式で /var/log/test.logに書き込む
$template timeformat, "%timegenerated%,%msg%\n
if ($syslogfacility-text == 'local4') and not ($fromhost-ip == '127.0.0.1') then /var/log/test.log ; timeformat

参考1:https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/7/html/system_administrators_guide/s1-basic_configuration_of_rsyslog
参考 :http://www.geocities.jp/yasasikukaitou/rsyslog-filter.html

 

/etc/anacrontab

/etc/cron.d/0hourly ファイルにて1時間に1回、/etc/cron.hourlyフォルダのファイル内にある /etc/cron.hourly/0anacron にて
/usr/sbin/anacronコマンドを実行することで、anacrontab の中身が実行される。
anacronはrootユーザーのみ編集でき、指定した時間の間で実行される。正確な時間に実行されるcronとは別物。

# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=45
# the jobs will be started during the following hours only
START_HOURS_RANGE=3-22

#period in days   delay in minutes   job-identifier   command
1                 5                  cron.daily       nice run-parts /etc/cron.daily
7                 25                 cron.weekly      nice run-parts /etc/cron.weekly
@monthly          45                 cron.monthly     nice run-parts /etc/cron.monthly
説明
RANDOM_DELAYここで指定した時間(0〜指定した時間)の範囲でランダムに実行時間を遅延する(delay in minutes +(0〜RANDOM_DELAYの乱数)分の待った後に実際のジョブは実行される)
START_HOURS_RANGEジョブ実行を許可する時間。範囲外の場合はジョブが実行されない
period in days指定した日数以上経過している場合に実行される
delay in minutes実行される際、何分後に実行するか指定(コマンド実行されてからの遅延時間)
job-identifier/var/spool/anacron/配下にあるファイル名に実行時のタイムスタンプを記録。この時刻を元に前回実行時からperiod in days経過しているか確認する
command実行されるコマンド
 

/etc/chrony.conf

NTPの設定ファイル。chronyc sources コマンドで同期状態が確認できる。

server <NTPアドレス> [オプション]
オプション説明
minpool最小の同期間隔。設定値のべき乗の秒数。4なら16秒毎に同期
maxpool最大の同期間隔。設定値のべき乗の秒数。4なら16秒毎に同期
iburst起動時に同期間隔を無視して2秒間隔で4回同期する
prefer優先的に使いたいNTPサーバーを指定
設定値説明
makestep 秒 回数指定した秒数ずれてたらSTEPモード(一気に時刻修正)を3回実行する
leapsecmode slew時刻修正をSLEWモード(徐々に修正)する
 

/etc/pam.d

【書式】 タイプ コントロール モジュール [パラメータ]
タイプ説明
auth認証を許可するかどうか。ユーザが本物であるかをパスワードなどの入力によって確認
accountパスワードの有効期間や認証時の時間などでアカウントの有効性をチェック authとセットで使用
password認証方法を変更するメカニズムを提供。通常はパスワードの設定/変更する場合
sessionユーザの認証前または認証後で実行することを指定

コントロールフラグ
戻り値=アクション の書式で定義する

戻り値説明
user_unknownユーザーが不明
new_authtok_rqd新しい認証情報が必要
success成功
ignore認証モジュールを無視
default戻り値のない場合の暗黙の戻り値
アクション説明
ignoreこの行の戻り値を無視する
badこの行で処理失敗となったときは、後に続く行の処理結果についても失敗とみなす
diebadと同様で、かつその行で終了となる
ok前の行で成功であった場合は、この行の戻り値で上書きする
doneokと同様で、かつその行で終了となる
resetこれまでの状態をリセット、次の行からやり直す
数値指定した行数進む(空白行は?→要検討)
コントロール説明
requisite[success=ok new_authtok_reqd=ok ignore=ignore default=bad]
成功/失敗に関わらず、次のモジュールを実行する。すべてのモジュールで成功しないと、失敗の扱いとなりログインは失敗する。
required[success=ok new_authtok_reqd=ok ignore=ignore default=die]
上記と同じだが、失敗しても同じタイプのモジュールを全て経由してから拒否
sufficient[success=done new_authtok_reqd=done default=ignore]
この行で成功したら、認証成功として即終了する
optional[success=ok new_authtok_reqd=ok default=ignore]
この行での処理結果は問わない。認証の成否に関係ない処理を実行
include別のPAM設定ファイルにある処理を実行する

モジュール
/lib/security 配下に存在する

モジュール説明
pam_cracklib.soユーザが指定したパスワードが条件に適合しているかチェック(passwdコマンド時のチェック)
(例) pam_cracklib.so difok=2 minlen=8 dcredit=-2 ocredit=-2 retry=3
 Xcreditの値はマイナスにすること
pam_pwquality.sopam_cracklib.soの変わりに使用する。RedHat7以降はこちらを利用するようになった
pam_env.soユーザーログイン時の環境変数を初期化させる
pam_echo.so
pam_deny.so認証に対し常に失敗を返す
pam_limits.soユーザーの利用できるリソースを制限する
pam_listfile.soファイルの内容に基づきサービスを許可または拒否する
pam_nologin.so/etc/nologinファイルがあれば一般ユーザーのログインを拒否する
pam_rootok.soそれ以上チェックせずrootユーザーによるアクセスを許可する
pam_securetty.so/etc/securettyファイルに記載された端末のみrootログインを許可
pam_succeed_if.so特定のアカウント属性をチェックしてサービスを許可。(例) auth requisite pam_succeed_if.so uid >= 500 quiet
pam_unix.so通常パスワード認証を行う (例) session optional pam_echo.so Hostname is %h!
pam_warn.so認証時とパスワード変更時にログ出力する
pam_wheel.soroot権限でのアクセスをwheelグループメンバーのみに制限する

個別ファイル
/etc/pam.d/system-auth  ※ パスワード変更の時に使われるみたい(またはtelnet接続)
/etc/pam.d/password-auth ※ SSH認証の際に使われる(パスワード変更では使われない、なんでpasswordがあるんだろうか)
(設定例)

auth required pam_env.so
# ログイン認証4回失敗したら、30分アカウントロック
auth required pam_tally2.so deny=4 unlock_time=1800
auth sufficient pam_unix.so nullok try_first_pass
auth requisite pam_succeed_if.so uid >= 1000 quiet_success
auth required pam_deny.so

account required pam_unix.so
account sufficient pam_localuser.so
account sufficient pam_succeed_if.so uid < 1000 quiet
account required pam_permit.so

password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=
# remember=4 パスワードは過去4回使用したものは利用できない
password sufficient pam_unix.so remember=4 sha512 shadow nullok try_first_pass use_authtok
password required pam_deny.so

session optional pam_keyinit.so revoke
session required pam_limits.so
-session optional pam_systemd.so
session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session required pam_unix.so"
 

/etc/resolv.conf

【書式】 オプション 設定値
オプション説明
nameserverリゾルバが問い合わせるべきネームサーバのIPアドレス (最大3エントリ)
domainホストが属するローカルドメイン名を記述
DNSに問い合わせた際、失敗した場合ここに記述されたドメイン名を補完して再度名前解決を試みる
searchdomainを複数指定できる。serch ドメイン名 ドメイン名‥‥

Fedora Core 10以降は、/etc/sysconfig/network-scripts/ifcfg-eth<No> に DNS1="IPアドレス"を記載しないと再起動の度に初期化されるっぽい。

 

/etc/logrotate.conf

ログローテーションを実行するlogrotateコマンドの設定ファイル
通常は /etc/cron.daily/logrotate にて 毎日cronによりlogrotateコマンドを実行する
/etc/cron.daily/フォルダ内のファイル自体は、/etc/crontab、CentOS6以降は/etc/anacrontab で定義されている
手動でlogrotateコマンドを実行することで即時ローテーションさせることが可能
ローテーションの履歴は /var/lib/logrotate/logrotate.status を確認すれば解る
ローテーションさせたいファイルをワイルドカードで指定する
/var/log/*/*.log といった指定も可能。/var/log/配下にあるディレクトリの更に下にある.logで終わるファイルが対象

設定説明
weekly1週間ごとにローテーションする。毎日はdaily、毎月はmonthly
rotate 44世代ローテーション。現行ログ+4世代なので実際は5ファイル作成される。0または未記入はローテーションされず削除
create新規ログファイルをローテーションした直後に作成する
compressローテーションしたログを圧縮する
include各ログファイルの設定がおかれているパス。/etc/logrotate.d/*.conf
呼び出しもとのファイルの設定は、そのまま継承され、同じパラメータは上書きされる
ファイル {〜}ファイル(絶対パス)をグローバル設定と異なるローテーションをさせたい場合などに記述
ファイルはスペース区切りで複数記述可能。includeで指定したファイルに記述することも出来るし、当該ファイルに記述することも可能
sharedscriptspostrotate 〜 endscript内に記述したスクリプトはログファイル切り替え完了後、1度だけスクリプト起動するようにする
sharedscripts がないと,各ログ毎にスクリプトを実行してしまう
1ファイルのみなら記述しなくても良い
missingokログファイルが見つからなかった場合、エラーメッセージを出力せずに次のログファイルの処理に遷移する

Apacheのログローテーションの設定例

/usr/local/apache2/logs/access_log /usr/local/apache2/logs/error_log {
      weekly
      rotate 4
      missingok
      sharedscripts ←access_logとerror_logがローテーションされた後に
      postrotate    1度だけpostrotate〜endscriptのコマンドを実行する
          /bin/killall -HUP `cat /usr/local/apache2/logs/httpd.pid 2>/dev/null` 2> /dev/null
      endscript
} 


/usr/lib/tmpfiles.d/*.conf

自動的なファイル生成/削除する以下のサービスで使用する設定ファイル
systemd-tmpfiles-clean.service
systemd-tmpfiles-setup-dev.service
systemd-tmpfiles-setup.service

/etc/tmpfiles.d/配下に、まったく同じファイル名があった場合は、そちらのファイルの設定が優先される(/usr/lib/tmpfiles.d/配下のファイルは無視される)

  • フォーマット
    属性 フォルダ or ファイル  権限 UID GID 間隔 引数
    
    (例) ディレクトリがない場合は、755の権限で作成する(ディレクトリがあっても権限は755に書き換わる)
     d  /var/log 755 - - -
    (例) ディレクトリにkitaユーザーにrwx権限を与える(拡張ACL設定)
     a+ /var/log - - - - user:kita:rwx
    フォーマットや属性の詳細は man tmpfiles.d 参照。

/proc/meminfo

設定値説明
MemTotalシステム全体で利用できる物理メモリの総容量。システム起動時に計算される。その後、この値が変化することはない
MemFreeシステム全体で利用できる物理メモリの空き容量
Buffersファイルなどのメタデータとして使用している物理メモリの総容量
Cachedファイルデータのキャッシュなどに使用している物理メモリの総容量。共有メモリは Cached に加算される。SwapCachedは含まない
SwapCached物理メモリ上にキャッシュされたスワップページの総容量
Active最近アクセスした(とカーネルが思っている)物理メモリの容量 Active(anon)+Active(file)
Inactive最近アクセスしていない(とカーネルが思っている)、解放してよい物理メモリの容量 Active(anon)+Active(file)
Active(anon)最近アクセスしたAnonymousメモリ(プロセスが中間データなどを書き込む為に一時的に利用するメモリ領域)
Inactive(anon)最近アクセスしてないAnonymousメモリ
Active(file)最近アクセスしたFile-backedメモリ(同じデータがDISKに同時に存在しているメモリ、例えばHDDからファイルをReadした時など)
Inactive(file)最近アクセスしてないFile-backedメモリ
HighTotalHighmem領域にある物理メモリの容量。
x86アーキテクチャ(32bit)にのみ存在し、通常、896Mbytesを超える物理メモリはこの領域で扱われる
HighFreeHighmem領域にある物理メモリの空き容量。x86アーキテクチャ(32bit)のみ存在
LowTotalLowmem領域にある物理メモリの容量(MemTotal-HighTotal)の値。
x86アーキテクチャ(32bit)の場合、0xc0000000〜0xf8000000の間の896MBytesの範囲。
x86_64アーキテクチャ(64bit)の場合、すべてのメモリがLowmem領域で扱われる
LowFreeLowmem領域にある物理メモリの空き容量。(MemFree-HighFree)の値
SwapTotalスワップ領域の総容量。使用/未使用にかかわらずすべてのパーティション/ファイルのスワップ領域が含まれる。
swapon/swapoffコマンドによるスワップ領域の増減も反映される
SwapFreeスワップ領域の空き容量。使用しているすべてのスワップ領域の空きと未使用のすべてのスワップ領域が含まれる
Dirtyファイル書き込みを行った直後で、ディスクとの同期が取れていない物理メモリの総容量
Writebackディスクへ書き出し中の物理メモリの総容量
Mappedページテーブルに登録されている物理メモリの総容量。ページキャッシュと無名ページの両方が含まれる。
最近のカーネルでは、AnonPagesとMappedに分離
Slabスラブアロケータ(メモリ割り当て時、部分的に使用中のページがあればそこから優先的にメモリを割り当てる仕組み)で使用されている物理メモリの総容量
duコマンドを実行すると、ディレクトリやファイル名とi-nodeを紐付けるのをキャッシュする為、inode_cache、dentry_cacheが増加する
slabtop コマンドでSlabキャッシュの情報が確認できる。/proc/slabinfoでも確認可能
CommitLimit仮想メモリを取得できるかどうかの判断に使われる閾値。
((vm.overcommit_ratio×物理メモリ量)+スワップ量)の値。
vm.overcommit_memory=2のときにのみ使われる。vm.overcommit_memory=0 or 1のときにはまったく関係ない
Committed_AS全プロセスによって確保された仮想メモリの総容量。
vm.overcommit_memory=2のときにこの値がCommitLimitより大きいとメモリ不足と判定され、malloc()などが失敗する
PageTablesページテーブルエントリで使用されている物理メモリの容量
VmallocTotalvmalloc()で利用可能な仮想メモリ領域の容量。x86_64アーキテクチャの場合、定数
VmallocUsedvmalloc()で確保された物理メモリ領域とMMCONFIGで確保しているメモリ領域の総容量
VmallocChunkvmalloc()で確保された仮想メモリ領域のfree領域の中で最も大きい連続領域の容量
HugePages_Totalhugepageとして確保された物理メモリの総量
HugePages_FreeHugePages_Free
HugepagesizeHugepagesize

物理メモリの合計

MemTotal = MemFree + Active + Inactive + Slab + VmallocUsed(※)+ PageTables

※以下の結果になった場合、カーネルが仮想メモリとして256MB予約しており、この値が足されている為、256MB引く必要がある

dmesg | grep MMCONFIG
PCI: Using MMCONFIG


 

/proc/<PID>/status

プロセスのメモリ使用状況の詳細

項目説明
VmPeakこれまでの論理アドレス最大使用量
VmSize論理アドレスのサイズ
VmLckロックされている(スワップアウトされない)メモリのサイズ(mlockのサイズ)
VmHWMこれまでの物理メモリの最大使用量
VmRSS物理メモリのサイズ
VmDatadataセグメント(動的仮想メモリ領域)のサイズ
VmStkスタックのサイズ
VmExetextセグメント(実行ファイル)のサイズ
VmLibロードされたライブラリのサイズ
VmPTEページテーブルのサイズ

トップ   編集 凍結解除 差分 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2020-10-14 (水) 14:06:42 (17d)