Lazy Diary @ Hatena Blog

PowerShell / Java / miscellaneous things about software development, Tips & Gochas. CC BY-SA 4.0/Apache License 2.0

Linux

JavaVMがOOM Killerでkillされた際にヒープダンプは出力されない

JavaVM内でOutOfMemoryErrorが発生した場合は、当然オプションに従ってヒープダンプ(java_pid*.hprof)が出力される。 一方、Linux上で動作するJavaVMがOOM Killerでkillされた場合、同じオプションを指定していてもヒープダンプは出力されない。 以下のよ…

Red Hatの「RHCE 認定試験」にはEX300とEX294がある

Red Hatの「RHCE認定試験」には、RHEL7向けのEX300*1とRHEL8向けのEX294*2がある。同じ「RHCE」という名前の資格だけど、「試験の内容」を読むとぜんぜん別物みたい*3。 EX300の試験自体はすでに受けられなくなっている(Retired)けど、EX300試験を対象にし…

fdisk(1)ではGPTパーティションに名前を指定できない

GPTパーティションにはパーティション名(72バイトまで)を指定できる。 parted(1)ではnameコマンドを使ってparted name 2 "Partition Name"のようにすればよい。一方fdisk(1)ではGPTパーティションに名前をつける方法がない。fdiskを使いなれている場合は、…

逆引き順(reverse index)で文字列をソートする

注意事項 逆順(reverse order)でなく逆引き順(reverse index)であることに注意。また日本語の「逆引き」は、文字列の先頭と末尾を逆にした並び(reverse index)の意味と、意味から単語を探す(reverse lookup)の意味の両方で使われる。ここではreverse…

タイムスタンプを変えずにテキストファイル中の文字列を置換する

howmで大量に作ったファイル中のWiki風リンク[[foo]]を[[bar]]に変えたいとかの場合。howmのテキストファイルが保存されているディレクトリにcdして以下のように実行する。 find . -xdev -type f -exec sed -i.bak 's/\[\[foo\]\]/\[\[bar\]\]/g' {} \; -exe…

grep(1)にPassThru相当のオプションはない ほか

sh(1)のパイプの中で左辺のコマンドの戻り値を${PIPESTATUS[0]}で参照することはできない。 grep(1)でマッチの結果にかかわらず、すべての行を標準出力へ出力することはできない。 tee(1)でパイプの入力を複数のファイルディスクリプタに複製して出力するこ…

sshのauthorized_keysのcommandでパイプは使えるか

authorized_keysのcommand=オプションにパイプを含むコマンドを指定できるか実験。 command="find /home/satob -maxdepth 1 -name '*.sh' | xargs grep '#!'" ssh-ed25519 AAAAC3Nz... pipe@example.com 実行してみたらこんな感じ。問題なく実行できた。結局…

rbashでディレクトリトラバーサルは防げない

satob.hatenablog.com で挙げた # cat authorized_keys command="ls /$SSH_ORIGINAL_COMMAND" ssh-rsa AAAAB.... $ ssh root@xxx.xxx.xxx.xxx -i ~/.ssh/com "tmp;hostname" ls: /tmp;hostname: No such file or directory みたいなケースで$SSH_ORIGINAL_CO…

外部プロセスとしてシェルスクリプトを起動する方法

任意の処理系から外部プロセスとしてシェルスクリプトを起動したい場合、大きく以下の2つの方法が考えられます。 (1) shの引数にシェルスクリプトを指定する /bin/sh foobar.sh のように、shの引数にシェルスクリプトを指定して起動する。 shに与えるパラメ…

シェルスクリプトに渡す引数をサニタイズ

シェルスクリプトに渡した引数を、スクリプト中で単純に$@で参照すると、OSコマンドインジェクションを招くおそれがある。 $ cat sanitize4.sh #!/bin/bash ash -s <

VM上のUbuntuとWSL2上のUbuntuの違い

WSL2が入ったのでUbuntuを入れてみた。主にsystemdの不在に伴って、VM上のUbuntuとはいろいろと違いがある。常用のツールはWSL2で、systemdやら何やらシステム管理のお試しはVMWareでやるのがいいかな。 initはsystemdではなく、MSが作ったinitが使われる。s…

rsyncでページキャッシュを汚さない方法

rsyncは大量のファイルを走査するため、普通に実行するとページキャッシュに乗ったファイルが追い出されてしまう。 Linuxの場合、nocacheコマンド*1を利用することでページキャッシュを汚さずにrsyncを実行できる。リモートでもrsyncが実行されるので、以下…

Linux system clock does not sync to hardware clock on Hyper-V

Background: You are running Linux on Hyper-V guest VM. Your host machine has scheduled downtime (i.e. is not 24/7 system). Problem: When you booted up the host machine, the system clock of guest VM (Linux) will be set to the time you had s…

howmメモのタイムスタンプを補正する

リモートのサーバ等からタイムスタンプを保存せずに持ってきてしまったhowmメモファイルのタイムスタンプを、ファイル名に合わせて修正する。ファイル名は「./2019/12/2019-12-31-235959.txt」形式を想定。 $ for i in `find . -name "*.txt"`; do yyyy=$(ec…

Intel 82830なマシンにUbuntu 8.04がインストールできない

Intel 830 チップセット (Intel 82830 CGC (Chipset Graphics Controll)) を使用したマシンに Ubuntu 8.04 をインストールしようとすると、X Windows が起動せずインストールシーケンスが進まない。 具体的には、起動時のスプラッシュは問題なく表示されるが…

Gentoo地獄

Gentoo Linuxをちょっとずつセットアップしてますけど、特に日本語環境まわりがまだ荒削りだなぁ、と。 jfbtermで日本語が豆腐っぽいものになっちゃうとか kterm上でemergeを実行するとダウンロードのプログレスバーの表示がおかしいとか、vimを起動しても表…

SMP 環境で MySQL のプロセス数が増えるとスケールしない話

以下の実験結果によると、どうやら malloc() が犯人だった模様。「スケジューラが悪いわけじゃないよ」と言っていた Andrew Morton は間違ってなかったみたい。 http://ozlabs.org/~anton/linux/sysbench/

Google 東京に行ってきました

Google 東京で Andrew Morton が講演をするってんで、面白そうだと話を聞きに行きました。以下、主に技術的な内容の報告です。 デレック・ユーさん Google の歴史とかの説明。 Google ops ってナニよ?という説明。ユーザサポートとか、ユーザサポートの人を…

MaxiVista を Wine 上にインストール

Vine Linux 3.2 + Wine 20050830 の環境に MaxiVista をインストールして、セカンドディスプレイにしたい。 $ wine Maxivista_Setup_SecondaryPC.exeとするとインストーラ自体は問題なく起動するのだが、インストール先ディレクトリの指定でエラー。どんなデ…

あるファイルがどのパッケージをインストールしたときに入ったか調べる

RPM $rpm -q --whatprovides /usr/bin/a2ps (from http://www.a-yu.com/system/rpmc.html) dpkg $ dpkg -S /usr/bin/a2psj (from http://debian.fam.cx/index.php?AptGet)

RPM パッケージを作ってみた

Vine Linux 用 rsync の .rpm パッケージには xinetd 用の設定ファイルが入っているが、 Vine Linux では xinetd なんか使えないのでこれは意味がない。また、 rsync を daemon として動作させるときの設定ファイルも入ってない。 ということで、 rsync 本体…

Tgif で日本語を扱う話

Debian sarge で次の手順を行うと面白いことになる。テキスト選択もできない。 次の内容を Tgif の図中に書いて EPS として出力し それを含む TeX ファイルを作成、 タイプセットして DVI ファイルを作り dvipdfmx で PDF に変換する □□□ □・□ □ゴ□ □ガ□ □リ…

IDE to USB アダプタを使って IDE ドライブを接続 (3)

ところがこれにも問題が。 Debian に戻って、 dd で Western Digital の HDD のイメージを取ろうとしたら…… dmseg は次のような感じ。 usb_control/bulk_msg: timeout usb_control/bulk_msg: timeout usb_control/bulk_msg: timeout usb.c: USB disconnect o…

IDE to USB アダプタを使って IDE ドライブを接続 (2)

KNOPPIX を使ってテストしてみたところ、どうやら問題があるのは HDD の方らしい。 Seagate の HDD を使ったら問題なくマウントできました。というわけで、 少なくとも、 Western Digital の HDD を USB to IDE 変換ケーブル "R-Driver II (USB 2.0 TO IDE C…

IDE to USB アダプタを使って IDE ドライブを接続 (2)

OS Debian GNU/Linux sarge, kernel: 2.4.27 Adapter R-Driver II (USB 2.0 TO IDE CABLE) HDD Western Digital Caviar 31600 (1.6GB), Jumper は SINGLE 設定。 IDE 接続では問題なし(OS 起動確認) 備考 USB フラッシュメモリ(I-O DATA EasyDisk Mate 64…

EPSON LP-9000C で白黒印刷ができない

上記の方法で印刷はできるんだけど、 CUPS の設定ダイアログには白黒オプションがありませんので普通のテキストを印刷するには不向き。EPSON のドライバには BitsPerPixel オプションがそもそもない、という話も(未確認)。 あと、印刷可能領域の設定がおか…

Debian sarge で EPSON LP-9000C が CUPS から使えない

何か印刷できないよ、というときの対処法も含めて。 まず、 /etc/cups/cupsd.conf の LogLevel を default の "info" から "debug2" に変更。これで、 /var/log/cups/error_log にフルに情報が出力される(印刷したりする際に tail -n 0 -f して見てみよう)…

USB フラッシュメモリの mount

まず、次のコマンドを忘れないこと。 $ sudo /sbin/modprobe usb-storage次のようにコマンドを実行して、こういうエラーメッセージと…… username@hostname:~$ sudo mount -t vfat /dev/sda /mnt/usbdrive/ mount: wrong fs type, bad option, bad superblock…

manpage の (1L) の "L"

locate とか updatedb とかの manpage をひくとは、先頭に locate(1L) とか updatedb(1L) とか表示される。 "1" はいいとして、この "L" ってナニ?

updatedb -> slocate

locate(1) のデータベースを更新するためのコマンドとして知られている udpatedb(1) ですが、 Vine Linux 3.2 ではその正体は slocate(1) への symlink でした。 通りで次のコマンドで '/home/hoge' が索引から外されないはずだわ。 $ sudo updatedb --prune…