トップ «前の日(02-02) 最新 次の日(02-04)» 追記

屑俺日記

僕の備忘録(PC、UN*X、ネットワーク関連が中心)なんです。
自分の書いたところは適当(な時とか)に書き換えますので御了承を。


2005-02-03(Thu) &

ツッコミを見て、早速

cronで毎日、ログのサマリをメールしているシェルスクリプトに、 grep POST $ACCESS_LOG を加えた :-)

なかなか

sockstat(1)の名前を覚えられない。その都度、 を引っ張り出して、コマンドの載ってるページを探し回っている。
ちなみに、sock<TAB>と打って気づいたが、PlamoLinuxには socklist(8)というperlスクリプトがそれにあたる模様。
あとsocklist(8)では、uidが0の項目の内容が変だ。pidやfdまでが0になり、 nameも出ない (sockstat(1)は関係ないらしい)

$ socklist
type  port      inode     uid    pid   fd  name
tcp  32769       3344     500   1090    5  kinput2-canna
tcp    515       2904       0      0    0  
tcp   6000       3306       0      0    0  
tcp   5680       3211       0      0    0  
tcp     21       2777       0      0    0  
tcp     25       2936       0      0    0  
tcp  32768       3340     500   1090    4  kinput2-canna
tcp   5680       3341       0      0    0  
tcp  41605      27626     500   4974    3  ssh
tcp  41600      27561     500   4952    3  ssh
   
# socklist
type  port      inode     uid    pid   fd  name
tcp  32769       3344     500   1090    5  kinput2-canna
tcp    515       2904       0    915    6  lpd
tcp   6000       3306       0   1074    1  X
tcp   5680       3211       0   1024    4  cannaserver
tcp     21       2777       0    906    4  inetd
tcp     25       2936       0    978   11  master
tcp  32768       3340     500   1090    4  kinput2-canna
tcp   5680       3341       0   1024    0  cannaserver
tcp  41605      27626     500   4974    3  ssh
tcp  41600      27561     500   4952    3  ssh

ぐぐっていると、過去の(3.x?)sockstatはPerlスクリプトらしいと書いてある ページもあった。

$ file $(which sockstat)
/usr/bin/sockstat: ELF 32-bit LSB executable, Intel 80386, version 1 \
  (FreeBSD), for FreeBSD 5.3.0, dynamically linked (uses shared libs),\
  stripped
$ ldd $(which sockstat)
/usr/bin/sockstat:
        libc.so.5 => /lib/libc.so.5 (0x28076000)

ツッコミをみて、4.10(98)を確認。

$ file $(which sockstat)
/usr/bin/sockstat: a /usr/bin/perl -w script text executable

そういえば昔(いつか忘れた)whichがperlだったことを思い出した。

$ file $(which which)
/usr/bin/which: ELF 32-bit LSB executable, Intel 80386, version 1\
  (FreeBSD), for FreeBSD 4.9.1, dynamically linked (uses shared libs), \
  stripped
$ ldd $(which which)
/usr/bin/which:
        libc.so.4 => /usr/lib/libc.so.4 (0x28067000)
本日のツッコミ(全3件) [ツッコミを入れる]

takanyon [4.11-RELEASEでもsockstatはperl scriptですよ:-) ベースシステムからperlを無くす..]

kuzuore [ご指摘どうもです。それに沿って追記しました。]

takanyon [ツッコミはやっ(笑) whichがCで書き直されたのは意外にも4.10-RELEASE以降です。 cshやtcshを..]


2006-02-03(Fri) おそ

昨日は

落して開いただけのopenssh-4.3p1を

$ ./configure \
  --prefix=/usr   \
  --with-pam   \
  --with-md5-passwords   \
  --sysconfdir=/etc/ssh

でmake install する。 終ってから sshdを kill -HUP 。
一応動いてはいるようだ。

そのうち鯖も変えないと。


2007-02-03(Sat) あれやこれや

OBSつづく

なんか動かしてみる。

iMacに入れたEtchで、hello.cを書いた。 gcc -o hello -static hello.c する。
strip してやると、ファイルサイズが545670バイトから490800になった。

user@imac:~$ file hello
hello: ELF 32-bit MSB executable, PowerPC or cisco \
4500, version 1 (SYSV), for GNU/Linux 2.4.1, statically \
linked, for GNU/Linux 2.4.1, stripped

こいつをftpでOBSに転送し、実行属性を付けて ./hello。動いた。

やっぱりDNS

OBSは現在、デスクトップのeth2にクロスケーブルでぶら下がっている。
従って、OBSとiMacはデスクトップを中継して繋がっている。

どういうわけか、起動後しばらくすると、OBSはtelnetやftpのログインが すっと出来なくなった。一分以上待たされるのだ。

もしや。
LANのDNSサーバにも192.168.253.254 への路をルーティングテーブルに追記し、 OBSの/etc/resolv.confにもnamseserver のアドレスを入れてやる。

果たせる哉。
瞬時にログインプロンプトが出るようになった。

DNS鯖にログインし、tcpdumpでudpを見てみる。
telnetなどでアクセスした途端に 4回のクエリーが。
1. まず、やってきたIPの逆引き。
2. 次いで、1.で返ってきた名前のIPv4の正引き。
3. そして、もう一回、IPv6で正引き。
4. 最後に自分のホスト名をIPv4で正引き。


2008-02-03(Sun) また何も。

まだまだ

RCSのコマンドは色々あるが、

rcs-5.7/src$ ls | grep -v "\.\|[A-Z]"
ci
co
ident
merge
rcs
rcsclean
rcsdiff
rcsmerge
rcstest
rlog

好奇心いまいち。
ブランチやフォークを覚えたら、cvsか。


2009-02-03(Tue) はれ、のちあめ

きっと

LXDE はまだほやほやっぽい。
さしあたり、と考えながら svn co https://lxde.svn.sourceforge.net/svnroot/lxde lxde させてもらった。


2014-02-03(Mon) 昨日はとても暖かかった。今朝摂氏10度

rev(1)

tac(1)は知っていても、rev(1)は知らなかったはず。

$ cat > foo.txt <<EOF
1
2
3
abc
EOF
 
$ tac foo.txt 
abc
3
2
1
 
$ rev foo.txt
1
2
3
cba

FreeBSD-CURRENT

RaspberryPi(というよりarm?)向けのバイナリパッケージはなさげ。
Portsもあまり頼りにならないっぽいので、せめてもの操作環境のために いくらかを make install。bash と sudo は何事もなく make install。
tmux は libevent と pkg-config(configureオプションに --with-internal-glib) が要った。
とりあえず、ひと心地ついた。

画面がちょっと華やかに見える。

gdate.c:432:43: warning: comparison of constant 8 with expression of type
      'GDateWeekday' is always true
      [-Wtautological-constant-out-of-range-compare]
  return ( (w > G_DATE_BAD_WEEKDAY) && (w < 8) );
                                        ~ ^ ~
1 warning generated.

さて、Subversion も入れたものか。ソースのアップデートに必要っぽい が、 なんか依存するパッケージが多かったような。

結局仮想マシンでは足りず

適当なamd64マシンからUbuntuを追い払ってFreeBSD 10 を入れた。
USBメモリ向けのインストールイメージは約666MBあった。
30分もかからずに終了し、tmuxやsubversionなども pkg install であっという間に入った。
そういった知識があれば快適だろうな。

逆なのか

前に書いた、どこかのWebページを参考にした USB、 どうも信号線が逆のようだ(Interface 2014/2, p86)

       |線|
       |  |
    |  USB   |
    |  LOGO  |
    |        |
 青   緑   白    橙 
GND -Data +Data  5V


2015-02-03(Tue) 曇ってたが風は弱く、気温の割に寒くもなし

間違ってた可能性

clangを入れた(gccを入れてない) jessie(x86_64)と FreeBSD 11 CURRENT(amd64)で、 どちらも 昨日のコードに警告が出た。

$ cc --version
Debian clang version 3.5.0-9 (tags/RELEASE_350/final) \
(based on LLVM 3.5.0)
Target: x86_64-pc-linux-gnu
Thread model: posix
 
$ uname -a
Linux $HOST 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt2-1 \
(2014-12-08) x86_64 GNU/Linux
$ cc -Weverything -o dog dog.c
dog0.c:5:20: warning: implicit conversion changes \
signedness: 'int' to 'char'
      [-Wsign-conversion]
        dog[0] =   0xe7 ;
               ~   ^~~~
dog0.c:6:20: warning: implicit conversion changes \
signedness: 'int' to 'char'
      [-Wsign-conversion]
        dog[1] =   0x8a ;
               ~   ^~~~
dog0.c:7:20: warning: implicit conversion changes \
signedness: 'int' to 'char'
      [-Wsign-conversion]
        dog[2] =   0xac ;
               ~   ^~~~
3 warnings generated.

次のようにすると警告なしになった。

$ diff dog.c dog1.c
5,7c5,7
<         dog[0] =  0xe7 ;
<         dog[1] =  0x8a ;
<         dog[2] =  0xac ;
---
>         dog[0] = (char) 0xe7 ;
>         dog[1] = (char) 0x8a ;
>         dog[2] = (char) 0xac ;

char の判定も、このように書いてやっと clangの警告が出なくなった。
ちなみに3dは関係なく削除。

#include<stdio.h>
#define SIGN_NUM (char) 129
int  main() {
  unsigned char ex_uc = (unsigned char) SIGN_NUM;
  signed char ex_ac = (signed char) SIGN_NUM;
  char im_c = SIGN_NUM;
  printf("unsignd char:%d\n", ex_uc);
  printf("signed char:%d\n", ex_ac);
  printf("implict char:%d\n", im_c);
  return 0;
}

RasPI Aでのセルフビルド

FreeBSD 11.0-CURRENT r277866 で make buildworldした 結果、4844分6.591秒かかったらしい。
80時間と44分余り、3日と8時間44分6.6秒。
さて、時刻合わせが済んだら make buildkernelせねば。
こちらは予想で21時間くらい?

一晩IP Unreachableだった。ntpdateしたら3秒ほど進みすぎていた。

make buildkernelは391分3.885sで終了した。

再度RasPiのFreeBSDで追試。

sigh_test は、次のように書くと警告はなかった。

#include<stdio.h>
#define SIGN_NUM  129
int  main() {
  unsigned char ex_uc =  SIGN_NUM;
  signed char ex_ac =  (signed char) SIGN_NUM;
  char im_c = SIGN_NUM;
  printf("unsignd char:%d\n", ex_uc);
  printf("signed char:%d\n", ex_ac);
  printf("implict char:%d\n", im_c);
  return 0;
}

デフォルトがunsigned char だから、なのかもしれない。


2017-02-03(Fri) 昨日より少しぬくめ

小さいのたくさん

同じ量でも多数のファイル転送は時間がかかる。
1Mのファイルひとつは瞬速でコピーできても、 32バイトが32768個あると...
/dev/urandomから読みだしたファイルの山を、 sshfsでマウントしたポイントにcp -aしてみる。
イーサネットは一応GB。

$ ls
128  1k  1m.img  256  32  512  64
 
$ time cp 1m.img $HOME/remote/
 
real    0m0.024s
user    0m0.000s
sys     0m0.004s
 
$ time cp -a 1k $HOME/remote/                        
 
real    0m4.802s
user    0m0.048s
sys     0m0.164s
 
$ time cp -a 512 $HOME/remote/                       
 
real    0m9.704s
user    0m0.064s
sys     0m0.372s
 
$ time cp -a 256 $HOME/remote/                       
 
real    0m19.380s
user    0m0.172s
sys     0m0.724s
 
$ time cp -a 128 $HOME/remote/                       
 
real    0m38.442s
user    0m0.272s
sys     0m1.368s
$ time cp -a 64 $HOME/remote/
 
real    1m16.699s
user    0m0.472s
sys     0m2.744s
 
$ time cp -a 32 $HOME/remote/                        
 
real    2m34.144s
user    0m0.912s
sys     0m5.560s

ほぼファイルの「数」に比例しているようだ。

スイッチを100Mに変えてみた。
変化については1Gと同様。
「ちょっと遅くなった」くらいしか違わないようだ。

$ time cp 1m.img $HOME/remote/
 
real    0m0.099s
user    0m0.000s
sys     0m0.000s
 
$ time cp -a 1k $HOME/remote/                        
 
real    0m5.796s
user    0m0.036s
sys     0m0.176s
 
$ time cp -a 512 $HOME/remote/                       
 
real    0m11.257s
user    0m0.080s
sys     0m0.320s
 
$ time cp -a 256 $HOME/remote/                       
 
real    0m22.118s
user    0m0.152s
sys     0m0.680s
 
$ time cp -a 128 $HOME/remote/                       
 
real    0m43.997s
user    0m0.292s
sys     0m1.384s
 
$ time cp -a 64 $HOME/remote/
 
real    1m27.289s
user    0m0.528s
sys     0m2.724s
 
$ time cp -a 32 $HOME/remote/                        
 
real    2m55.206s
user    0m1.124s
sys     0m5.440s

ついでに同じ量のファイルが

どれくらいのディスクスペースを占めているかも。

$ ls
128  1k  1m.img  256  32  512  64
 
$ for node in `ls`; do du $node; done | sort -n
1024    1m.img
4124    1k
8244    512
16484   256
32960   128
65964   64
131952  32

lvmでデータ移動

特定の物理ボリューム上にあるデータを 違う物理ボリュームに移動。もちろん アンマウントもせずにデータ保持で。

まず初期状態。

$ sudo pvs
  PV         VG Fmt  Attr PSize   PFree
  /dev/sdb1     lvm2 ---    3.00g   3.00g
  /dev/sdb2     lvm2 ---    2.59g   2.59g

ボリュームグループを作成し、小さい方の 物理ボリュームを加え、 その全部を論理ボリュームにする。

$ sudo vgcreate tvs /dev/sdb2
  Volume group "tvs" successfully created
 
$ sudo lvcreate -l 100%FREE tvs -n narrow
  Logical volume "narrow" created.

パーティション作成にマウント。

$ sudo mkfs -t ext4 /dev/tvs/narrow
mke2fs 1.43.3 (04-Sep-2016)
Discarding device blocks: done         
Creating filesystem with 677888 4k blocks and 169680 inodes
Filesystem UUID: ac47ff77-8792-4ea6-ad23-bd8a1a3d3092
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912
 
Allocating group tables: done 
Writing inode tables: done 
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done 
 
$ sudo mount /dev/tvs/narrow /media/temp

適当なデータも置いておく。

media/temp$ sudo dd if=/dev/urandom of=100m.img bs=1M count=100
100+0 レコード入力
100+0 レコード出力
104857600 bytes (105 MB, 100 MiB) copied, 5.68974 s, 18.4 MB/s
 
media/temp$ df -h | sed -n '1p;$p'
ファイルシス           サイズ  使用  残り 使用% マウント位置
/dev/mapper/tvs-narrow   2.5G  108M  2.3G    5% /media/temp

大きい方の物理ボリューム追加。

$ sudo vgextend tvs /dev/sdb1
  Volume group "tvs" successfully extended
 
$ sudo pvs
  PV         VG  Fmt  Attr PSize PFree
  /dev/sdb1  tvs lvm2 a--  3.00g 3.00g
  /dev/sdb2  tvs lvm2 a--  2.59g    0
 
$ sudo vgs
  VG  #PV #LV #SN Attr   VSize VFree
  tvs   2   1   0 wz--n- 5.58g 3.00g

で、始めの小さい方の物理ボリュームから データを大きい方に移動させる。
この場合、ファイルシステムのデータの 多寡は関係なさげ(物理ボリューム 全体を移す模様)

$ sudo pvmove /dev/sdb2 /dev/sdb1
  /dev/sdb2: Moved: 0.15%
  /dev/sdb2: Moved: 25.23%
  /dev/sdb2: Moved: 45.17%
  /dev/sdb2: Moved: 69.64%
  /dev/sdb2: Moved: 99.55%
  /dev/sdb2: Moved: 100.00%

で、その結果。

$ sudo pvs
  PV         VG  Fmt  Attr PSize PFree
  /dev/sdb1  tvs lvm2 a--  3.00g 420.00m
  /dev/sdb2  tvs lvm2 a--  2.59g   2.59g
 
$ df -h | sed -n '1p;$p'
ファイルシス           サイズ  使用  残り 使用% マウント位置
/dev/mapper/tvs-narrow   2.5G  108M  2.3G    5% /media/temp

もちろんこの後、/dev/sdb2を引き抜いても構わないと。

$ sudo vgreduce tvs /dev/sdb2
  Removed "/dev/sdb2" from volume group "tvs"
 
$ sudo pvs
  PV         VG  Fmt  Attr PSize PFree
  /dev/sdb1  tvs lvm2 a--  3.00g 420.00m
  /dev/sdb2      lvm2 ---  2.59g   2.59g
 
$ ls /media/temp/
100m.img  lost+found

パーティションのサイズを変えないので、 移動元と移動先のサイズには注意が要りそうだ。
論理ボリュームがどちらにも収まるサイズであれば いいのだろうけど。


2018-02-03(Sat) のびのび、晴れてるが

v6で少し遊ぶ

メールサーバの試験運用のために、仮で立ててみた。
はじめはクラウドだったが、こちらはv6がルータにしか割当できず、 しかも逆引きもできないらしいのでVPSに移す。

AAAAは既に登録しておいた。
ついでに逆引きもさっきやっておいた。
ip6tables(基本はINPUT DROP)でicmpを指定するには/etc/protocolsにあったipv6-icmpが有効らしい。
requestは128, reply は129だった。

$ sudo ip6tables -A INPUT -p ipv6-icmp --icmpv6-type 129 -j ACCEPT

のようになるはずだけど、どういうわけかtype128,129を指定してやるとうまくいかない。
コマンドとしては通るが、ping6は届かない。icmp全部、とはいわなくても、色々指定してやらないと 駄目かも。

v6がようやく自分でも「使える」ようになった気がするが、 v4とv6の使い分け、切り替えにはまだまだ色々トラブルがありそう。


2021-02-03(Wed) 暖かい日差し、冷たい風

再生している音楽が止まったとき

確かfirefoxで、Slackの他にもう一つタブを増やしたことが 刺さったらしい。
しばらくマウスカーソル以外ほとんど動かなくなった。
動くようになってからdmesgを見る。

$ dmesg | grep -c  '[水  2月  3 20:55:10 2021]'
1145

以下、[水 2月 3 20:55:10 2021]を省略。

ata1.00: exception Emask 0x0 SAct 0xf7f0007f SErr 0x0 action 0x6 frozen
ata1.00: failed command: READ FPDMA QUEUED
ata1.00: cmd 60/00:00:88:8f:66/01:00:01:00:00/40 tag 0 ncq dma 131072 in
 res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x4 (timeout)
 ata1.00: status: { DRDY }

が何回か出た。そして、

ata1: hard resetting link
ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
ata1.00: ACPI cmd ef/10:03:00:00:00:a0 (SET FEATURES) filtered out
ata1.00: ACPI cmd ef/10:03:00:00:00:a0 (SET FEATURES) filtered out
ata1.00: configured for UDMA/133
ata1.00: device reported invalid CHS sector 0
ata1.00: device reported invalid CHS sector 0
.
.
sd 0:0:0:0: [sda] tag#19 FAILED Result: hostbyte=DID_OK
 driverbyte=DRIVER_TIMEOUT cmd_age=50s
sd 0:0:0:0: [sda] tag#19 CDB: Write(10) 2a 00 05 1c 6f 98 00 00 38 00
blk_update_request: I/O error, dev sda, sector 85749656 op
 0x1:(WRITE) flags 0x800 phys_seg 4 prio class 0
$ dmesg | grep -c 'Buffer I/O error on device sda2'
10

さて、どうすべし。一応動いてはいるのだけど。


2022-02-03(Thu) べた曇から次第に

MTA-STSやってみた

InternetWeek2020の資料など見ながら。
メールサーバーの構築にansibleを使い始めて いくばくかの自動化はできてきた。
アップデートと(場合によっては)再起動に 時間がかかるので、時間はさほど短縮 できた気はしないが。

DNSにMTA-STSのA(AAAA)と、 _MTA-STSのTXTを追加。
もはやTLSはワイルドカード無しにはできない気が。

$ dig _dmarc.DOMAIN.TLD TXT
//
;; ANSWER SECTION:
_dmarc.DOMAIN.TLD.	3600	IN	TXT
   "v=DMARC1;
    p=quarantine; rua=mailto:$MAILADDR1;
    ruf=mailto:$MAILADDR2"

apache2は特に違うところはない。DocumentRoot にmkdirするくらい。

$ w3m -dump https://mta-sts.orekuzu.com/.well-known/mta-sts.txt
version: STSv1
mode: enforce
mx: *.DOMAIN.TLD
max_age: 129600

適当なサイト チェックして貰ったが、 TLSRPTが無い(DNSSEC前提)こと 以外は、大きな問題なしと判断されたようだ。

さて、その有り難みはどこに。


リンクはご自由にどうぞ。でもURLや内容が変った場合はあしからず。

index.htmlは ここから。