それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

ファイルサーバーを整理するために重複ファイルを探す

ファイルサーバーを適当に使ってたので、同じファイルが大量にある。

本当はbtfs を使えばいいんだろうけど、ext4 を使っているので重複ファイルの排除が手間です。

とりあえず、サクッと重複ファイルを探す

md5sum で重要するハッシュ値を探す。

サクッとカレントディレクトリ以下の重複ファイルを検出する。

md5-gen-list.sh

#!/usr/bin/env bash


IFS=$'\n'

FILE=filenames.txt
MD5LIST=md5-list.txt


truncate -s 0  ${MD5LIST}
truncate -s 0  ${FILE}

/usr/bin/find .  -type f > $FILE

size=$( cat ${FILE} | wc -l  )


echo $size

cat ${FILE} | while read i
do
  (( cnt++ ))
  percent=$( echo  "scale=3;${cnt}/${size}" | bc  )
  percent=$( echo  "scale=2;${percent} * 100 " | bc  )
  echo "$cnt/$size ( $percent )"
  echo md5sum ${i@Q}
  ## 全部読み込むと非効率なので、先頭10MBで十分とする
  #md5sum ${i} >> ${MD5LIST}
  echo $(dd if="$i" bs=1M count=10 2> /dev/null | md5sum -b | sed -e "s/\*-//" ) $i >> ${MD5LIST}
done


cat $MD5LIST  | sort | uniq -w32 -dD

md5sum / sha256sum などは全部のファイルを読み込む

全部のファイルを読み込んで指紋(ハッシュ)を計算する。ちょっとファイルの重複を手作業で調べるときにはとても不便である。

大量のファイルを「すべて読み込む」必要があるのが、ShaSUMであり、md5sum である

先頭1MB程度を読み込めば十分な気がする。念のため10MB を読み込めばいいのだろう。厳密に比較すると絶対に使えないが、どうせ似ているファイルを手作業で仕分けるのだから先頭を見れば十分な気がする。UbuntuのISOファイルとかその辺に散らばってるし。ファイル名を見れば整理できるけど、ファイル名を見るのすら面倒なので。

とりあえず、先頭数MBを読み込んで重複を検出しファイルを絞り込むことで時短を狙う。

バイナリを読み込む

シェルスクリプトは文字列を前提としている、などと言われるがバイナリを扱うことも置い

2MB を読み込む例

dd if=filename bs=1M count=2

dd は使いやすいバイナリ読み込みコマンドである。もし2MB未満なら、ファイル全体を読み込んでコマンド終了である。パディング処理はされない。

重複の検出

md5sum であれば次のように

cat md5-list.txt  | sort | uniq -w32 -dD

こえは、md5sum の結果が32文字になることを利用している。

重複ファイルを調べて削除

重複ファイルを、目で見て確認して同じファイルなら削除する。

npm やwordpress のファイルが大量に出てくるんですよね。やっぱりBtrfsなどを使って自動的に処理したほうが良さそうな気がする。

OpenSSH8.8からSHA-1のRSA鍵は無効に

ssh しようとしたら、出来ない。

サーバーのホスト🔑鍵ファイルが弾かれる。あれれと思って見直した。

Unable to negotiate with 192.168.4.1 port 22: no matching host key type found. Their offer: ssh-rsa

RSA 鍵が無効化された

仕方ないので許可をすることに(暫定

.ssh/config(追加)

HostKeyAlgorithms=+ssh-rsa
PubkeyAcceptedAlgorithms=+ssh-rsa

これは暫定でいけますが、将来的展望を見ると、SHA1-RSA自体を廃止して、ホスト鍵やクライント鍵を書き換えたほうがいいかもしれません。

今回は、ホスト鍵を許可する設定をクライントに入れました。

過去にも似たようなことがDSAであったらしい

https://www.freedom.ne.jp/hide/hogehoge/?p=1020

SHA1 の「ホスト鍵」ってそんなに危険ですかねぇ。ローカルについてはそんなに気にしなくて良いとおもうけど。

非推奨のSHA1を使うのはアカンけど。ホスト鍵だぜ・・・SSHホスト鍵がなりすましされるって、IP通信の経路を捻じ曲げてなりすましされるってことですから、LAN内部で起きようがないので、ローカルサーバーについては上記の設定で問題がないのです。

ただ、v6だとかグローバル空間では暫定対策でなく。ホスト鍵を差し替えたほうがいいと思われます。

関連資料

https://atmarkit.itmedia.co.jp/ait/articles/0603/09/news117.html https://scribble.washo3.com/openssh88-disable-rsa.html https://qiita.com/ponsuke0531/items/6c522c56cce6b86e72ad

sed コマンドで区切り文字を変えて、ファイル名に一致させる

sed の区切り文字を変える

sed コマンドでは、検索と置換の文字列を区切りを変えられます。

普通はスラッシュを使うと思うんだけど、スラッシュはフォルダ名やPATHで使われるため、エスケープ処理が面倒になる。

sed 's/search_name/takuya/g';

区切りを変える

sed 's|search_name|takuya|g';

その他にも記号を使える

その他の記号を使えるので、置換対象の文字列がURLの場合や、ファイル名の場合、エスケープが少なくなるように区切りを変えるのはいい方法だと思う。

takuya@:~$ echo abcd | sed -e 's/b/x/g'
axcd
takuya@:~$ echo abcd | sed -e 's#b#x#g'
axcd
takuya@:~$ echo abcd | sed -e 's$b$x$g'
axcd
takuya@:~$ echo abcd | sed -e 's%b%x%g'
axcd

sed コマンドは便利。つねに他の使い方も考えておきたい。

windows のサジェストがついに拒否できなくなった。

windows でスタートメニューに表示されるレコメンド

Win-Sのサーチを入れる箇所を空っぽにすると、レコメンド(suggestion)が出現するようになった。

とても目障りなので削除しようとしたが、どうやっても削除できない

設定のスタートメニュー項目を探すが

ここをすべてオフにすれども、サジェストは消えない。

ここに、設定が出てくるということはデフォルトApp設定がオフである。

Windows now blocks Edge browser competitors from opening links | Ctrl blog

USB-Cよりこういうのを規制してほしい。

こうやって、Adsで囲い込むの、本当に違法にしてほしい。

LightningケーブルやUSB type C より、こういうのを規制してほしい。本当に。 デフォルトを上書き可能にするとセキュリティ的に問題があるとしてもだ。セキュリティ通知以外でこのように乱用されるのは好ましくない。

結局、規制してもダメでした。ってなるので、OS提供社が自社のコンテンツやソフトウェアを他社が出せないところに出すのを禁止してほしい。

ちなみにtype C は規格が乱立していて、通信USB 3/4/2/DPサポートのType-Cがあって、電源規格もQuick/PDなど乱立している。Type-Cは使いにくくなった。もうType-Cは見た目だけでは区別がつかないので、Type-Cの判別専用機が必要になると思う。

qcow2 の容量が減らない。Sparseにしてるのに減らない。/ btrfs on qcow2

qcow2 の容量が減らない。 使ってないのに減らない。

使用してないディスク容量は開放されるはず・・・だけど変わらない。

qemu-img convert -c -O qcow2 image.qcow2 shrinked_image.qcow2

何度も qemu-img を試してもファイルサイズが同じになる。。。

$ ls ubuntu-* -alht
-rw-r--r-- 1 libvirt-qemu kvm  140G Sep  6 03:31 ubuntu-root.qcow2
-rw-r--r-- 1 root         root 140G Sep  6 03:03 ubuntu-root.06.qcow2
-rw-r--r-- 1 root         root 101G Sep  4 14:51 ubuntu-root.04.qcow2

なんで、こんな事が起きるのかが分からずにパニックになる。

冷静になったたら、この仮想ディスクは実際にはbtrfs である。BTRFSだとと気づく

そうだ、btrfs が古いファイルへの参照を持っているに違いない。

btfs を、メンテ後にsparsify を再チャレンジしてみた。

最初にbtrfs をメンテしておく。

btrfs で古いファイルへの参照を消して、開放する。

デフラグして、参照を整理

sudo btrfs filesystem defragment -r /

古い参照をスクラブ

btrfs scrub start /
btrfs scrub status /

スクラブが終わるまでじっと待つ。

UUID:             xxxxxx-x-x-xx-x-x-x
Scrub started:    Tue Sep  6 04:10:03 2022
Status:           running
Duration:         0:01:05
Time left:        0:00:05
ETA:              Tue Sep  6 04:11:13 2022
Total to scrub:   75.48GiB
Bytes scrubbed:   69.80GiB
Rate:             1.07GiB/s
Error summary:    no errors found

デフラグして、参照を整理

sudo swapoff /swap.img
sudo btrfs filesystem defragment -r /

スクラブしたら、sparse へ変換をもう一度試す。

 sudo virt-sparsify out.qcow2 out.sparse.qcow2

減った。うわやっぱりだ。btrfsはそれ自体がCOWで完成されたファイルシステムなので、btrfs をqcow上につくると、btrfs(COW) on qcow2(COW)というネストになり、ややこしいことになっていますね。

ext4 の場合

ext4 の場合はいい感じに容量が減る。btrfsはブロックをCoWで使ってるがext4は使わないので関係ない。ext4で気になるのは、予約ブロック15%くらいだろう。qcow2ファイルが100GB超でもない限り予約ブロックは気にならないはずだ。

qcow2にメンテナンス時間がかかるようなら、ディスクを先頭から順に使えばいいので、デフラグで空き容量を詰めて先頭に揃えてあげれば、qcow2 のメンテナンス系コマンドの実行負荷や実行時間を減らせるかも知れない。

関連資料。

https://takuya-1st.hatenablog.jp/entry/2022/04/18/135921

Linux作業中で一時的に短いパスワードを設定するには

リカバリ中など作業中に一時的に短いパスワードにしたい。

長いパスワードを設定していると、作業中に入力ミスが頻発して嫌だ。

ユーザ権限では変えられない。

takuya@ubuntu:~$ passwd
takuya 用にパスワードを変更中
Current password:
新しいパスワード:
新しいパスワードを再入力してください:
Bad: new password cannot be a palindrome
新しいパスワード:
新しいパスワードを再入力してください:
長いパスワードを選択する必要があります

解決策。ROOT権限でパスワードを設定すればいい

takuya@ubuntu:~$ sudo su
root@ubuntu:/home/takuya# passwd takuya
新しいパスワード:
新しいパスワードを再入力してください:
passwd: パスワードは正しく更新されました
root@ubuntu:/home/takuya#

pam.d をいじる方法もあるけれど

pamをいじってpasswd に関する制限を取っ払う方法もあるけれど、管理者から強制上書きするのが楽だと思います。

splatoon3 のデータを s3sで stat.ink に定期的にアップロード

stat.ink にバトル結果を自動的にアップロード

バトル結果をアーカイブ保存できて便利です、戦歴を見直して対策を立てられます。

コードの取得

git clone https://github.com/frozenpandaman/s3s.git

実行準備 / python 環境の準備

cd s3s
export PIPENV_VENV_IN_PROJECT=1
pipenv install 
pipenv shell 

pipenv 環境下で作業をします。

最初に依存モジュールを用意しておきます。

(s3s) pip install -r requirements.txt

APIキーを用意します。

Stat.inkにデータを投稿するためのAPIキーを、Stat.inkから取得します。

https://cdn-ak.f.st-hatena.com/images/fotolife/t/takuya_1st/20200409/20200409045324.png

ニンテンドーAPIセッションキーを取得します。

初回起動でセッションキーを登録します。

((s3s) ) takuya@:s3s$ ./s3s.py -r
Generating new config file.
s3s v0.1.11
» While s3s is in beta, please update the script regularly via `git pull`.

stat.ink API key: XXXXXXXXXXXXhdAqlouPGxxxxxxxxxx

言語を聞かれるので、en-USでいいと思いますが、ja-JPも使えるみたいなので指定しました。

Default locale is en-US. Press Enter to accept, or enter your own (see readme for list).
ja-JP

リンクが表示されます。表示されたHTTPから始まるリンクをクリック

Checking if there are previously-unuploaded battles/jobs...
Blank token(s).
Please log in to your Nintendo Account to obtain your session_token.

Make sure you have fully read the "Token generation" section of the readme before proceeding. 
To manually input a token instead, enter "skip" at the prompt below.

Navigate to this URL in your browser:
https://accounts.nintendo.com/connect/1.0.0/authorize?state=xxxxxxxxxxxxxxx&theme=login_form

認証済みセッションを作ったら、「この人にする」を右クリックして、リンク先をコピーします。

コピーしたリンク先のURL App Schema をコピーして貼り付けます。

Log in, right click the "Select this account" button, copy the link address, and paste it below:
npf71b963c1b7b6d119://auth#session_state=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx3VV2ftKJ7lNVxxxxxxxxxxxxx

これで準備は完了です。

初回起動後に、自動的にアップロードが始まります。

次回以降の起動の手順

起動手順は、次の通りになります。これをCron/Systemdなどに登録しておけばいいと思います。

cd /home/takuya/.s3s
## pyenv init 
HOME=/home/takuya
source ~/.bashrc
eval "$( /home/takuya/.pyenv/bin/pyenv  init -)"
export PATH=/home/takuya/.pyenv/shims/:$PATH

# update 
echo update ....................
git pull 
# update pip
pipenv run pip install --upgrade pip
pipenv run pip install -r requirements.txt  --upgrade
# upload battle results
echo uploading .........
echo ''
pipenv run python ./s3s.py -r -t
pipenv run python ./s3s.py -r
pipenv run python ./s3s.py -osr

systemd の例

サービスユニット

s3s.service

[Unit]
Description=Splattoon s3s

[Service]
WorkingDirectory=/home/takuya/.s3s
ExecStartPre=/usr/bin/git pull
ExecStartPre=/home/takuya/.s3s/.venv/bin/python pip install --upgrade pip
ExecStartPre=/home/takuya/.s3s/.venv/bin/python bin/pip install --upgrade -r  requirements.txt
ExecStart=/home/takuya/.s3s/.venv/bin/python    s3s.py -r
ExecStartPost=/home/takuya/.s3s/.venv/bin/python    s3s.py -r

#Restart=always
#RuntimeMaxSec=600
; User=takuya
; Group=takuya
[Install]
WantedBy=default.target

タイマーユニット s3s.timer タイマーファイル splatnet2ink.timerを作成しておく

[Unit]
Description=Splattoon s3s schedule timer

[Timer]
OnCalendar= hourly
RandomizedDelaySec=10
Unit = s3s.service

[Install]
WantedBy=default.target

ユーザー空間なら、次のところにファイルを作って起動する。

## ユーザ向け
mkdir -p ~/.config/systemd/user/
## または システム
mkdir -p /etc/systemd/user/

systemdをリロードして ユーザー unit を登録

systemctl --user daemon-reload

起動してチェック

systemctl --user status s3s.service
systemctl --user start s3s.timer
systemctl --user status s3s.service

有効化

systemctl --user enable s3s.service
systemctl --user enable s3s.timer
systemctl --user start s3s.timer

サーモンがない。

stat.ink のサーモンランのアップロードが無いの悲しい

バンカラ・マッチはバグが多いので年末まではやらないつもりなので、サーモンランしかやってない。だけどサーモンランの記録を残せない。悲しい。

定期実行時

git のマージの戦略が未設定だと、警告が出てくる。

hint:   git config pull.rebase false  # merge (the default strategy)
hint:   git config pull.rebase true   # rebase
hint:   git config pull.ff only       # fast-forward only

ローカルにクローンしたファイルを触らないのだからマージが必要ない。 その理由からff を選んでおいた。

git config pull.ff only

Lenovo のシリアルポートを購入してBIOSにアクセスる

Lenovo のシリアルポートを購入したい。

シリアルポートは、オプショナルポートとなっていて、個人用には販売してくれないとのこと

だったら法人で攻める。送料 1500円/ 個 です。

M75q-tiny でシリアル・ポートを使いたい。

サービス部品を探したら、うってる。

01AJ936 / 04X2733

01AJ936 について

電話きた、受注できません。在庫無いです。 ハード的には付いてるんだけど

04X2733 のほうがいい

問い合わせてみた 0120-000-817

届いたので取り付けた

BIOSのリダイレクトが効いてる!やったね。

Raspi 経由でシリアル・コンソールを使ってThinkCentreにアクセスした。

メーカーソフトウェアによるUEFI/BIOSの機能がコンソール・リダイレクトはちょっと不安定。OSを選ぶしね。レノボのは特にイケてない。

なので、Raspiを繋いでシリアルで繋いだほうがアクセスが快適だった。

これでThinkCentreを複数台を安心してリモートに放置できる。

openwrt で ipset をfirewall のルールに書く

openwrt で ipset をfirewall のルールに書く

ipset を使って openwrt の firewall ルールを記入する

目的

ipset を使ってルールを完結に書きつつ、OpenWRTのWEB-UI(luci)と連携したい

追記2023-04-04

バージョンによってはlist proto`を書かないと動かない。詳しくは、別エントリ に書いた。

準備

ipset を準備する。

opkg install ipset

ipset コマンドの使い方の確認

ipset にテーブル(リスト)を作って、そこにデータをいれて、中身をみて、リストを消す方法。最初に覚えておいてサクッと確認する。

ipset list 
ipset create my_list hash:ip 
ipset add my_lisrt 192.168.1.1/32
ipset list my_list 
ipset list -n 
ipset destory my_list

ipset を firewall ルールに追加する

openwrt の firewall は ipset のルールを使用可能なので、マニュアルにしたがって記入する。

以下の設定例は、ファイルに記載されたIPアドレスをipset に読み込んでリスト表を作成する。

記入例

config ipset
    option name 'public_dns'
    option storage 'hash'
    list match 'dest_ip'
    option enabled '1'
    option family 'ipv4'
    option loadfile '/root/my-ip-list.txt'

ファイルに記載されたIPアドレスを読むこんで、IPSetのリスト表が作成される。

再起動して確認。

service firewall restart
ipset list public_dns

記述ミスがあると、再起動しても反映されない。

Warning: Option @ipset[0].storage has invalid value 'hash:xxx'

Warning と出てくるが、実際にはエラーである。記述を見直してエラー修正して、再起動

設定例2 / 日本のv4アドレスに限定する。

設定例2

config ipset
    option name 'jp_addr_list'
    option storage 'hash'
    list match 'src_net'
    option enabled '1'
    option loadfile '/etc/jp_addr_list.txt'

最初の例と違って、IPアドレスではなく、ネットワーク範囲で指定している。 ファイルの記述例 / jp_addr_list.txt

153.120.0.0/13
153.128.0.0/13
153.136.0.0/14
153.140.0.0/15
153.142.0.0/16
153.143.0.0/19

作成済みIPSet を使う

IPSetを使ったファイアウォールのルールを記述する。

名前を使って、IPSetのリスト名を指定する。

config rule
    option ipset 'public_dns'

設定例

config rule
    option src 'lan'
    option dest 'wan'
    option ipset 'public_dns'
    option target 'REJECT'
    option device 'my-pppoe'
    option direction 'out'
    option family 'ipv4'
    option name 'reject public dns '

上記の設定例はpublic_dns へのFORWARDを拒否する。public_dns を使わせないようにする設定を書いて、DNSサーバーで監視するGoogle HomeやTP-linkを締め出す設定例。

設定のマニュアル

指定可能な項目は、OpenWRT wiki にマニュアル記載があるので、細かい指定はマニュアルを参照すると良い。

journald の ログをクリアする方法

再起動で消す

ログ保存を減らす(journald)ことで消す

journald の設定を変えて、ログ保存量を減らす。

sudo -E vim /etc/systemd/journald.conf
sudo systemctl restart systemd-journald   

/etc/systemd/journald.conf

[Journal]
Storage=persistent
SystemMaxUse=100M
RuntimeKeepFree=5G
RuntimeMaxUse=1G

設定を書いて再起動すると、消えます。

しかし、思ったようにきれいにならないかもしれない。

今すぐ消す

1秒前より以前のログをすべて消す。このコマンド使って全ログを抹消できる。

sudo journalctl --vacuum-time=1s

消えるものは、journalctl関連です。syslogへ転送されたログファイルは対象外です。syslog の自動削除はlogrotate が担っています。

journald の ログをクリアする( rm -rf )

ファイル自体を消しちゃうという手もある。

$ sudo find /var/log/journal -name "*.journal" | xargs sudo rm 
$ sudo systemctl restart systemd-journald

メモ

vacumm だとなぜかきれいにならないことがある。

Storageがメモリになってるときれいにならないかもしれない。

dmesg を tail -f したい

「dmesg を tail -f したい」と考えた。

dmesg の内容は journaldを経由して syslog に流れているはずなので、dmesg をずっと見る必要はないと思う。でも syslog があてにならないと言った状況では、dmesg を tail したいとなる。

dmesg を tail して監視する

dmesg -W | grep -i tty

これを使うと、dmesgから出てきたものを継続的に監視ができた。

syslog設定中にsyslog のフィルタを比較するときに便利だった。

また syslog 前にログを捨ててしまうような OpenWRT で役に立った。

参考資料

virsh で他サーバーを扱いたい(virsh 使ってssh経由で起動,再起動,コンソール)

virshコマンド で他サーバーを扱いたい

virsh コマンドで自ホストではなく、SSH経由で別サーバーを扱いたい。

virt-manager ができるんだから、virshコマンドでもできるはずだ。と考えて調べたら解決策があった。。

解決策 / 環境変数を使う。

LIBVIRT_DEFAULT_URI

ローカルの場合(デフォルト)

LIBVIRT_DEFAULT_URI=qemu:///system #{cmd}`

たとえば、SSH経由で別サーバーに接続する場合

## 環境変数に追加
export LIBVIRT_DEFAULT_URI=qemu+ssh://takuya@10.1.1.1/system
## virsh でリモート操作
virsh list

python パッケージだとか、面倒なものを入れなくても、virsh + ssh 接続だいたいの不満は解決すると思いますよ。

LXC で ppp デバイスが使えない

LXC 内部で l2tp を使おうとしたら、つながらなかったので、色々調べた。

LXC で ppp デバイスが使えない

LXC で作ったコンテナで PPPが使えない。L2TPを使おうと思ったら、以下のようにエラーになる。

Oct 24 11:12:51 a01 pppd[739]: Couldn't open the /dev/ppp device: No such file or directory
Oct 24 11:12:51 a01 pppd[739]: Kernel doesn't support ppp_generic - needed for PPPoL2TP

対策

調べたら、対策があった。

PPP はデバイスだから、config 経由で追加する。

lxc config device add <ctname> dev_ppp unix-char path=/dev/ppp

参考資料

https://github.com/lxc/lxd/issues/1436

スプラトゥーン3の通信相手を見ながらプレイする

スプラトゥーン3の通信相手を見ながらプレイする

スプラトゥーンの対戦相手のIPアドレスを見ながらプレイする。

マッチングしたタイミングや、相手のISPをみる、地域を見るなどで、ラグが予想できたり、テザリング勢が混じってると、回線切断の危険性が高い・ラグが多い、スプラトゥーン3で不快なPlayerとマッチングしないように工夫する礎石になりそうなのでログを見ることにする。

#!/usr/bin/env bash
MAC_ADDR='18:c2:bf:xx:xx:XX'

if [[ $( ip neigh | grep $MAC_ADDR )  =~ 192.168.[0-9]+.[0-9]+ ]];  then
  addr=$BASH_REMATCH;
  echo $addr
  TCP_DUMP='tcpdump -i br-lan  -s 0  'dst $addr ' 2>/dev/null'
  cmd="timeout 2 $TCP_DUMP | cut -d ' ' -f 3 | sort | uniq  "
  echo $cmd
  watch -dc -n 3 "$cmd"
fi

利用した各種コマンドについて。

上記のスクリプトで利用したコマンドについて

動作の仕組みとしては、timeout で tcpdump を指定秒間取り出し、その結果をsort uniq で通信相手を絞る。このコマンドをwatch コマンドで定期実行する。って感じですね。

MACアドレスからIPを取り出す

ip neigh | grep $MAC_ADDR =~ 192.168.[0-9]+.[0-9]+ ; 
echo $BASH_REMATCH

IPアドレス宛のパケットを表示する

tcpdump -i br-lan  -s 0  'dst $addr ' 2>/dev/null

2秒経ったら終了させて、sort/uniq する

timeout 2 $TCP_DUMP | cut -d ' ' -f 3 | sort | uniq  

3秒に一回実行する

watch -dc -n 3 "$cmd"

指定時間をキャプチャする

tcpdump -i eth0 -s 0 -w /tmp/01.pcap -G 30 dst 192.168.2.109 and udp 

pcap は packet capture の略だ思う

スプラトゥーン3のパケットをキャプチャする。

UDPでゲームしているはずなのでUDPで絞ると少なくて良いかもしれない。

tcpdump -i eth0  dst 192.168.2.109 and udp

ただ、443でGCPAWSと通信しているのでtcpdumpの中身をフィルタリングしてもいいと思う。

nvme コマンドでNVMEの状態をチェックする

nvme コマンド

SSdの状態チェックしようとおもたら、nvmeのコマンドがあった。

root@:~# apt install nvme-cli
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了
状態情報を読み取っています... 完了
以下のパッケージが新たにインストールされます:
  nvme-cli
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 100 個。
327 kB のアーカイブを取得する必要があります。
この操作後に追加で 798 kB のディスク容量が消費されます。
取得:1 http://debian-mirror.sakura.ne.jp/debian bullseye/main amd64 nvme-cli amd64 1.12-5 [327 kB]
327 kB を 0秒 で取得しました (1,286 kB/s)
以前に未選択のパッケージ nvme-cli を選択しています。
(データベースを読み込んでいます ... 現在 389870 個のファイルとディレクトリがインストールされています。)
.../nvme-cli_1.12-5_amd64.deb を展開する準備をしています ...
nvme-cli (1.12-5) を展開しています...
nvme-cli (1.12-5) を設定しています ...
man-db (2.9.4-2) のトリガを処理しています ...
root@acid:~#

https://wiki.archlinux.org/title/Solid_state_drive/NVMe#Controller_failure_due_to_broken_APST_support

nvme get-feature /dev/nvme0 -f 0x0c -H

状態見るだけならsmartctl でイイ気もする。

細かい機能を設定してチューニングするようでした。