OS稼働中のカーネルパラメータ変更

一時的

  • echoで設定
    • echo > /proc/sys/
  • sysctl -w パラメータ=値
    • wはあってもなくても良いらしい。
    • /proc/sysの値を変更する

再起動で設定を失う。

恒久的

  • /etc/syscto.confを直接編集
  • その後sysctl -p コマンド実行で反映。ファイル指定しなくてもデフォルトで/etc/sysctl.conf

ログ

rsyslog

syslogd はログ情報の紛失や暗号化ができない。

次世代のやつ出てきた syslog-ngとrsyslog

CentOS6ではrsyslogを採用。Debianも。

アプリケーション – rsyslog– logファイル

loggerコマンド

logger -p mail.info mail-log

ファシリティ.プライオリティ ログメッセージ

各ログの出力先

/etc/rsyslog.conf

ファシリティとプライオリティを指定して、各ログの出力先を設定している

ログローテーション

指定したタイミングで現在のログとはまた別の新しいファイルにログを記録するようにし、その古いログを指定された期間まで保存して削除すること。

logrotate

設定ファイル

基本設定ファイル

/etc/logrotate.conf

個別設定ファイル

/etc/logrotate.d/各アプリ対応の設定ファイル

デフォルト

weekly

rotate 4

一週間ごとにログを切り替えて、それが4回経過したときに削除される。

仮想コンソール

仮想コンソール

直接筐体にログインする時などは便利なのか。 vmsareでは[Ctrl]+[Alt]+[space]を押した後[space]のみ離し、そのまま[Ctrl]+[Alt]+[F1~F5]で切り替わった。

f:id:kandataclub:20170126144051p:plain

ssh使うときは使っていない。

$ ps auxf | grep tty
xxxx      18404  0.0  0.0 103312   864 pts/3    S+   14:28   0:00              \_ grep tty
root      2712  0.0  0.0   4064   584 tty1     Ss+  09:43   0:00 /sbin/mingetty /dev/tty1
root      2714  0.0  0.0   4064   592 tty2     Ss+  09:43   0:00 /sbin/mingetty /dev/tty2
root      2717  0.0  0.0   4064   592 tty3     Ss+  09:43   0:00 /sbin/mingetty /dev/tty3
root      2719  0.0  0.0   4064   592 tty4     Ss+  09:43   0:00 /sbin/mingetty /dev/tty4
root      2721  0.0  0.0   4064   588 tty5     Ss+  09:43   0:00 /sbin/mingetty /dev/tty5
root      2723  0.0  0.0   4064   588 tty6     Ss+  09:43   0:00 /sbin/mingetty /dev/tty6

TTY

  • ttyは実端末という意味。筐体にディスプレイつなげて直接ログインした時。
  • vmwareなどでは、黒い画面を実端末として理解している。
$ tty
/dev/tty1
  • ps のttyの項目にはtty(実端末)とかpts(仮想端末)とか表示される。
  • psでtty項目が?なのは、標準入出力先の端末デバイスが指定されてないから。

PTS

ptsはsshなどの仮想端末。MACでの表示もこれだったような。

$ tty
/dev/pts/3

rloginなどを使ってsshでつなげて表示される黒い画面は、ディスプレイの中に仮想的にソフトウェアで作り上げているので仮想端末と呼ばれている。ttyは実端末という意味。

カーネルコンフィグレーション手順

カーネルコンフィグレーション手順

make mrproper

以前にソースを展開してコンフィグレーションで生成したファイルを全て削除。一回目だと必要ない。

make menuconfig

  • .configファイルを作成する。
  • 以前の設定を流用したい場合は
    • cp /boot/config-xxxxx (カーネルソースあるとこ).config
    • make oldconfig で今回での新しい設定しか聞いてこない。

make

make modules_install

モジュールを/lib/modulesにインストール

make install

カーネルを/boot下にインストール

メモ

bzimageは512KB以上のカーネルサイズに対応できる。zimageは512KB以下まで。 なのでbzimageが主流。

インクルードファイル

/usr/include

システムに標準的にインストールされているヘッダファイルの集まり。標準ヘッダファイル。

いろいろ

アプリケーション側に提供している

運用コマンド

コマンド

ディレクトリ検索

find / -type d -name ".git"

ファイル検索

$ find ./ -type f -print | xargs grep 'hoge'

-type fはファイルだけを表示

grep -r hoge ./

ファイル名一括置換

find /aaa/bbb/img -type f -name "*jpg" | sed -e s/\.jpg// | awk '{print $1 ".jpg " $1 ".png"}' | xargs -n 2 mv

xargs -n 2 引数を2つとる。空白区切り。

yum

yum history info nagios
yum history list nagios
yum check-update

sort

オプションの指定がない場合は,行頭の文字を基準としてソートし,行頭の文字が同じ場合は,2番目,3番目,n番目の文字を次々に比較する。 デフォルトだと辞書順。数字も辞書順。

  • -n

    • オプションを付けると数字は数値としてソートしてくれる。数字でないものは辞書順
  • -t separator

    • ソートの区切りとしてseparatorを使用する。separatorが指定されない場合は空白
  • -k 数値 or -k数値

    • ソート・キーの場所を設定する。ただし,先頭は1となる
  • -r

    • 逆順にソートする

sort コマンド | コマンドの使い方(Linux) | hydroculのメモ

uniq

連続した行を一つにまとめる 連続していない離れた重複行も削除したければ、sortコマンドコマンドで予めソートする必要がある。その代わり順番は保存されない。

$ cat foo.txt | sort | uniq

uniq コマンド | コマンドの使い方(Linux) | hydroculのメモ

head

デフォルトで先頭の10行

  • head -20
  • head -n 20

lsof

ファイル名指定

lsof -f -- ファイル名

ファイルシステムにアクセスしているプロセスを発見する

lsof +f -- マウントポイントorデバイス

du

du -s /* | sort -rn | awk '{print $2}' | xargs du -sh

組み合わせ

cat /etc/ntp.conf | sed 's/#.*//g' | cat -s | grep '^server' | awk '{print $2}'

cat iplist | awk '{print $1}' | sort | uniq | wc -l

cat ip_list | awk 'match($0,/\".*\"/) {print $1}' | sed -e "s/\"//g" -e "s/,//g"

tr

tr 変換対象の文字 変換文字 対象ファイル

cat /etc/ services | grep http | tr '\t' ' ' | grep ' 80/'

grep

# 後ろ4行
cat /etc/nagios/servers/elasticsearch1.cfg | grep 'Eth0 Traffic Usage' -B4
# 前4行
cat /etc/nagios/servers/elasticsearch1.cfg | grep 'Eth0 Traffic Usage' -A4
# 前後4行
cat /etc/nagios/servers/elasticsearch1.cfg | grep 'Eth0 Traffic Usage' -C4
# AとB両方指定可能
cat /etc/nagios/servers/elasticsearch1.cfg | grep 'Eth0 Traffic Usage' -B2 -A1

正規表現でマッチした箇所のみ表示

grep -o '[0-9]\{2\}/.../2017:[0-9]\{2\}:[0-9]\{2\}:[0-9]\{2\}' access_log

脆弱性パッチ対応

過去のCVE対応アップデートがわかる

$  rpm -q --changelog glibc | grep CVE
- Fix CVE-2015-8779 glibc: Unbounded stack allocation in catopen function
- Fix CVE-2015-8778 glibc: Integer overflow in hcreate and hcreate_r
- Fix CVE-2015-8776 glibc: Segmentation fault caused by passing
- CVE-2014-9761: Fix unbounded stack allocation in nan* (#1358014)