Linux

現在つながっているブロックデバイスのパーティション一覧を見やすく表示するコマンド

Linuxマシンで挿したUBSメモリがどのデバイスファイルに割り当てられているかを調べたいときによく使うコマンドは tail | dmesg fdisk -l /dev/sdb /sbin/hdparm -i /dev/sdb あたり. ただ,見にくかったり,sda,sdb,sdc...と1つずつ指定しなければならな…

LinuxのTCPのウィンドウサイズの設定値

Linux 3.3.4でのデフォルトの設定値をメモ. 数値は[min, default, max]の意味. この値にから,TCPのウィンドウサイズは,デフォルトは16KBから始まって,4KBから4MBの間で調整される. これより,TCPを用いて通信を行う場合,最大で4MBのバースト転送が発…

Linuxのシェル上でawkを使って最大値,最小値,平均を求める

以下のような内容のファイルがあった時,2列目の数値の最大,最小,平均をawkで求める.a 211 b 342 c 643 d 289 最大:cat file | awk '{if(m<$2) m=$2} END{print m}' 最小:cat file | awk 'BEGIN{m=1000000} {if($2 != "" && m>$2) m=$2} END{print m}' …

Linuxカーネルの変更点(3.3,3.4)

Linux カーネル 3.3 と 3.4 の紹介 http://www.ibm.com/developerworks/jp/linux/library/l-33linuxkernel/

Linuxコマンド:printf

何気なくシェルの自動補完で"p"から始まるLinuxコマンド一覧を眺めていたら,"printf"なんてコマンドが! >printf "%s 0x%x\n" "this is printf" 1024 >this is printf 0x400 普通にprintfできる!! 以上!・・・実は有名コマンドだったり?

qemu-kvm上のLinuxをKGDBを使ってデバックする:Fedora17の場合

1.qemu-kvm上にゲストOSとしてFedora17をインストール。 2.自分でビルドしたカーネルをゲストOSにインストール(ビルドオプションは下記リンク参照) 3.GRUB2のカーネルのブートパラメータを変更(下記リンク2つ目を参照) 4.qemu-kvmを-sオプションをつけて起動…

printkの出力先はカーネルのバッファ(=メモリ)

printk処理の(時間的な)オーバーヘッドを知りたくて、調べてみた。 printkの直接の出力先は、"log_buf"というバッファ(=メモリ)。 →カーネルのソース「kernel/printk.c」で定義されている /var/log/messagesのようなファイルへの書き込みは、ユーザプロセス…

Linuxカーネルのネットワーク処理

送信で重要な関数:dev_queue_xmit 受信で重要な関数:netif_receive_skb受信処理のコールスタック・例 do_softirq __do_softirq net_rx_action e1000e_poll e1000_clean_rx_irq e1000_receive_skb napi_gro_receive dev_gro_receive napi_skb_finish netif_…

Linuxの関数トレース(ftrace)は面白い!

Linuxカーネルのftrace機能は、カーネル内での処理の流れを知りたいときにとても便利! カーネル内で実行されたほぼすべての関数を時系列順に知ることができる。 さらに追加情報として、PIDやプロセス名、遅延時間(処理時間)なども取得されていて、おぉ!こ…

LinuxでRAMディスクを使ってみる

RAMディスクにLinuxカーネルのソースとかを置いてビルドしたら早いと思って調べてみた。 作成方法↓ >mount -t tmpfs -o size=256m /dev/shm /mnt/ramdisk 書き込み速度比較↓ [XX@YY tmp]$ dd if=/dev/zero of=/tmp/tmptmp bs=1M count=250 250+0 records in …

qemu-imgって色々できるんだ

"create"で仮想ディスクの作成だけじゃなく、"info"で情報の取得 >qemu-img info win8.img image: win8.img file format: raw virtual size: 20G (21474836480 bytes) disk size: 0"convert"でファイルフォーマットの変更、"resize"でサイズを変更、"snapsho…

gccやgem(ruby)など複数インストールされているアプリケーションのバージョンを切り替える(update-alternatives)

28.3. update-alternatives コマンドの使い方 http://vinelinux.org/docs/vine5/manuals/update-alternatives-3.html

virt-managerでroot以外の一般ユーザで実行できるようにする

CentOS 6.2 上のKVMをリモートのvirt-managerから操作する - 気ままにインフラエンジニア http://oopsops.hatenablog.com/entry/2012/02/29/220417

tremaとOpen vSwitchの使い方メモ

インストール後・・・ --- Open vSwitch --- ブリッジを追加する ovs-vsctl add-br br0 ovs-vsctl add-port br0 em1 ovs-vsctl add-port br0 em2 確認 ovs-vsctl list-ports br0 OpenFlowのフローエントリを確認 ovs-ofctl dump-flows br0 OpenFlowコントロ…

LinuxのIPv6無効化メモ

検索するといろいろやり方が出てきちゃうけど、Fedora17ではこれだけやればoffにできた。とりさんダイアリー。: Fedora16 IPv6の無効化する http://ham-ns.blogspot.jp/2012/04/fedora16-ipv6.html

CentOSへtmuxをインストール

Tmux Installation on CentOS http://freevps.us/thread-4311.html

Linuxのパケット受信の流れ

Kernel/VM Advent Calendar 4日目: Linuxのネットワークスタックのスケーラビリティについて - 驟雨のカーネル探検隊(只今遭難中w http://d.hatena.ne.jp/syuu1228/20101210/1291941459

sk_buff *skbのデータ長skb->lenとskb->data_lenについて

skb->data_len == 0 の時は、パケットのデータにリニアにアクセスできる。 つまり、skb->data[i] (i=0..skb->len)ですべてのデータを読み出せる。skb->data_len != 0 の時は、パケットのデータがフラグメント化されているので、上記のようにリニアには読み出…

Linuxカーネルでstruct net_deviceの一覧を取得する

struct net init_netがグローバル変数で宣言されているので、これを利用するらしい。 #include <linux/netdevice.h> struct net_device *dev; dev = first_net_device(&init_net); while (dev) { printk(KERN_INFO "found [%s]\n", dev->name); dev = next_net_device(dev); }Ge</linux/netdevice.h>…

tc,iptablesの使い方メモ

# tc qdisc add dev em1 root handle 1: htb default 30# tc class add dev em1 parent 1: classid 1:1 htb rate 6mbit burst 15k# tc class add dev em1 parent 1:1 classid 1:10 htb rate 5mbit burst 15k# tc class add dev em1 parent 1:1 classid 1:20 …

高精度カーネルタイマ hrtimer (hrtimer_nanosleep())のソースを追う

Linuxカーネル3.4.10 hrtimer_nanosleepはここ。 初期化後起動されるdo_nanosleepがnanosleep処理本体。 [kernel/hrtimer.c] 1580 long hrtimer_nanosleep(struct timespec *rqtp, struct timespec __user *rmtp, 1581 const enum hrtimer_mode mode, const …

clock_nanosleep()のソースを追う

Linuxカーネル 3.4.10 clock_nanosleepはシステムコールだそうです。[kernel/posix-timers.c] 1035 SYSCALL_DEFINE4(clock_nanosleep, const clockid_t, which_clock, int, flags, 1036 const struct timespec __user *, rqtp, 1037 struct timespec __user …

Linuxカーネル中のtrace_*系関数の定義場所

trace_net_dev_xmitとかtrace_net_dev_queueとか、trace_???系の関数はソースコードをgrepしても定義が見つからない。 と思ったら、include/trace/eventsあたりにマクロで定義されていた。 ftraceで使うみたい。

LinuxからWindowsにリモートデスクトップする

linuxでリモートデスクトップ http://blog.asial.co.jp/509

TopコマンドTips

topコマンドでマルチコアなCPUの状況を確認する http://d.hatena.ne.jp/rx7/20080802/p3topコマンドの使い方・見方 | Linuxで自宅サーバ構築 http://linuxserver.jp/Linux/top%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89.php

Linuxでパケットフィルタリング、QoSとか

パケット・フィルタリングとQoS機能 http://itpro.nikkeibp.co.jp/article/COLUMN/20080520/303192/[iptables] 192.168.11.1向けのTCPパケットのDSCP値を1に設定 iptables -A OUTPUT -t mangle -p tcp -d 192.168.11.1 -j DSCP --set-dscp 1

Linux上でのDiffServの実装方法

tc(traffic control)のDSMARKを使う http://www.lartc.org/howto/lartc.adv-qdisc.dsmark.htmltcのフィルターの使い方例 http://linuxjf.sourceforge.jp/JFdocs/Adv-Routing-HOWTO/lartc.qdisc.filters.html

Open vSwitchを導入してみる

OBDNマガジン: 小野秀貴: Open vSwitch によるOpenFlow の利用 http://obdnmagazine.blogspot.jp/2012/03/open-vswitch-openflow.htmlOpenv switchの使い方とか http://www.slideshare.net/kotto_hihihi/openv-switch

PCIバスデバイスの情報を表示するコマンド

lspciイーサネットデバイスやHDDなどのデバイスの情報がわかる。yum pciutils でインストールできる

LinuxのGUI版diffツール

Meld http://meldmerge.org/