ぶていのログでぶログ

思い出したが吉日

lsblkでIOスケジューラを確認する

-o オプションに SCHEDを追加するか、もしくは -O オプションをつけることでIOスケジューラを確認できる。 # -o SCHEDの出力例 $ lsblk -o NAME,TYPE,SCHED /dev/vda NAME TYPE SCHED vda disk mq-deadline ├─vda1 part mq-deadline ├─vda14 part mq-deadlin…

PromQLでN日前のグラフと比較する

毎度忘れてそのたびに色々検索するのでブログにメモしておく。 結論から書くとoffset modifierを使うと実現できる。 prometheus.io 例えば、exampleサーバの5分間のCPUの%idleを取りたい場合は以下のように書くと思う。 sum by (mode)(irate(node_cpu_second…

Rust: assertの出力に色を付ける

before/after cargo testで大きめの構造体をassertすると↑のbefore画像みたいにとても長い出力になる。 長すぎてどこに差分があるかわからなくてとても苦労する。 そこで、afterのように色をつけるスクリプトを作ってみた。 #!/usr/bin/env ruby require 'te…

Ubuntuでlivepatchが有効化できない / error: cannot install "canonical-livepatch"が出たときの対処

有償サポートのUbuntu Advantage(以下UA)に契約するといくつかの機能が使えるようになる。 例えば、セキュリティアップデートが5年伸びるExtended Security Maintenance(ESM)や再起動せずにカーネルのパッチを当てられるLivepatchがある。 UAを契約するとト…

kittyからZellijにしてみたけど結局Alacritty+tmuxに戻ってきた

今年のはじめにAlacrittyからkittyに移行しているという記事を書いてそれ以来kittyを使っていたのだが、色々あって結局Alacritty + tmuxな元の環境に戻ってきてしまった。 それまでの変遷とか思ったことを書いておく。 kittyとの出会いと別れ kittyとの出会…

gzip/zgrepの脆弱性CVE-2022-1271を調べた

2022/04/07にgzip/zgrepの脆弱性CVE-2022-1271が見つかった。 cve.mitre.org security.sios.com すでに主要なディストリビューションでは対応が終わっている脆弱性ではあるが、gzip/zgrepがシェルスクリプトで書かれているので、シェル芸人としては気になる…

Chefのruby_blockからリソースを制御する

※ Chef + Knife-Zeroな環境を想定してこの記事を書いている。 かなり特殊な状況ではあるが、chef-clientの実行ユーザがubuntuのときにはubuntuユーザの削除を行わないということがしたい。 想定状況としては、Ubuntu VMを新たに立ち上げてbootstrapをかけ、…

live-migration-notifierをGolangにポーティングした

以前、OpenStackのlive-migrationをSlackに通知するくん通常live-migration通知くんというものを作った。 tech.buty4649.net ブログに書いて依頼、実際に会社のOpenStack環境で安定して稼働していた。 Rubyのアップデートでも特に問題なく稼働していた。 し…

grafana-rrd-serverでcollectdなどのRRDファイルをGrafanaで表示する

会社ではGitHub Enterprise(以下、GHES)を使っている。 GHESの管理コンソールにはMonitorタブがありそこで様々なメトリクスを見ることができる。 ここで見られるデータはcollectdで集計されているらしく外部にcollectdを設置することでexportすることができ…

再起動/削除/変更コマンドの頭に空白をつける

bashやzsh、fishなどではコマンドラインの先頭に空白をつけることで、そのコマンドラインだけhistoryに残さないという機能がある。 以下、fishでの実行例。 # 通常の操作だとhistoryに残る ❯ echo hello hello ❯ history -n 1 echo hello # 頭に空白を入れる…

UTCからJST/JSTからUTCの変換をワンライナーで行う

AWSからくるメンテナンスのお知らせがUTCだったり、ときどきログやグラフのタイムゾーンがUTCになっていたりする。 そんなときにJSTへシュッと変換したくなる。 dateコマンドは現在設定されているタイムゾーンで表示できるのと、-d オプションを指定すること…

Ruby向けのLINSTOR APIクライアントを作った

LINSTORはLINBIT社が出しているSoftware-Defined-Storageを実現するためのミドルウェアである。 もともとはdrbdadmの代替として登場したと記憶しているが、いつのまにかDRBD以外の管理もできたりk8sやOpenStackから利用できるようになっている。 linbit.com …

Alacrittyからkittyに移行している

普段使うターミナルはAlacrittyを使っていた。 速度や機能など特に不満はなかったが、面白そうなのでkittyに移行している。 sw.kovidgoyal.net kittyとは Alacrittyと同じGPUベースのターミナルで、独自の機能としてターミナルプロトコルの拡張がされていた…

2022年抱負

毎年うっすら抱負的なものを考えるものの、ブログなりで表明してこなかったために年末に振り返ることができなかった。 振り返りができないと、何が悪くて目標が達成できなかったのかと分析できないし、次の年につなぐこともできない。 思いつきではあるが、…

FileNameCopyを公開停止します

先程、FileNameCopyの公開停止をVectorに申請して非公開となりました。 今までのご利用ありがとうございました! FileNameCopyとは ほとんどの人は知らないと思うのでFileNameCopyについて説明する。 これは、Windows向けのフリーウェア*1で、15年くらい前(!…

📝 snap版multipassで launch failed: Remote "" is unknown or unreachable. が出たときの対処

snap start/snap stopすれば直ると思われる。 ❯ sudo snap stop multipass Stopped. ❯ sudo snap start multipass Started. 以下、調査ログとか憶測 launch failed: Remote "" is unknown or unreachable. で検索すると真っ先に出てくるのが以下のissue。 gi…

sshuttleでDNSリクエストを転送する

VPNからsshuttleに切り替えてから、不便だなぁと思っていたのはDNSリクエストを転送できないことだった。 VPNの接続先のDNSサーバに接続して、リモート先の内部で利用しているドメインを正引きするのに使っていた。 sshuttleはSSHのポートフォワードを元にし…

Rustで始める自作シェル その1

この記事はRust Advent Calender 2021の8日目の記事です。 空白だったので遡って穴埋めしています。 このブログでも何度か話題にしているが、私はreddish-shellという自作シェルをOSSで開発している。 コマンドを実行するだけなら簡単ではあるものの、日常で…

MAAS3.1の新機能:デプロイ済みのマシンを管理下におく

この記事はLinux Advent Calendar 2021の11日目の記事です。 1つ前の記事は@EbiTTさんの【Linux】cutコマンドのオプション別パフォーマンス対決でした。 GNUコマンドはオプションが多いので迷ったり知らないことがよくありますよね。 オプションを変えたこと…

sshuttleをsystemdで管理する

sshを使ってVPNっぽいことをするsshuttleというアプリケーションがある。 便利なので業務でも使っているのだけど、毎回ヒストリーから実行するのがめんどくさいのでsystemdで管理することにした。 事前準備 sshuttleは一般ユーザで実行した場合、内部でsudo…

業務で使っているPCをLinuxデスクトップにしてから3年半が経った

この記事はGMOペパボエンジニア Advent Calendar 2021の5日目とLinux Advent Calendar 2021の10日目*1の記事です。 昨日ははらちゃんのブログをもっといい感じにするでした。 差分転送することでアップロードを高速化するのは目から鱗でしたね。 データのア…

(Linuxデスクトップ) CapsLock <-> Ctrlの入れ替えをudevで行うようにした

GMOペパボアドベントカレンダー2021。今日から始まりました! …が、これはその記事ではないです。doewくんの記事楽しみですね。 さて、本題。 今まで、CapsLock <-> Ctrlの入れ替えをgnomeの機能の行っていた。 具体的には以下のコマンドを実行する、もしく…

Rustでmrubyの拡張を書く

reddish-shellでRustからmrubyを呼び出すことができたので、逆もできないかと思って試してみたらすんなりできたのでメモしておく。 前提: rust-mruby crateを使う mrubyのAPIをRustから呼び出すためには、mruby.hをRustで定義し直す必要がある。 拙作のrust-…

reddish-shell 開発進捗 v0.11.0 | Rust化完了

満足するところまで作れたのでv.0.11.0をマージした。 Rustで作り直す前にはあった機能を一部実装していない*1があるが、一旦区切りをつけたかったのでマージした。 割り切り重要。Done is better than perfect. いや意味するところは違うと思うけど…。 前回…

reddish-shell v0.11.0-beta4 開発進捗 | パイプライン、バックグラウンド実行、コマンド置換の実装

最近の開発状況をば。 コミット * e8e8867 Add command substitute * 3e7b5fe Moved internally reserved fd * a0c531f Improve pipeline and background * 7bb1db7 Improve background process and pipeline * 4d39b7f Replace FdSize to RawFd * 1cf7c73 I…

シグナルマスクのビット列をシグナル名に変換する

psコマンドの -o sigmask や、/proc/$pid/statusのSig〜は16進数の文字列で表示されていて、該当するbit数のシグナルにフラグが立っているというような見方になっている。 例えば、ps -o sigmaskで1の位が3ならHUP(1)とINT(2)がマスクされていることになる。…

reddish-shell v0.11.0-beta3 開発進捗 | コマンドの実装とRust 1.56.0

今の進捗↓ コマンドの実行を実装 変数を利用できるようにした cmd1 && cmd2 と cmd1 || cmd2を実装 if/unless/while/until/for文を実装 コマンド履歴機能を有効化 Rust 1.56.0 / 2021 editionを使うようにした 最低限の機能を実装したので少しはシェルっぽく…

Ubuntu 16.04でtftpdがunknown option -?を出力するときの対処

tftpdを削除してtftpd-hpaを入れ直す $ sudo apt install -y tftpd-hpa # tftpdも一緒に削除される 経緯 cobblerサーバをメンテしていたらtftpdが起動していないことに気がついた。 tftpdはxinetd(!)経由で起動されているので jounalctl -fu xinetd したとこ…

reddish-shell v0.11.0-beta2 開発進捗 | パーサーとレキサーの再実装完了

前回書いたとおりRustで再実装をしているのだけど、パーサーとレキサーの再実装ができた。 Rustでの再実装前と同等の機能までは実装できると思うが、%記法については実装を見送った。 github.com %記法の実装見送りについて Rubyっぽい記法を取り込みたいと…

Rustのprintln!やformat!で{}を出力する

println!やformat!のプレースホルダとして使われている {} がうまく出力できなくて悩んでいたけど、解決したのでメモしておく。 結論から書くと2つ重ねるとエスケープされるのだった。 { を出力したいなら {{ 、 } を出力したいなら}} とすればよい。