linux

sshで急に接続できなくなった場合の対処方法 (no matching host key type found. Their offer: ssh-rsa,ssh-dss)

no matching host key type found. Their offer: ssh-rsa,ssh-dss というエラーメッセージでssh接続できない場合は ~/.ssh/config の末尾に以下の三行を加えればとりあえず接続できるようになります Host * HostKeyAlgorithms=+ssh-rsa PubkeyAcceptedAlgori…

hunspell の使い方&動かない時の対処方法

スペルチェッカーの hunspell の使い方ですスペルチェッカーといえば ispell aspell hunspell enchant あたりが定番です.2022年の時点でデファクトは hunspell ?という状況ですhunspell は Linux環境だと特に問題なく”普通"に使えますが,自分でビルドした…

エクセル(Excel)のパスワードを調べる方法

Excel(エクセル)ファイルのパスワードを忘れたと同僚が困っていたので、パスワードを解読(解除)してあげました。以下手順をメモします ツールのインストール 有料のツールもありますが、無料で利用できる John The Ripper を使いました。github からコー…

Ctrlキーとcapsキーを入れ替える(Linuxでudevを使う方法)

キーボード割当を変更して ctrl キーとcapsキーを入れ替える方法ですudev で設定するので,hotplug 対応,コンソール&Xサーバ同時に設定可能な方法となります. 要約 キーボードをUSBで接続している場合lsusb で vendorID と productID を調べます $ lsusb …

ディレクトリを再帰的に辿ってファイルのチェックサム(md5sum)を計算する方法

特定のディレクトリ以下にある全てのファイルについて md5sum を計算するワンライナーです find -type f -print0 | xargs -0 md5sum > md5sum.txt コマンドの意味は find で再帰的にディレクトリを探索して 全てのファイル名をstdoutに出力 (-type f) xargs …

debian の nvidia-graphics-drivers パッケージを自分で編集&更新する方法

debian の nvidia-graphics-drivers が古いまま(470.57.02 )でなかなか更新されないので,自力で 470.63.01 に更新しました.470.57.02 はLinux-5.14をサポートしていませんが(モジュールがビルドできない), 470.63.01 ならLinux-5.14もサポートしていま…

debian/changelog からバージョン番号を取り出す方法

debianのソースパッケージから,生成されるバイナリパッケージのバージョン情報を抽出するには dpkg-parsechangelog を使うのが簡単.例 dpkg-parsechangelog --file path/to/changelog --show-field Version dpkg-parsechangelog --file path/to/changelog …

RRDCached の使い方

RRDtool を高速化する rrdcached の使い方 RRDcached とは RRDcached は RRDtool のためのキャッシュサーバーです.RRDtool は加速度や湿度センサーの値,サーバーのCPU負荷,パケット数,と言った時系列データに特化したデータベースです.RRDtoolだけでも…

コマンドラインでUNIXタイムスタンプを日付や時刻に変換する

コマンドラインで,unix timestamp を日付や時刻に変換する方法をまとめます GNU系 (linux, debian,ubuntu,redhat,centos) date コマンドで "-d @タイムスタンプ” の書式で unixタイムスタンプを指定します $ date -d @1595812200 Mon Jul 27 10:10:00 JST 2…

大容量HDD/SDDを高速にフォーマットする方法

ext4ファイルシステムを高速にフォーマットする方法です 背景 linux で ext4でディスクを初期化すると,初期化処理は一瞬で終わるように見えます.しかし初期化処理はまだ完了していません.真の初期化処理はディスクを mount した時に始まり,その処理はシ…

ラズパイを軽量webサーバーにする

raspberry pi をwebサーバにする手順目的はフィジカルコンピューティングやIoTと呼ばれるたぐいのものです.具体的にはセンサ情報・ログのモニタリング,軽量なwebサーバである lighttpd を入れてCGI経由で python スクリプトを起動したりします.python ス…

インストーラを使わずにdebianをインストールする方法(2020年版)

debian や fedora などの linux が稼働しているPCに,新しいHDDに接続して,そのHDDにdebian をインストールする方法をまとめますこの方法は installerを使うより早い (数分で新しい debain 環境が用意できます) 既存の設定のコピーが簡単 というメリットが…

bash で乱数を使う

2行でまとめると bash で乱数が必要な場合はシェル変数 RANDOM を参照します 生成される乱数の値域は,0から32767,分布は一様分布,になります 以下詳細. シェル変数 RANDOM bash で乱数が必要な場合はシェル変数 RANDOM を参照します echo $RANDOM シェル…

Linuxでディスプレイ解像度を自動切替する方法

Linuxでディスプレイ解像度を自動で切り替える方法です. ノートPCで外部モニタを使う場合 ノートPCでサスペンドから復帰後,解像度がおかしくなる場合 画面切替機(キーボードスイッチャ,パソコン切替器)を使っている場合 などに,毎回解像度を手動で設定し…

Python でインストール済みのdebianパッケージを調べる方法

debian や ubuntu でインストール済みのdebパッケージの一覧を調べる方法です(pythonのモジュールの一覧ではなくて,linuxのdebパッケージの一覧です)コマンドラインなら $ dpkg -l 等になりますが、似たことをpythonで実装する場合は apt モジュールを使い…

2つのpdfファイルを重ねて一つのpdfファイルとして保存する

原稿 A.pdf に,別ファイル B.pdf の内容を重畳させて,新しいファイル C.pdf として保存する方法ですpdf形式で文章や印刷データを扱っていると 各ページに,フッターやヘッダーを自動で追加する pdf形式で作成したポスターに印刷&裁断用のトンボを付ける …

SysV の runlevel と systemd のターゲットの関係

ランレベルとターゲット SystemV で runlevel と呼ばれていたものは ,systemd は target と呼ばれる.対応関係は以下のとおり SysV runlevel systemd の target 3 multi-user.target マルチユーザ.Xが起動しない (コンソールのみ) 5 graphical.target グラ…

複数の静的ライブラリを結合する方法 (2019年版)

2つの static library, libX.a と libY.a を結合して libAll.a を生成する方法ですこの記事は 複数の静的ライブラリ (.a) を結合する方法 - pyopyopyo - Linuxとかプログラミングの覚え書き - の改訂版です Linux の場合 (方法1) ar scripts を使います. …

Debianが起動しない場合の復旧方法 (Bug#932935)

2019年7月28日に Debianが起動しなくなりました.原因は sid(unstable)と呼ばれる開発版のみに存在するバグです.バグレポートも出ています.症状としては,システムを再起動すると" logsave not found - requires manual a fsck "と表示されるだけでシステ…

迷惑メール対策に負けない,exim4 の正しい設定方法

ラズパイやPC Linuxで構築したサーバ機では, ログの監視結果などをメール送信できると格段に使い勝手が向上します.しかし今のインターネットは迷惑メール対策がしっかりしています.例えば プロバイダのOutbound Port 25 Blocking SPFによる送信ドメイン認…

Linuxカーネルのソースコードを読む方法(その4: list.h 後編)

Linux カーネルのソースコードを読んだのでメモを公開します.Linuxカーネルを読む際の参考になれば幸いです. お題: list.h 前回の続き,リスト構造の実装です.前回のエントリはこちら http://pyopyopyo.hatenablog.com/entry/2019/06/30/150000 リストの…

Linuxカーネルのソースコードを読む方法(その3: list.h 前編)

Linux カーネルのソースコードを読んだのでメモを公開します.Linuxカーネルを読む際の参考になれば幸いです.今回のお題: include/linux/list.h 今回はカーネル内部で多用されているデータ構造の一つとして linked list の実装を読みました.主なファイルは …

USB接続のSSD/HDDのSMART情報を見る方法

HDDやSSDの健康状態はS.M.A.R.T情報を調べると確認できます.ところが外付けドライブなどでは少し工夫しないとSMART情報が見えない場合もあります. SMART情報が見えない理由 これは,PCとHDD/SSDとの接続に以下のような様々な組み合わせがあって CPU → SATA…

pipで入れたパッケージを一括更新する

python のパッケージをコマンド一行で最新版にアップデートする方法です コマンド 普段 sudo を使わずに,--user つけてpipを実行している場合 $ pip3 list --format freeze --outdated | while IFS='==' read pkg dummy; do pip3 install --user --upgrade …

PyGObjectのインストールエラーを回避する方法

pipコマンドで PyGObjectをインストールしようとすると $ pip3 install PyGObject以下のエラーが出る場合がある Package gobject-introspection-1.0 was not found in the pkg-config search path. Perhaps you should add the directory containing `gobjec…

Windowsのドライブ(vfat)で rsync を正しく使う方法

vfat形式のドライブ(USBメモリなど)や,sambaなどでネットワーク経由でマウントしたストレージに対して rsync を使う場合は,いくつかオプションつけないと rsync の本来の性能が発揮されません.rsyncの特徴,例えば差分コピーによる高速ファイルコピーな…

Linuxカーネルのソースコードを読む方法(その2: kernel.panic)

Linux カーネルのソースコードを読んだのでメモを公開します.Linuxカーネルを読む際の参考になれば幸いです. 今回のお題: kernel.panic 今回はカーネル内部のエラー処理(カーネルパニック)の部分です.ソースコードのバージョンは linux-5.0.1 です. カ…

ラズパイのような少メモリ環境で安全にrsyncを実行する方法

組み込みLinuxのような少メモリの環境では気をつけないと rsync が原因でシステムがクラッシュする場合があります. クラッシュする理由はメモリ不足 rsync はファイルを転送する前に先ずファイルのリストを作ります.リストはメモリ上に一時保存されます.…

dmesg のアクセス制限を外す方法

dmesg を実行するとエラーが出る場合があります $ dmesg dmesg: read kernel buffer failed: 許可されていない操作です これは,Linuxカーネルの設定でアクセス制限を掛けているためです. アクセス制限の設定 アクセス制限を外すには sysctl を使います./e…

Linuxの起動が遅い原因の調査方法(その1)

Linuxの起動がものすごく遅い.10分ぐらい掛かる.そういう質問を受けたので原因調査の手順と解決法をまとめます. 起動時のログを見る方法 systemdにはシステム起動時のログを分析する機能があります.使い方も簡単まずは systemd-analyze を実行します $…