Linux Tips: Difference between revisions

9,194 bytes added ,  9 December 2023
no edit summary
No edit summary
No edit summary
 
(79 intermediate revisions by the same user not shown)
Line 1: Line 1:
*たんなるメモ
いろいろお便利なコマンド
<syntaxhighlight lang="bash" enclose="div">
apt list '~c'
apt purge '~c'
apt --purge autoremove -y
</syntaxhighlight>
*たんなるメモ
<syntaxhighlight lang="bash" enclose="div">
npm --omit=dev --omit=optional ls --all
</syntaxhighlight>
*debian bookwormメモ
大きな変更。そろそろ来ると思ってたが rsyslog がなくなり systemd journal を使う。merged-/usr が必須。このあたりは時代の流れ。自分のOSSビルド環境で /bin から /usr/bin に変わったプログラムのシンボリックリンク切れが起きて結構はまったw
https://www.debian.org/releases/stable/i386/release-notes/ch-information.ja.html
python系の変更には注意して運用する。
<syntaxhighlight lang="text" enclose="div">
5.2.2. python インタプリタは externally-managed としてマークされます
Debian が提供する python3 インタプリタパッケージ (python3.11 および pypy3) は、PEP-668 に従って externally-managed とマークされるようになりました。Debian で提供されるバージョンの python3-pip はこれに伴って、--break-system-packages オプションが指定されない限り、Debian の python インタプリタ環境へ手作業でのパッケージインストールを拒否します。
Debian ではパッケージ化されていない Python アプリケーション (あるいはバージョン) をインストールする必要がある場合、(pipx Debian パッケージにある) pipx を使ってのインストールを推奨します。pipx は他のアプリケーションやシステムの Python モジュールから隔離された環境をセットアップし、アプリケーションとその依存関係をその環境へインストールします。
Debian ではパッケージ化されていない Python ライブラリモジュール (あるいはバージョン) をインストールする必要がある場合、可能であれば virtualenv へインストールするのを推奨しています。virtualenv は Python 標準ライブラリモジュールの venv (python3-venv Debian パッケージ内)、あるいは Python サードパーティツールの virtualenv (virtualenv Debian パッケージにあります) で作成できます。例えば、pip install --user foo を実行するのではなく、任意の virtualenv にインストールするのに mkdir -p ~/.venvs && python3 -m venv ~/.venvs/foo && ~/.venvs/foo/bin/python -m pip install foo を実行します。
詳細については /usr/share/doc/python3.11/README.venv を参照してください。
</syntaxhighlight>
*avahi-browse や avahi-resolve が答え返さない問題
ホスト名に勝手にシリアル番号を付ける問題に対応した設定が原因だった。どちらが運用上いやなのかを考えて、avahi-browse や avahi-resolve は捨てて mdns-scan 使うw
勝手にシリアル番号追加問題の回避策
<syntaxhighlight lang="bash" enclose="div">
cache-entries-max=0
</syntaxhighlight>
*Ubuntu無題w
<syntaxhighlight lang="bash" enclose="div">
#!/bin/sh
systemctl stop snapd.socket
systemctl stop snapd
systemctl disable snapd
systemctl disable snapd.socket
systemctl stop snapd.failure.service
systemctl disable snapd.failure.service
systemctl stop snapd.snap-repair.service
systemctl disable snapd.snap-repair.service
systemctl stop snapd.mounts-pre.target
systemctl disable snapd.mounts-pre.target
</syntaxhighlight>
*雑多なメモ
忘れてた。久しぶりに boot してこないと console をつなげたら...fsck中...
そのままメンテナンスモードからマルチユーザモードにしてしまったら、いわゆるデバイス番号が変わってたw UUID でマウントしてるから問題は起きなかったが、昔々大チョンボしたパターンw
おまじないは忘れずにw
<syntaxhighlight lang="bash" enclose="div">
tune2fs -c -1 -i 0 /dev/sda2
</syntaxhighlight>
*雑多なメモ
binary file 探す。(今までは find でいろいろ駆使しながらやってたがこれがシンプルね)
<syntaxhighlight lang="bash" enclose="div">
grep -rIL .
</syntaxhighlight>
*雑多なメモ
SSDを容量のギリギリまでつかうのなら discard 付けとけ。でないと遅杉。fstrim じゃぁ追いつかねぇw
*make の j オプション
これにしておけば良いらしい
<syntaxhighlight lang="bash" enclose="div">
make -j$[$(nproc)+1]
</syntaxhighlight>
*smartmontools アプデ
<syntaxhighlight lang="bash" enclose="div">
update-smart-drivedb --trunk --no-verify
</syntaxhighlight>
メジャーメーカーなのにまだ db にないのもあるな。(中華SSDもけっこうdbにはいってるw)
*雑多なメモ
<syntaxhighlight lang="text" enclose="div">
pmd_set_huge: Cannot satisfy [mem 0xf8000000-0xf8200000] with a huge-page mapping due to MTRR override.
</syntaxhighlight>
なんか kernel option に enable_mtrr_cleanup がいるっぽい。
ちょっと古いPC(Win11非対応機種の値崩れ品w)に限界までメモリー積んだ(DDR3驚くほど安いねw)ので、ちょっと古い(入手できる最新にはあげたが...)BIOSが原因っぽい。
*BIOS update 後ブートしない
FAQらしい。EFI bootloader を再インストールする必要がある。外部メディアから resuce モードで boot してうんぬん。
https://wiki.debian.org/GrubEFIReinstall
楽な方法もあった。BIOS 関連のメニューに "Run UEFI Application" なる設定があれば、起動EFIパーティションにあるはずの grubx64.efi を指定して OS を boot して、grub-install /dev/sda, update-grub すればよい。BIOSいじってて、また boot しなくなって焦っていろいろやってみたら出来たw
*USB 3.x のストレージなのに遅い
lsusb で確認しても 5Gbps なのでちゃんと認識はしている。5Gbps といえば ATA と遜色ないスピードなのに桁違いに遅い。いろいろホゲると... lsblk -t でみたら RQ-SIZE が 2 だ。これじゃパフォーマンスでない。美しい設定方法を探したがわからず(udev使うとかで出来るのかもしれないが)野蛮な方法で変更した。
<syntaxhighlight lang="bash" enclose="div">
echo 16 > /sys/block/sdX/queue/iosched/fifo_batch
echo 3 > /sys/block/sdX/queue/iosched/writes_starved
echo 5000 > /sys/block/sdX/queue/iosched/write_expire
echo 500 > /sys/block/sdX/queue/iosched/read_expire
echo 64 > /sys/block/sdX/queue/nr_requests
echo 128 > /sys/block/sdX/queue/read_ahead_kb
echo 0 > /sys/block/sdX/queue/add_random
#echo 0 > /sys/block/sdX/queue/iostats
</syntaxhighlight>
*disk増設した
macos で GUID なパーティション切ってたので gdisk でtype 変えた(Linux filesystem 8300) 。あとは UUID の確認は blkid
*ionice
昨今の IO scheduler って mq-deadline らしくって、ionice が効かないとの事。また一つ賢くなったw
*PCRE2 と PCRE3
ちょっと調べてたらビックリ。pcre3 が古いのね。pcre2 が最新だと思ってたら 3 が有ったのであれあれって調べたらなんと逆だ。perl3互換ということの3だろうが...
駄菓子菓子w 少し前の ubuntu のパッケージにリンクされているのは libpcre3-dev なのだ。 perl5 互換重要ということか... 新しめの ubuntu はほぼ pcre2 になっとる。
*tcp_wrappers IPv6
IPv6 については CIDR 表記ができる
<syntaxhighlight lang="text" enclose="div">
ALL : [3ffe:505:2:1::]/64
</syntaxhighlight>
*ccache 4.1 が遅い
compression がデフォで有効になっていた。非力な環境なので無効にした。
<syntaxhighlight lang="yaml" enclose="div">
compression = false
</syntaxhighlight>
すでに圧縮されちゃったキャッシュはこのコマンドで戻る。
<syntaxhighlight lang="bash" enclose="div">
ccache --recompress uncompressed
</syntaxhighlight>
さらに、これはやりすぎかもしれないが...
<syntaxhighlight lang="yaml" enclose="div">
sloppiness = include_file_mtime, include_file_ctime, time_macros, pch_defines, file_stat_matches, locale
</syntaxhighlight>
やはりやりすぎだった。ある状況で間違ってビルドされた。いまは time_macros, pch_defines のみで検証中。
*varnish 起動ミス
超ワークアラウンドだが、/etc/rc.local に書いておく
<syntaxhighlight lang="bash" enclose="div">
/usr/bin/install -o varnishlog -g varnish -d /run/varnish
/usr/bin/install -o varnishlog -g varnish -d /run/varnishlog
/usr/bin/install -o varnishlog -g varnish -d /run/varnishncsa
</syntaxhighlight>
*壊れた symlink 一覧
<syntaxhighlight lang="bash" enclose="div">
find . -xtype l
</syntaxhighlight>
*icu めも
[http://apps.icu-project.org/datacustom/ ICU Data Library Customizer]
<syntaxhighlight lang="bash" enclose="div">
icupkg icudt57l.dat icudt62l.dat -w
</syntaxhighlight>
*めもめも
<syntaxhighlight lang="bash" enclose="div">
cat /sys/devices/system/cpu/vulnerabilities/l1tf
</syntaxhighlight>
*HTTP/2 化
*HTTP/2 化
hitch + varnish5 で簡単
hitch + varnish5 で簡単
Line 15: Line 195:


hitch.confに追加
hitch.confに追加
<syntaxhighlight lang="conf" enclose="div">
<syntaxhighlight lang="text" enclose="div">
alpn-protos = "h2, http/1.1"
alpn-protos = "h2, http/1.1"
</syntaxhighlight>
</syntaxhighlight>
Line 45: Line 225:


基本的には CentOS7 のドキュメントをなぞるのでよいが、 hitch.conf を作っておく。(手順にしたがって pem-file を追加する)
基本的には CentOS7 のドキュメントをなぞるのでよいが、 hitch.conf を作っておく。(手順にしたがって pem-file を追加する)
<syntaxhighlight lang="conf" enclose="div">
<syntaxhighlight lang="text" enclose="div">
frontend = {
frontend = {
   host = "*"
   host = "*"
Line 74: Line 254:
:が無いので renew は自分で crontab に書く
:が無いので renew は自分で crontab に書く


<syntaxhighlight lang="cron" enclose="div">
<syntaxhighlight lang="text" enclose="div">
00 04 25 * * /usr/bin/certbot renew && systemctl restart hitch
00 04 25 * * /usr/bin/certbot renew && systemctl restart hitch
</syntaxhighlight>
</syntaxhighlight>