- blogs:
- cles::blog
xargs を使ってコマンドを並列実行させる
sh
cli Linux 上のバッチで重い処理(例えば画像処理など)をする際に、複数プロセスを同時に起動したいということがあると思いますが、自分でマルチスレッドのプログラムを書くのは骨が折れます。そんなときに xargs を使うとかなり楽に複数プロセスの処理が書けることが分かったのでメモ。
以下の -P の部分がポイントで、これがプロセス数の指定になります。
時刻を見ると分かる通り、コマンドが 2 つずつ実行されていることが分かります。
webdrivermanager で ChromeDriver を自動アップデート
selenium
sh
java 久しぶりに selenium のスクリプトを起動しようとしたら、以下のような例外を吐いて起動しなくて困ってしまいました。
エラーメッセージを読む限り、ChromeDriver と Chrome のバージョンが合っていないというエラーのようです。
以前書いたとおり Chrome は apt を使って導入しているので、定期的にバージョンアップされます。
ところが、ChromeDriver は手動インストールなので、これらのバージョンがズレてしまうというのが問題の根本的な原因です。
エラーが出てから対処するというのでも良いのですが、やはりこういうのは未然に防ぎたいもの。
というわけで、自動的に ChromeDriver を更新するための良い方法がないかと思って探してみたら、webdrivermanager というプロジェクトを見つけました。
webdrivermanager はインストールされているブラウザのバージョンに合わせた Selenium 用のバイナリドライバを自動的にダウンロードしてくれるという java のプログラムです。Maven などに組み込んで動かすのが一般的なようですが、今回は単純にコマンドラインから起動して /usr/local/bin/chromedriver を更新するようなスクリプトを組んでみました。無駄な動きがないように、インストールされた Chrome のバージョンをファイルで覚えておいて、バージョンアップされている場合にのみ動作するようにしてあります。
コマンドが成功するまで繰り返し呼出すシェルスクリプト
sh 成功するまでコマンドを繰り返し実行するシェルスクリプトを書いてみました。
単純に永久ループさせてしまうと問題になる可能性もあるので、一定回数失敗したら諦めるようにしてあります。
/path/to/command の部分を呼出したいコマンドに変更するだけです。
最大リトライ回数(MAX_RETRY)やリトライ間隔(INTERVAL)については適当に調整してください。
find で空ディレクトリを削除する
sh シェルスクリプトで空ディレクトリを探して削除する方法がないかと思って調べてみたら、思いのほか簡単でびっくり。
以下のように find の -empty オプションを使えば1行で書けます。
例えば、30日以上古い空のディレクトリを削除する場合。
bat ファイルで YYYYMMDDHHMMSS を得るには
bat
sh バッチ処理を書いていると、ログやファイル名などに現在のタイムスタンプをつけておきたいことがあります。
Linux のシェルスクリプトだと、以下のような感じで date コマンドを使えば簡単に YYYYMMDDHHMMSS の文字列を得ることができます。
ところが、Windows の bat ファイルの場合には一筋縄ではいきません。
いろいろ調べてみて、同様の操作が一撃ではできないことが分かりました。
とりあえず以下のように2行で書く感じにすれば YYYYMMDDHHMMSS が得られるようです。
† 参考
WSL の Ubuntu 上に簡易な CA を立ててみた
wsl
ssl
sh
idrac WSL 上の Ubuntu 上に OpenSSL を使って簡易な CA を立ててみたのでメモ。
そもそもなんでこんな事をする羽目になったのかというと、iDRAC6 の仮想コンソールが開けないという問題*1にハマってしまったから。
とりあえず以下のスクリプトを WSL のコマンドプロンプトに貼り貼り付ければ demoCA というディレクトリに CA が作成できます。
必要があればBASE_SUBJ や CA_NAME は変更してください。
genca.sh
使い方はデスクトップに .csr ファイルを置いて、./sign.sh の引数に .csr ファイルの名前を渡せば、署名済みの証明書ができます。
stateOrProvinceName が CA と CSR で合っていないと以下のようなエラーが出るので、証明書を発行するときに CA 側で CommonName 以外の Subject は CA と同じものに上書きするようにしてあります。
The stateOrProvinceName field needed to be the same in the CA certificate (###) and the request (###)
帰投機を見送ってから僕も帰投(入間基地航空祭 2018)
jsdf
saitama
入間基地
航空祭
F-2
F-15
C-2
E-2
SH-60
UH-60
AH-1 最後に帰投機の離陸を見届けて帰ります。
† 松島の F-2B の隠し技
松島の F-2B はどうやらブルーインパルスの演技中にエンジンを回していたようで、ブルーの演技後すぐに飛び立っていってしまいました。
離陸時に羽根フリフリみたいなのもなかったので、ずいぶん淡泊だなぁ、もうちょっとサービスしてくれてもいいのになぁと思いましたが、TL を見てみるとタキシングの時にキャノピーの中から「自衛官募集」とか「#ブルーより蒼い方」という文字が書かれた紙を掲げるという渾身のネタをやっていたらしく、TL を見るとこれが大ウケだったみたいですね。
† C-2 には部隊マークなし?
美保から来た C-2 にはなぜか部隊マークなし。
ロービジで見えないだけかと思ったのですが、写真でも確認できないので、ついていないんですね。
† その他
日本の E-2C が飛んでいるのを見たのは 2011 年以来でしょうか。陸自の AH-1S や海自 SH-60K、百里の UH-60J や U-125A、小牧の C-130H などもみんなに手を振られながら帰投していきました。
GeoLite2 用の CSV から GeoLite Legacy 用のデータベースファイルを生成する
python
sh
programming GeoIP-update がエラーを吐いているをずっと放置していましたが、エラーの原因を調べてみたところ、現行の Legacy Database は更新が停止されていました。現在はウェブから 2018 年 3 月版のみがダウンロードできる状態で、このファイルも 2019 年 1 月にはウェブサイトから削除されるというスケジュールになっているようです。
GeoLite は後継版の GeoLite2 の提供が始まっているので、こちらに移行して欲しいようですが、今使っている全てのアプリが GeoLite2 に対応しているわけでもないというところが、頭の痛いところです。
† 延命スクリプトを書いてみる
ふと、GeoLite Legacy のデータベースは単純なので、無理やり GeoLite2 用の CSV から GeoLite Legacy の .dat を作ってみることはできないだろうかと思ってちょっと組んでみたら、1~2時間くらいで完成してしまいました。もしかしたら、同じように移行で悩んでいる人もいるかもしれないので、GitHub にスクリプトをアップしておきました。
実際の .dat へのコンバートは mteodoro/mmutils に同梱されている csv2dat.py を使っています。GeoLite Legacy はどうやら国の種類が増やせないらしく、コソボ (XK) のデータの部分で以下のようなエラーを吐いてしまうので、この部分を回避するために少しパッチを当てたものを使っています。今後、国が増えたりするとパッチの部分を増やす必要がでてきますね。
† 導入方法
Python 2.7 にパスが通っていれば、こんな感じで導入や DB 生成ができるはずです。
標準で導入されている dat と生成された dat の比較は geoiplookup で行うことができます。
最後に OS 標準の .dat のリンクを書き換えておけば導入は完了です。
データは1ヶ月に1回しか更新されないので、たまに手動で実行するくらいで大丈夫なはずです。
海自は装備試験機を展示 (2018 NAF Atsugi Spring Festival)
kanagawa
厚木基地
jsdf
P-3
SH-60
C-130
P-1
prototype
log を常時監視して slack にポストする
sh
slack 以前、「snmptrapd の通知を Slack に飛ばす」というのをやりましたが、ファイルを tail -f で監視しておいて、特定の文字(例えば [ERROR])が来たらそれを Slack で通知するというシェルスクリプトを組んでみました。
ベースがあるとあっという間にできますね。
いろいろオプションがついてしまっていますが、基本的にはバッファリングさせないようにするものです。
- sadpkv
- CACHEMANAGER.phpというのはどうだろうかと
- pairb1m
- Lightning のToDoリストを複数のPCで共有できるアドオン
- majodca
- 九州旅行から帰ってきました
- majodca
- 九州旅行から帰ってきました
- hot534
- yum を使って OpenVPN をインストールする
- dresssu3
- NP_Trackbackを騙るトラックバックspamについて
- zippern7o
- NP_SpamBayesJP jp1b
- park81o
- Google Docs をメールフォームとして使う
- fogmpl
- なんで官庁の文章はPDFなんだろうか
- cutjw9
- 即席スライドショーを作る
- frightenlho
- 添付ファイルの容量を表示する「Attachment Sizes」
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(5066)
3 . GitHub が全ての公開リポジトリへのシークレットスキャンを有効に(4202)
4 . 年次の人間ドックへ(4134)
5 . 2023 年分の確定申告完了!(1つめ)(3992)
Academic[574]
Book[155]
Diary[522]
Disaster[101]
Foodlogue[1425]
Game[284]
Goods[805]
Healthcare[341]
Hobby[32]
IT[1195]
Military[343]
misc.[1570]
Mobile[510]
Music[38]
Neta[106]
News[95]
Photo[391]
RealEstate[120]
Security[1178]
SEO Contest[36]
Software[634]
Tips[1886]
Travelogue[1238]
Web[675]
Work[193]