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回経過したときに削除される。
ld-linux-x86-64.so.2
実は実行できる。
$ ll /lib64/ld-linux-x86-64.so.2 lrwxrwxrwx. 1 root root 10 Sep 16 20:57 /lib64/ld-linux-x86-64.so.2 -> ld-2.12.so
ldd と同じ
仮想コンソール
仮想コンソール
直接筐体にログインする時などは便利なのか。 vmsareでは[Ctrl]+[Alt]+[space]を押した後[space]のみ離し、そのまま[Ctrl]+[Alt]+[F1~F5]で切り替わった。
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が主流。
運用コマンド
コマンド
ディレクトリ検索
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)