このブログを検索

ラベル linux の投稿を表示しています。 すべての投稿を表示
ラベル linux の投稿を表示しています。 すべての投稿を表示

2015/11/29

tcpdump 例

tcpdump

とりあえず動かす。
一番小さい(ifconfigで最初に表示されるinterface?)interfaceを見る。


tcpdump -i eth0 -s0 not port 22 and not arp

-i eth0 ... eth0を見る。

-s0 ... デフォルトでは先頭68バイトしかdumpしないので、全部取りたい時はこうする。

not port 22 and not arp ... ポート22とarpは除外する。portだけ指定すると送受信両方の指定になる。どちらかを限定するときは src port または dst port とする。


tcpdump -i eth0 -s0 -x not port 22 and not arp

-x: 16進数表示


tcpdump -i eth0 -s0 -X not port 22 and not arp

-X: 16進数とascii表示






tcpdump -i eth0 icmp


icmpだけを見る。



tcpdump -i eth0 src host 1.2.3.4 and not port 22

送信元が1.2.3.4で、portが22以外




tcpdump -i eth0 host 1.2.3.4


送信元或いは宛先が 1.2.3.4




tcpdump -i eth0 dst host 5.6.7.8


宛先が 5.6.7.8



tcpdump -n -i eth0 -s0 -w dump001.cap not port 22 and not arp

-n: ipアドレスを名前解決しない

-w: 出力ファイル名。このファイルをwiresharkで開ける。 tcpdump -r dump001.cap でも開ける。



tcpdump -?


引数一覧を表示



man tcpdump


マニュアルを表示

2013/05/02

psで表示した特定のプロセスをkillする

以下のようにプロセスを起動した。

bash loop.bash&

表示

ps au
# ps au
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root      1899  0.0  0.0   4060   456 tty1     Ss+  Apr21   0:00 /sbin/mingetty /dev/tty1
root      1900  0.0  0.0   4076   504 ttyS0    Ss+  Apr21   0:00 /sbin/agetty /dev/ttyS0 115200 vt100-nav
root     18518  0.0  0.1 108468  1872 pts/1    S+   13:09   0:00 -bash
root     19122  0.0  0.1 106092  1220 pts/0    S    14:27   0:00 bash loop.bash
root     19277  0.0  0.1 110232  1136 pts/0    R+   14:30   0:00 ps au


grepで特定する

# ps au|grep loop.bash
root     19122  0.0  0.1 106092  1220 pts/0    S    14:27   0:00 bash loop.bash
root     19343  0.0  0.0 107456   912 pts/0    S+   14:31   0:00 grep loop.bash


grep自体が表示されてしまうのでそれを除く

# ps au|grep loop.bash|grep -v grep
root     19122  0.0  0.1 106092  1224 pts/0    S    14:27   0:00 bash loop.bash


これでプロセスが特定できた。
kill するには以下のようにプロセス番号を指定すればよい。

kill 19122

まず、プロセス番号のみを表示する。

# ps au|grep loop.bash |grep -v grep|awk '{print $2}'
19483

xargsで渡して killする。

# ps au|grep loop.bash |grep -v grep|awk '{print $2}'|xargs kill
[1]+  終了しました      bash loop.bash


強制終了するなら

# ps au|grep loop.bash |grep -v grep|awk '{print $2}'|xargs kill -9
[1]+  強制終了            bash loop.bash


2013/05/01

備忘録

unset_linguas () {
export LC_ALL=C
export LC_MESSAGES=C
export LANGUAGE=C
export LANG=C
}

make_tmp_dir () {
local TMP_ROOT="${1:-${TMP_ROOT:-${HOME}}}"
local tmpdir=$(basename "$0")$$

tmpdir="${TMP_ROOT}/${tmpdir}"

mkdir "${tmpdir}" > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo "${tmpdir}"
chmod 700 "${tmpdir}"
else
echo "Can't create cirectory: ${tmpdir}" 1>&2
return 1
fi
}


clean_tmp_dir () {
local TMP_ROOT="${1:-${TMP_ROOT:-${HOME}}}"
local tmpdir=$(basename "$0")$$

tmpdir="${TMP_ROOT}/${tmpdir}"

if [ ! -d "${tmpdir}" ]; then
echo "No such directory: ${tmpdir}" 1>&2
return 1
fi

if [ -L "${tmpdir}" ]; then
echo "Can't delete unexpected symlink: ${tmpdir}" 1>&2
return 1
fi

rm -rf "${tmpdir}" > /dev/null 2>&1

}


#!/bin/bash

MAIL_FROM="hoge@example.com"
MAIL_TO="foo@example.com"
MAIL_SUBJECT="テストメール"
MAIL_ID="<$(date +%Y%m%d%H%M%S).$(id -ru).$$@$(hostname)>"
SENDMAIL=/usr/lib/sendmail

FILE_UTIL=util_common.bash
. "${FILE_UTIL}" 2> /dev/null \
|| . "${0%/*}/${FILE_UTIL}" 2> /dev/null
if [ $? -ne 0 ]; then
echo "Can't load ${FILE_UTIL}!" 1>&2
exit 1
fi

unset_linguas

tmpdir=$(make_tmp_dir 2>/dev/null)
if [ $? -ne 0 ]; then
echo "Can't create temporary directory!" 1>&2
exit 2
fi

SIGNALS="HUP INT QUIT PIPE TERM"
trap "{ clean_tmp_dir; exit; }" ${SIGNALS}

subject=$(echo -n "${MAIL_SUBJECT}" |
iconv -f UTF-8 -t ISO-2022-JP |
perl -MMIME::Base64 -ne 'print encode_base64($_)')

mail_data="${tmpdir}/mail_data"
cat <<EOF > "${mail_data}"
Mime-Version: 1.0
Content-Type: Text/Plain; charset=iso-2022-jp
Content-Transfer-Encording: 7bit
From: ${MAIL_FROM}
To: ${MAIL_TO}
Subject: =?ISO-2022-JP?B?${subject}?=
Message-Id: ${MAIL_ID}
Date: $(date +"%a, %e %b %Y %H:%M:%S %z")

テストメールです。
-----------------------------------------------------
UPTIME
-----------------------------------------------------
$(uptime)

-----------------------------------------------------
W
-----------------------------------------------------
$(w)

-----------------------------------------------------
FREE
-----------------------------------------------------
$(free)

EOF

iconv -f UTF-8 -t ISO-2022-JP "${mail_data}" |
"${SENDMAIL}" -oi "${MAIL_TO}" > /dev/null 2>&1

clean_tmp_dir
trap ${SIGNALS}


#!/bin/bash

select member in john paul george ringo
do
echo "You chose $member."
break
done


while :; do netstat -tp; sleep 5; done





2013/04/29

sedでファイルを更新する

sedで置換などを行う時、対象のファイルを直接更新したいときは -i のオプションをつける。
つけないと、標準出力に表示されるのみで元のファイルは変更されない。
では、元のファイルにリダイレクトすればいいのではないか?
ハイフンi をつけた時と同じ結果になるように思える。
・・・
これも考えても仕方がないのでやってみた。
結果は、「元のファイルにリダイレクトすると中身が全部消える」
であった。
これも衝撃の事実だ。
なんでそうなるのだろう・・・?

# cat x.txt
i love cats.
#
# sed s/cat/dog/ x.txt
i love dogs.
#
#
# sed s/cat/dog/ x.txt > x.txt
#
# cat x.txt
#
#
# vi x.txt
#
# cat x.txt
i love cats.
#
# sed -i s/cat/dog/ x.txt
# cat x.txt
i love dogs.
#

2013/04/28

ハードリンクを削除したらリンク先のファイルは削除されるか?

「消えるにきまってんじゃん。そうじゃなかったらシンボリックリンクとハードリンクの区別がなくなるだろ?」
と思っていた。

しかし、よく考えると、「じゃあ、ハードリンクを作成した後で、リンクだけを削除するにはどうすればよいのか?」
という問いに答えが見つからない。

・・・・

考えても仕方がないので、実際にやってみた。
結果は、「ハードリンクを削除しても、リンク先のファイルは削除されない」となった。
これは衝撃の事実である。
「ハードリンクを削除したらリンク先も削除される」と思っている人は多いはずだ。

# ls txt
a.txt  a2.txt  a3.txt  b.txt  c.txt  ex.txt  logall.txt  p.txt  x.txt  x1.txt  x2.txt
#
# ls
a.tar  bu.pl  logall  logall.gz  main.cgi  txt  unko
#
# ln ./txt/a.txt anohardlink1
# ln ./txt/a.txt anohardlink2
#
# ls
a.tar  anohardlink1  anohardlink2  bu.pl  logall  logall.gz  main.cgi  txt  unko
# ls ./txt/
a.txt  a2.txt  a3.txt  b.txt  c.txt  ex.txt  logall.txt  p.txt  x.txt  x1.txt  x2.txt
#
# rm anohardlink1
rm: remove 通常ファイル `anohardlink1'? y
# ls
a.tar  anohardlink2  bu.pl  logall  logall.gz  main.cgi  txt  unko
# ls ./txt/
a.txt  a2.txt  a3.txt  b.txt  c.txt  ex.txt  logall.txt  p.txt  x.txt  x1.txt  x2.txt
#
#
# rm anohardlink2
rm: remove 通常ファイル `anohardlink2'? y
# ls
a.tar  bu.pl  logall  logall.gz  main.cgi  txt  unko
# ls ./txt/
a.txt  a2.txt  a3.txt  b.txt  c.txt  ex.txt  logall.txt  p.txt  x.txt  x1.txt  x2.txt
#

debianでrunlevelを変更する

LPICの勉強をしていたらapt-getとかdpkgとか聞いたことのないコマンドが出てきたので、debianをインストールした。

そして、telinitでrunlevelを変更できるという事を知ったので試してみたのだが、変更できない。

telinit 3 でテキストログインになるところが、GUIログインのままなのだ。

検索してみると、debianではrunlevel 2~5は同じ扱いになることを知った。

teiinit 2とするとテキストログインになった。しかしシングルモードなので外からsshとかができない。

2013/03/20

一括置換がうまくいかない

以下のような内容のテキストファイルがある。

aaa
<br>bbb
ccc


これを、以下のように書き換えたい。

aaa<br>bbb
ccc


つまり、

「行頭の<br>」、もしくは、「改行の後の<br>」を単なる<br>に置換したい


のである。

テキストファイルは多数あり、どのファイルに置換対象があるかはわからない。

まず、grepで対象ファイルを探そうと思った。

# grep -E '\n<br>' *.txt
#


これだと検索されない。

次のようにすると検索できる。

# grep -E '^<br>' *.txt
a.txt:<br>bbb
b.txt:<br>bbb


それでは置換してみよう。

# perl -pi -e 's/^<br>/<br>/g' *.txt
#


できない。

以下のような置換はうまくいくから、正規表現の問題だろうか。

# perl -pi -e 's/bbb/orange/g' *.txt
#


「sedでやれば?」と言うかもしれない。

実は以前これをsedでやろうとしてできず、1個ずつエディタを開いて直したことがあるのだ。

perlでやればいいのかと気づいて、やってみたら、やっぱりダメだったのだ。

sedのときは以下のいずれでもダメだった。

# sed -e "s/^<br>/<br>/g" *.txt

# sed -e "s/\n<br>/<br>/g" *.txt


viでは、以下のようにして置換できる。







2013/03/07

cronだと動かなくなるpythonスクリプト

昨日直したのだがやっぱり動かない。

/var/log/messagesに以下のようなログが。

Mar  7 10:13:01 xxxxxxxx abrt: detected unhandled Python exception in '/hoge/hoge/hoge.py'
Mar  7 10:13:01 xxxxxxxx abrt: can't communicate with ABRT daemon, is it running? [Errno 2] No such file or directory

crontabで指定しているスクリプトは /hoge/hoge/hoge.shで、
/hoge/hoge/hoge.py というのは、sh内で呼んでいるpythonのスクリプトだ。
ルートディレクトリで /hoge/hoge/hoge.sh とやると動く。
hoge.pyを、print文一行だけにすると動く。
ということはpythonスクリプトの内容のせいか。
"No such file or directory" とあるが、何に対してなのか?
スクリプトの内容を変えると動くということは、
スクリプト内で開いているファイルだろう。
でも、ルートディレクトリで /hoge/hoge/hoge.sh とやって問題なく動くからな・・・・
どうしようもない・・・

これも頭の隅においとく。

2013/03/01

uniq 重複行を削除するコマンド

結構な量の、同じ内容の行が複数あるテキストファイルがある。その複数行を一行にしたい。

perlで、hashを使えばできるな・・・と思っていたら、uniq というコマンドで速攻でできた。

ファイルをsortした後、uniq。

2013/02/28

sedによる一括置換

cgiでrequireしているファイル名を mylib.pl から util.plに変えた。

sedで全部置換する。

sed -i s/mylib/util/ *.cgi


-i をつけるとファイルを直接書き換える。

2013/01/31

ibus

# ps aux|grep ibus
hoge   2260  6.0  0.2 148464  2332 ?        Sl   07:00   0:04 /usr/bin/ibus-daemon -r --xim
hoge   2268  0.0  0.3 158108  3336 ?        S    07:00   0:00 /usr/libexec/ibus-gconf

hoge   2272  0.0  0.6 235456  6232 ?        S    07:00   0:00 /usr/libexec/ibus-x11 --kill-daemon
root      2374  0.0  0.0 107460   924 pts/1    S+   07:01   0:00 grep ibus

# ibus-setup
Traceback (most recent call last):

File "/usr/share/ibus/setup/main.py", line 28, in <module>
import gtk
ImportError: No module named gtk

これがいけないのか。gtkというモジュールがないのか。じゃあいれよう。ちょこちょことyum installをするがうまくいかない。めんどくさいので yum install python*

djangoがどうたらでエラーになる。

skipbrokenとかなんとかいうのをつけたらというのでつけてみるとインストールが始まったが最後にコケる。WEBで似たような状況の人を探し、pythonと名のつくものはなんでもかんでも片っ端から放り込む。

ダメ。

再起動する。

ダメ。

なんか、「あのリポジトリだとダメ」とかいう情報があるがどこからいれたとかどこからいれるとか、よくわからない。

以前使っていたノートPCを起動してみる。

起動しているプロセスが多い。

rpm -qa|grep ibus

としてみるとこれもずいぶん違う。

同じものを全部入れてみる。

再起動。

それにしてもいつも思うのだがさくらのVPSの再起動はずいぶん速いね?

iPhoneの再起動より速い。

ダメ。

psで足りないのは、以下の二つ。これが動かないとダメなのだろう。

やっぱりpythonだ。

python /usr/share/ibus/ui/gtk/main.py
python /usr/share/ibus-anthy/engine/main.py


はいってないモジュールを一個一個インストールしていくと、

エラーメッセージが変わった。

python /usr/share/ibus/ui/gtk/main.py
Traceback (most recent call last):
File "/usr/share/ibus/ui/gtk/main.py", line 33, in <module>
import ibus
ImportError: No module named ibus


main.pyというファイルを見ると、 import ibus と書いてある。

これがないのだ。

これを入れればいいのだ。

どうやって?

import os
import sys
import getopt
#import ibus
#import gtk
import gettext
#import panel
#import pynotify


main.pyには上記のようにimport文が書いてあるがコメントにした部分が全部 no module named *** となる。

なんだよこれ・・・

ibusがダメなのか、pythonがダメなのか・・・

2013/01/29

さくらのVPSにVNC接続

さくらのvpsでgnomeを動かしてvncでつながるようになった。

そんなの重くて使いものにならないだろうと思っていたが、

軽快である。

youtubeを見てみようと思って、flashをインストールしたのだがうまくいかない。

インストールしたあと、libflashplayer.soというファイルを、以下のようにコピーしないといけなかった。

# cd /usr/lib/mozilla/plugins/
# ll
合計 0
# cd /
# find -name "libflashplayer.so"
./usr/lib64/mozilla/plugins/libflashplayer.so
./usr/lib64/flash-plugin/libflashplayer.so
# cp /usr/lib64/mozilla/plugins/libflashplayer.so /usr/lib/mozilla/plugins/


youtubeの絵はカクカクしているが、これはvpsから我が家間の通信が遅いからである。

Bフレッツとかだったらいけるんじゃないか?

あとは音か・・・。

その前に日本語入力だ。

Ctrl+SpaceでiBusという日本語入力が動くはずなのだが、数秒とまるが動かない。

あと、resolve.confの中身が消えてしまうことがある。

#Generated by NetworkManager と書いてあるので、こいつが上書きしているのではないかと思う。

GNOMEを入れるときに余計なものをたくさんいれてしまったのでその時入ってしまったのだろう。

NetworkManagerは起動しないようにする(GUIで)。

が、やっぱり消える。「ifconfigにネームサーバを書け」とか書いてあるので、しぶしぶ書いたらその内容がresolv.confに入った。よくわからんがこれでいこう。

日本語入力は、scimというのと、ibusというのがあって、scimはインストールできず、

ibusはインストールされているが起動せず、でどっちもダメだ。

まあguiでなきゃダメなことがあるわけではないから困らないのだが、

皆ができるということができないのは腑に落ちない・・・




2011/06/22

ファイルの存在確認シェルスクリプト

#!/bin/sh
if [ -e $1 ]; then
    echo \"$1\" exists.
    if [ -f $1 ]; then
        echo \"$1\" is a file.
    else
        echo \"$1\" is not a file.
    fi
else
    echo \"$1\" does not exist.
fi
実行例
filex.sh という名前で上記スクリプトを書く。
# ls
filex.sh  testdir  test.pl

# sh ./filex.sh testdir
"testdir" exists.
"testdir" is not a file.


# sh ./filex.sh test.pl
"test.pl" exists.
"test.pl" is a file.

2008/11/13

いろんなコマンド

linuxのshell scriptを、excelなどを使って作った場合、実行できない場合がある。これは改行コードがCR+LFとなっているためである。

実行できるようにするには、二つの方法がある。

まずは、ftpで転送する場合、asciiモードで送信する。テキストファイルは asciiでもbinaryでも表示には問題ないが、改行コードがwindows式のCR+LFではスクリプトとして実行できない。asciiモードで送信すると、改行コードを変換してくれる。

もし、FTPで送受信していないとかで再受信できない場合は、nkfコマンドを使う。これは改行コードや文字コードを変換してくれるコマンドである。

nkf -Lu windows.txt > linux.txt

とやると、改行コードがCR+LFからLFに変換される。nkfコマンドにはほかにもいろいろオプションがあるので確認されたし。

ヒマなのでlinuxコマンドリファレンスに載っているコマンドを片っ端から使ってみた。そして発見したこと。

scriptで記録したログの制御コードを除くには、

cat log.txt|col > log2.txt

でよい。viで %s/^M//g とかやらなくても。


diff3 というコマンドは3つのファイルを比較できる。

diff -u で、結果をunified型式で出力できる。

cmp バイナリファイルの比較。差がなければ何も表示されない。

netstat -r は route と同じ。

grep -v word は、指定した語に一致しない行を出力

grep -i word は、指定した語の大文字小文字を区別せずに検索

lha もある。

bzip2 最近ちょくちょく見かけるが、圧縮率がgzipより高い。が、時間もかかるようだ。

ちなみに lhaはgzipよりちょっと圧縮率が高いようだ。

pushd/popd の使い方。あるディレクトリに居て、一時的にディレクトリを変更してすぐ戻りたい場合に、

pushd /home/aiueo

popd

とやると、戻ってこれる。




Makefile の書き方

TARGET = myfile

all: $(TARGET)

clean:
rm myfile

myfile:
gcc -o myfile myfile.c


myfile.cをコンパイルしてmyfileという名前の実行ファイルを作る。

users ログインユーザの一覧

w でもわかるけど余計な情報がつく

wget ミラーサイトなどを作るときにディレクトリごとコピーできる(未確認)

arping リモートホストにarp requestを送信する。

strings filename 指定したファイル内の文字列を表示する。使ったことはあったが意味を知らなかった。

pstree psの階層表示。どんなときに使うのかは知らないが。

alias コマンドやオプションに別名をつける。

lastlog って実行ファイルだった。いつもログファイルと思ってエディタで開いてしまう。

write username 指定したユーザにメッセージを送る。 write 文字列 ではない。

bmtoa/atobm ビットマップとはWindowsで使う画像のbmpファイルではなく、アイコンなどにつかういわゆる1bitの画像ファイルらしい。使い方はよくわからない。

cjpeg/djpeg/jpegtran jpegの画像変換。回転や反転もできる。

convert 画像のファイル変換、回転

2008/08/27

「ポートが開いている」とは

私の職場でRedHat Linux9を使っている。古いOSであるが理由があって使っている。

「ポート」について、疑問を感じたことがある。ポートは必要最小限のものしか開けてはならない、と言うことは知っている。

今、自分自身をポートスキャンしてみると、telnet とか ftpとかで使用するポートが開いているのがわかる。全部で10個もないくらいである。

だが、私はこのLinuxマシンで、一度もポートを開ける設定も閉める設定もした覚えはない。インストールするときに、ファイアウォールを設定するか、というところでファイアウォールなしにした記憶はある。

それなのに、ちゃんと必要最低限のポートしか開いていないのである。一体どこに、このポートは開けて、このポートは閉める、という設定がしてあるのか、探してみたがわからない。

inetd.confが非常に怪しいとにらんだ。nmapで開いているとされているポートで使用しているサービスがここで設定されているからだ。ここに設定するとポートが開くんだな、とほとんど確信しかけたが、ntpは設定されていないし、それ以外にも開いているポートがいくつかある。

nmapの結果

PORT STATE SERVICE

21/tcp open ftp
22/tcp open ssh
23/tcp open telnet
70/tcp open gopher
111/tcp open rpcbind
139/tcp open netbios-ssn
445/tcp open microsoft-ds
513/tcp open login
672/tcp open unknown
901/tcp open samba-swat


PORT STATE SERVICE

69/udp open|filtered tftp
111/udp open|filtered rpcbind
123/udp open|filtered ntp
137/udp open|filtered netbios-ns
138/udp open|filtered netbios-dgm
836/udp open|filtered unknown
32768/udp open|filtered omad

inetd.conf
ftp
telnet
gopher
login
tftp
swat

どうなっているんだ・・・。そもそも、「ポートが開いている」とはどういう状態なのか?

キーワードをいろいろと変えて検索してみたがどこにも「xxxのxxxをxxxxするとポートが開放される」などとは書いていなかった。

しかし、「ポートの開放の仕方なんか少し調べればすぐ見つかるよ」見たいな冷たい反応はたくさんみつかった。iptablesがどうのこうの、という情報もたくさん見つかったが、iptablesなど設定していないし、確認したがすべてのポートが許可されている。

一体、どこの誰がポートを開けているのか!?

......

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=10465&forum=10&4
を見て。

どうやら、「あるポートが開いている」というのは、「あるポートを使って通信をおこなっているサービスが存在している」という意味のようだ。

つまり、ftpdを稼動させれば21番などが開いているということになる。窓のようなポートというものが存在している訳ではないようである。

iptablesというのは、それとは違って、サービスの状況によらずポートをフィルタリングする。だから、iptablesで何もフィルタリングしていない状態であっても、サービスがなにもしていなければ、ポートは開いていないということになる。

2008/07/13

オープンソース

トランジスタ技術でUSBを使って制御プログラミングをするキットがついているとスラッシュドットで紹介されていて、買ってみた。

やっぱり「コンピューター」の醍醐味とはプログラマブルであること、そしてあらゆる情報をデジタル信号として高速に処理することである。

そういう意味で、外部の機器を制御するプログラミングこそが、もっともコンピューターを使用して楽しいことだと思う。

組み込まれた同じことしかしないのではなく、自分で好きなように改造できるようなものだ。改造というと不満足なところをちょこちょこいじるというイメージだが、プログラミングというのはそれ以上で、全く誰も考え付かないようなことをコンピュータにやらせるという、そういう喜びである。

だから私は、そういう可能性を閉ざすようなソフトウェアやインタフェースを憎む。

Windowsは毎日のようにアップデートをおこなって、ユーザーがいったん手に入れたソフトウェアを育て上げてくれる。

これは意地悪な見方をすると未完成の商品を売りつけて後からそれを直しているということになるが、考えようによってはより高機能、高品質な製品に育ててくれるという、普通の家電製品などでは考えられない素晴らしいことである。

ビルゲイツは、プログラミングに魅せられ、コンピュータを一部の技術者だけでなく万人に開放してそのプログラミングの楽しみを教えてくれた。初期のDOSは起動するとBASICインタープリタが起動したのだが、それも、コンピュータとはプログラミングするものだ、という思想の現れである。

でも、LinuxのようにOSをオープンにするのはどうかと思う。

そういうものをプログラミングしたい人も、いないことはないだろうが、多分多くの人はもっと具体的なもの、たとえばグラフィックなりサウンドなり、数字なり、光なり温度なり、そういうものを加工したりジェネレートしたいはずだ。

OSはそのための基盤として、ひっそりとしかし堅固に存在していて欲しい。日々のアップデートをおこなうのはプログラマブルな装置としておおいにやってほしいが、ソースまでをユーザになおさせるのはカンベン。

2008/07/10

「^M」の削除

仕事でlinuxでscriptコマンドでログを取りそれを読んでいるのだが、^Mが行末についてしまう。
viで開いて

%s/^M//g

を実行して消している。 

Ctrlキーを押しながらV+Mで^Mが入力できることを知っただけで喜んでいたのだが、わざわざ viで開くのも同じ置換コマンドを何度も打つのもめんどくさくなってきた。

sedを使えばファイルを開かずにできるとは聞いていたのだが、今日初めて実際にやってみた。

sed 's/^M//g' aaa.log 

画面上にダーっとファイルの中身が表示される。

ファイルを開いたが元のままだ。 

置換されてねーじゃん、とつぶやいたが、別ファイルにリダイレクトするのだと気づいた。

sed 's/^M//g' aaa.log > bbb.log 

こりゃいい!

2008/05/26

ubuntu REALtekのオーディオドライバ

たしかに今まで使ってみたどのlinuxよりも、カンタンでラクチンではある。が、しょせんはlinuxである。windowsのような厳しい品質管理と大勢のユーザーの厳しい目にさらされていないので、こんなの許されないぞというところがたくさんある。やっぱりダウンロードしてダブルクリック一発でインストールできてしまうwindowsはスバらしい。

REALtekのオーディオドライバの件。もしかしてすぐに不具合が見つかって更新されてないかなと、見てみたら、マザーボードメーカーの提供するファイルを使ってくださいとかいう、注意書きが。そうか、それがあったか、と、MSIのホームページからNICとオーディオドライバを落として更新した。とりあえずテレビで音が出るようにはなったが、やっぱり録音はできない・・・・

2008/05/17

ubuntu

ubuntuをいれてみよう。夕べisoイメージはダウンロードしてある。たいしたサイズじゃないのに結構時間がかかった。人気があるのだろうか。CDに焼くときに、vista64でやったらうまくできず、CDを2枚ムダにしたのち、xpにnero7を入れて、インタフェースが気に食わなかったがなんとか焼くことができた。xpをいれてあるサブPCをつぶしてubuntuをいれる。デュアルブートとかはしない。仮想PC的なこともしない。だいたいXPproを2台のPCにいれてることはライセンス違反だからね。オンライン認証は通っちゃったけど。同時に2台で使ってることもあるのがイヤなので、消す。もちろんwindowsは私の生活になくてはならない大切なものである。単なるPCのOSではない。MSは最近弱気になってるかもしれないが、私はgoogleだのweb2.0だのSNSだのといったものなんかとは比べ物にならないくらいの偉大なテクノロジーを築き上げてきたと思っている。

はいりました。いろいろしながらやってたので、実際にかかった時間は30分くらいじゃないかと思う。firefoxから書いてます。なんか字がブレているんだけど、リフレッシュレートのせいかな?あと漢字変換がちょっとへんな癖がある感じがする。まあこの辺は慣れだろうけど。


2008/05/13

ubuntuがいいらしい

br-600のことを検索していたらubuntuがいいという人がいた。

ubuntuとはlinuxのディストリビューションのことである。名前は聞いたことはあったが、いったいどういうディストリビューションなのかは知らなかった。

ubuntuについて調べてみると、今話題になっているようで、何が話題かというと、インストールが簡単ですぐ使えるなどの理由らしい。

先日centOSを入れようとしたらCDで5枚くらいあったのでDVD版を落として焼いたのだが、ubuntuはCD1枚だそうである。

たぶん、ubuntuの他のディストリビューションとの違いはOSのパフォーマンスやらアーキテクチャではなくて、インストールのしやすさと手軽さである。やっぱり重要なのはUIなのだ。

そしてこれはWindowsがLinuxより何歩も先んじている最大の長所である。そして私はlinuxがWindowsに置き換わる日は永遠にこないだろうと思っている。

入れてみようかなあと思っているが、vistaとXPのデュアルブートにしているPCにさらに入れるのはイヤだ。もう一台のXPが動いている方も、何かと必要なことがあるのでそれもいじりたくない。

vmwareによりWindows上で仮想的に動かすことができるようだが、そんなことをしてまでlinuxを使わなければならない理由もない。こないだ買って全然使っていないDellのinspiron2500に入れてみようかな・・・