A Micro Toolbox

ソフトウェアのニッチな問題の対処記録です

UNIX/Linux

nzip: 入れ子のzipファイルを展開する

あるzipファイルを展開すると中にはzipファイルがあって、そのまた中にはzipファイルがあって、マトリョーシカ的になっていることがある。 例えば、JARファイルに含まれる依存ライブラリのJARが提供するクラスも一括で見たいとき、一階層ずつ展開していくの…

vmstatの出力に時刻を付けてファイル保存(ミリ秒)

Linuxでvmstatの1行ごとに時刻を付けるときにミリ秒まで入れる。 $ vmstat 3 | ruby -ne 'print Time.now.strftime("%X.%3N #{$_}"); STDOUT.flush' | tee vmstat_log.txt 18:44:25.141 procs -----------memory---------- ---swap-- -----io---- -system-- …

pacman -Syu後にMSYS2が起動しない

結論から書くと、PC再起動で復活した。 まず先に、全パッケージ更新がPGP keyのエラーで失敗した。 $ pacman -Syu ... error: msys: key "4A6129F4E4B84AE46ED7F635628F528CF3053E04" is unknown:: Import PGP key 4A6129F4E4B84AE46ED7F635628F528CF3053E04…

MSYS上のcurlで/から始まる値をPOSTする

Git for Windowsのbashでcurlを使うときに、フォームパラメータの値が「/」から始まると補完されたパスがサーバに送られる。 例えば、次のようにすると、 $ curl -F'param1=/path/to/file' http://localhost:8000/ サーバ側には param1=C:/tools/console/Git…

pwdx: プロセスの作業ディレクトリを表示

バージョンや環境設定違いのプログラムを同一サーバ上にいくつも立ち上げていると、それぞれのプロセスの作業ディレクトリを確認したくなるときがある。 やり方としては、/proc/プロセスID/cwdのシンボリックリンク先を見ればいい。 $ readlink /proc/$PID/c…

sudoは子プロセスを作る

とあるコマンドをsudo経由で実行したらpsで2つプロセスが見えた。 単純化した実行例: $ sudo sleep 300 &[1] 26061 $ $ ps -ef | grep [s]leeproot 26061 18849 0 18:44 pts/1 00:00:00 sudo sleep 300root 26066 26061 0 18:44 pts/1 00:00:00 sleep 300$ s…

RubyInstaller付属のMinttyを右クリックメニューで開く

RubyInstallerでRuby 2.6.5+DevKitをインストールしたらMSYS2が入った。 この機会にWindowsでのBash環境をGit for Windowsから変えてみた。 C:\Ruby26-x64\msys64にPATHを通す。 C:\Ruby26-x64\msys64\msys2.iniで次の行のコメントを外す。 CHERE_INVOKING=1…

Git for WindowsのMinttyを新しくする

Git for WindowsのGit Bashで使っているMinttyがversion 2.8.5と古いままだったのを新しくした。 手順は下記でQ&Aがあった。 https://stackoverflow.com/questions/50471172/how-do-i-upgrade-mintty-in-git-for-windows MSYS2のリポジトリからmintty-1~2.9.…

WSLでgnuplotを動かすとlibGL errorになる

WSLのUbuntsu 18.04 LTSでgnuplotを動かしたら、グラフが表示されたもののlibGL errorが2行出た。 gnuplot> plot sin(x) QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-volvox' libGL error: No matching fbConfigs or visuals fou…

Windows Subsystem for Linuxの初期設定

Windows Subsystem for LinuxでUbuntu 18.04 LTSをインストール後にやったこと。 1.リポジトリを日本のサーバに変更 $ cd /etc/apt $ sudo sed -i.bak -e "s/http:\/\/archive\.ubuntu\.com/http:\/\/jp\.archive\.ubuntu\.com/g" sources.list 2. 既存のソ…

watchコマンドをバックグラウンドで実行する

watchコマンドをバックグラウンドで実行しようとするとすぐに停止してしまう。 $ watch -n 10 'top -Hbcn1 > top_$(date +$F_%H%M%S).txt' & [1] 6603 $ [1]+ Stopped watch -n 10 'top -Hbcn1 > top_$(date +$F_%H%M%S).txt' $ 次のようにすればOK。 $ watc…

夏時間があっても大丈夫なバックアップファイル名

バックアップファイルを作る際、foo.txt.20151228_160123のようにファイル名に日時をつけることがある。もし夏時間(summer time / daylight saving time (DST))を採用している地域だと、切り替わるあたりでファイル名が重複したり、新旧が逆転したりするかも…

errnoの定義

C言語にはエラー原因を格納するerrnoという変数がある。実際に入った値の定義を確認する必要があって調べたところ、/usr/include/errno.hからincludeのネストを辿ることになった。 RHEL 5.5(64bit)の場合。 基本的なエラー値は/usr/include/asm-generic/errn…

lsのファイル日時形式を変える

CentOS 6.4のlsコマンドには--time-styleオプションがあって、ファイルの日付時刻の表示形式をカスタマイズできる。 通常の表示(locale=C)。 $ ls -la total 28 drwx------ 2 xxxx xxxx 4096 Aug 13 22:01 . drwxr-xr-x. 4 root root 4096 Jun 30 18:46 .. -…

passwdコマンドのパスワードチェック方法を変える実験

RHEL5で実験。一般ユーザでpasswdコマンドを実行すると、単純なパスワードははじかれるようになっている。 $ passwd Changing password for user xxxx. Changing password for xxxx (current) UNIX password: New UNIX password: ★abcdeなどを入力 BAD PASSW…

Usermin:gray-themeで検索フォーム非表示

sambaのパスワード変更をWEB画面からできるようにしたくてUserminを入れた。 # wget "http://sourceforge.net/projects/webadmin/files/usermin/1.550/usermin-1.550-1.noarch.rpm/download?use_mirror=jaist" # rpm -ivh usermin-1.550-1.noarch.rpm /etc/u…

vmstatの出力に時刻を付けてファイル保存

Linuxでvmstatの1行ごとに日付と時刻を付ける。 $ vmstat 3 | perl -MPOSIX=strftime -ne '$|=1; print strftime("%F %T ",localtime) . $_ . "\n";' | tee vmstat_log.txt こちらを参考にさせて頂いた。 http://d.hatena.ne.jp/higher_tomorrow/20110601/13…

ユーザ削除後もcrontabは残る

RHEL5.5でユーザ削除した後もcrontabが残り、後から同じ名前のユーザを作るとcrontabが引き継がれることが分かった。 # : ユーザsomeone作成 # useradd someone # # su someone $ $ crontab -e no crontab for someone - using an empty one crontab: instal…

throttle: 帯域制限付きパイプ

2016/07/16 throttleサイトがリンク切れになっていました。 同様のことがpvでできます。 - throttleというコマンドを教えてもらった。 帯域制限付きパイプになる。throttle http://klicman.org/throttle/上記サイトからthrottle-1.2.tar.gzをダウンロードし…

CentOS 6.2英語環境で日本語入力(IBus-Anthy)

VMwareにCentOS 6.2を英語環境でインストールした後に日本語入力できるようにしてみた。CentOS 5系だとSCIM+Anthyをダウンロードしてくる方法があちこちで紹介されていたけれど、yumで入れられるSCIMのCentOS 6.2用がまだなかった。 ということでOS付属のIBu…

sparkコマンドで棒グラフ化

HackerNewsで見つけたsparkコマンドを試してみた。UTF-8環境のコマンドラインで動く。まずはzipアーカイブをダウンロードして実行してみる。 $ wget -O spark.zip --no-check-certificate 'https://github.com/holman/spark/zipball/master' $ unzip spark.z…

gssftpのumask設定

Redhat Linuxについているgssftpのumask設定。 ProFTPDとかVSFTPD入れれば別に使う理由はないのだけど、一応メモ。 /etc/xinetd.d/gssftpを編集して、server_argsに -u を追加する。 man ftpd(8)によるとデフォルトは027とのこと。 /etc/xinetd.d/gssftp設定…

tcshのhistoryに日付を入れる

tcshのコマンドヒストリ表示に日付を入れる方法。シェル変数historyを次のようにセットする。 set history= ( 1000 "%h %Y/%W/%D %T %R\n" ) 表示例: $ history 101 2011/07/16 12:03 pwd 102 2011/07/16 12:03 ls 103 2011/07/16 12:04 ls -a ... $ヒストリ…

何もしないコマンド:(コロン)

UNIX/Linuxのターミナル上で作業するとき、作業ログを分かりやすくするためにコメントを入れたいときがある。シェルスクリプトなら「#」を書いたところからコメントとみなしてくれるが、コマンドラインでは使えない。そんなとき「:」コマンドが役立つ。 使用…

csh: ターミナルウィンドウのタイトルバーにホスト名を表示する

その昔。 SolarisのCDEがメインのデスクトップ環境だった頃。ターミナルウィンドウを複数立ち上げて作業することが多かった。 どのホストに接続しているのかアイコン状態でも分かるように、.cshrcに次のような記述を入れていた。 set hostname = `hostname` …