Technical Knowledge

目次

Linux

[OS]

再帰的に同名のディレクトリを削除する。

# find ./ -type d -name CVS -exec rm -rd {} \;

or

# find ./ -type d -name CVS -print | xargs rm -rd

<2005-08-03 水>

特定の文字にマッチした行だけ tail で表示する。

# tail -f ファイル | grep パターン

<2006-02-15 水>

HDD の容量を調べる。

–h オプションで単位が見やすくなる。

# df -h

<2006-06-02 金>

ctrl + alt + del でのシャットダウンを制御する。

  • /proc/sys/kernel/ctrl-alt-del を編集。
  • /etc/sysctl.conf を編集。

<2007-08-20 月>

ポートを開いてるプロセスを調べる。

# lsof
# fuser -n [tcp/udp] ポート番号

<2007-08-20 月>

ファイルを使用しているプロセスを調べる。

# fuser ファイルパス

<2008-08-22 金>

ハードウェアリソースの状況を調べる。

# sar
# vmstat
# iostat
# ipcs
# free

<2006-09-21 木>

プロセスが使っている動的ライブラリを調べる。

/proc/プロセス ID/maps の中に、メモリ状態が表示される。


<2006-10-10 火>

ライブラリのシンボルの一覧を取得する。

# nm -A --defined-only lib*.{a,so}

<2007-10-16 火>

共有ライブラリの動的リンカの名前を取得する。

# readelf -l バイナリファイルパス | grep interpreter

<2007-10-26 金>

Runlevel.

/etc/inittab 参照。

現在の Runlevel を確認するには

# runlevel
Runlevel 内容
0 シャットダウンシーケンスの開始。
1 シングルユーザーモード(管理者モード:以外のログインは不可)。O/S等のメンテナンス時に使用。
2 マルチユーザモード(NFSなし)。ログイン画面はCUI(テキストの画面)。
3 フルマルチユーザモード( 2 + NFS )
4 未使用(独自のrunlevel設定可)。PlamoLinux の場合、xdm(X Display Manager)の X-window only で起動。
5 X11の使用。
6 リブート。

<2007-12-07 金>

ssh, scp 等の接続が遅い。

クライアントの名前解決ができないため。hosts の設定もしくは DNS の設定を行う。


<2008-01-10 木>

ISO イメージ操作。

イメージを作成。

マウントせずに

# dd if=/dev/cdrom of=/tmp/label.iso

イメージを読み込み。

# mount -t iso9660 -o loop /tmp/label.iso /mnt/cdrom

<2008-04-01 火>

コンソールのキーマップを変更。

/usr/lib/kbd/keymaps や /usr/share/kbd/keymaps 以下のキーマップを指定する。

# keyload jp106

<2008-08-13 水>

カーネルのアップデート。

  1. 新しいカーネルソースを展開。

    # cd /usr/src
    # tar xvf linux-Version.tar.gz
    # make mrproper
    
  2. 元のコンフィグファイルをコピー。

    # cd linux-Version
    # cp /boot/config ./.config
    
  3. 元のコンフィグファイルを元に再設定。

    # make oldconfig
    
  4. コンフィグファイルの追加設定。

    # make menuconfig
    
  5. 同バージョンでの再コンパイル時はバージョン名の変更。

    変更前 変更後
    VERSION = 2 VERSION = 2
    PATCHLEVEL = 6 PATCHLEVEL = 6
    SUBLEVEL = 23 SUBLEVEL = 23
    EXTRAVERSION = EXTRAVERSION =test
  6. コンパイル。 2.4 の場合(make bzImage, make modules を個別に実行と同じ)

    # make dep
    # make
    

    make オプション

    オプション 内容
    mrproper 現在のコンフィグレーションファイル .config と、前回のカーネルコンフィグレーションで生成されたすべてのファイルを削除して初期状態に戻す。トーバルス氏が、欧州で知られている Mr.Proper というクリーニング製品の名前にちなんで付けたとのこと。
    config 設定項目1つ1つについて、順番に対話的に尋ねてくる、最もシンプルな形式。
    menuconfig curses ライブラリを利用した、端末ベースのメニュー形式のインターフェイス。
    xconfig Qt ベースの GUI ツール。
    gconfig Gtk ベースの GUI ツール。
    oldconfig 既存の .config をデフォルトとして、新しい定義が必要な項目がある場合のみ、尋ねてくる。
    defconfig arch/$ARCH/defconfig をデフォルトとして、.config を生成する。
    dep dep は dependency の意味で、プログラムの依存関係を記述する .depend ファイルと、ヘッダファイル間の依存関係を記述する .hdepend ファイルを、この手順で前もって作成しておく。
    depend dep と同じ。
    bzImage bzImage を作成。
    zImage zImage を作成。
    modules modules を作成。
    無し make bzImage、make zImage あるいは make modules を実行と同じ。
    modules_install /lib/modules/カーネルバージョン(例:/lib/modules/2.6.23.1-42.fc8)ディレクトリを作成し、その下にサブディレクトリに分類してカーネルモジュールをコピーする。また、モジュールのパスと、モジュールの依存関係を記述したmodules.dep ファイルを生成する。
    install このコマンドは /lib/modules/カーネルバージョン(例:/lib/modules/2.6.23.1-42.fc8)ディレクトリを参照するので、make modules_install を実行しておく。/boot の下に bzImage を vmlinuz としてコピーし、System.map をコピーし、 initrd を生成する。また、/boot/grub/grub.conf に新しく生成したカーネルのエントリを追加する。
    headers_check カーネルヘッダインストールチェック。
    headers_install カーネルヘッダーインストール。
  7. インストール。

    # make modules_install
    # make install
    
  8. ブートローダが LILO の場合、/boot/map ファイルを更新する。

    # /sbin/lilo
    

<2008-09-11 木>

fdisk 後デバイスファイルが存在しない。

再起動が必要。 再起動で udev により作成される。 手動で行う場合、/dev/sda5 を作成。

# ls -la /dev/sda?
brw-r----- 1 root disk 8, 1 Apr 29 1995 /dev/sda1
brw-r----- 1 root disk 8, 2 Apr 29 1995 /dev/sda2
brw-r----- 1 root disk 8, 3 Apr 29 1995 /dev/sda3
brw-r----- 1 root disk 8, 4 Apr 29 1995 /dev/sda4
# mknod /dev/sda5 b 8 5
# chown root.disk /dev/sda5
# chmod 0640 /dev/sda5

<2008-09-12 金>

cat でファイルを作成する。

環境変数を展開する。

# cat > /tmp/file1 <<EOM
echo $PATH;
EOM

環境変数を展開しない。

# cat > /tmp/file1 <<'EOM'
echo $PATH;
EOM

<2008-10-07 火>

デバイスにラベルをつけてマウントする。

CentOS 系

現在つけられているラベルを確認。

# ls /dev/disk/by-label

ラベルを作成。

# e2label デバイス名 ラベル名
# e2label /dev/hda1 /boot

現在つけられているスワップラベルを確認。

# cat /proc/swap

スワップにラベルを作成。

# mkswap -L ラベル名 デバイス名
# mkswap -L SWAP /dev/hda2

fstab の設定。

LABEL=/boot             /boot                   ext3    defaults        1 2
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
LABEL=SWAP              swap                    swap    defaults        0 0

<2008-10-24 金>

起動時のカーネルオプションを確認する。

# cat /proc/cmdline

<2008-10-24 金>

netstat -nap でプロセス名が「-」になっている。

portmap による割り当てポートのため。NFS 等で使用されている。

# rpcinfo -p

<2008-11-13 木>

DHCP クライアントの設定。

DHCP での取得に失敗し eth0 の読み込みができない場合。

# /sbin/dhclient
# ifconfig eth0

DHCP での取得に失敗し eth0 の読み込みができない場合。

/etc/dhclient.conf を設定。


<2009-02-04 水>

rsh の許可設定。

rsh 接続の許可設定。

/etc/hosts.equiv に許可するホスト名とユーザを記入する。

root での接続の許可設定。

# echo rsh >> /etc/securetty # rsh を追加

<2009-02-04 水>

時刻合わせ。

# ntpdate NTPサーバ

the NTP socket is in use, exiting が出る場合

–u オプションを使用

# ntpdate -u NTPサーバ

または、サービスを一時停止する。

# service ntpd stop
# ntpdate time-nw.nist.gov
# service ntpd start

ハードウェア時計を設定。

# hwclock --systohc

<2009-02-04 水>

ローカルポートの範囲を取得する。

# cat /proc/sys/net/ipv4/ip_local_prot_range

<2009-02-04 水>

ハイフンから始まるファイル名等を扱う。

フルパスや、「./」を使用した相対パスにする。

# rm ./-file

「–」を付ける。

# rm -- -file
# grep -- '-Wall' file

<2009-04-22 水>

PCI バスのデバイスの一覧とドライバを表示する。

# lspci -vvx
# lsmod

<2009-05-15 金>

ls で日本語ファイル名を表示する。

# ls --show-control-chars

<2009-06-30 火>

デバイスファイルのメジャー、マイナー番号一覧を表示する。

# less /usr/src/linux/Documentation/devices.txt

<2009-11-05 木>

カーネル起動パラメータを表示する。

# less /usr/src/linux/Documentation/kernel-parameters.txt

<2009-11-17 火>

mail コマンドで from を指定する。

— -f オプションを使用する。

# mail to@example.com -- -f from@example.com

<2011-08-04 木>

システムリソースの使用状況を見る。

  • ネットワーク

    # dstat -n 5
    

<2012-09-17 月>

grep の色付き結果を less で表示する。

  • grep に -—color=always を指定
  • less に -R を指定
# grep --color=always ... | less -R

<2012-09-26 水>

大量 swap 後に swap 領域を解放する

  • swapoff でメモリに移動
  • swapon でスワップを有効にする
  • メモリが足りない場合、swapoff が失敗するのでプロセス終了等でメモリを解放する
# swapoff -a
# swapon -a

<2015-08-05 水>

CentOS

[ディストリビューション]

バージョンを確認。

# cat /etc/redhat-release

<2010-03-08 月>

ArchLinux

[ディストリビューション]

コマンドがどのパッケージに含まれるか分からない。

pkgtools を使用して探す。

ifconfig を探す場合

# pacman -S pkgtools
# pkgfile --update
# pkgfile -s ifconfig
core/net-tools

<2012-02-09 木>

Date: 2021-10-03