動かざることバグの如し

近づきたいよ 君の理想に

linux

Ubuntuでディスクを完全にフォーマットする

ただのフォーマットでは消せないので、0埋めをする 戻せないので注意 方法 Ubuntuではデフォルトで shredというコマンドがインストールされている。 -v 進捗状況を表示する -n (回数) ランダム情報を書き込む回数を指定する(デフォルトは3) -z 最後に0を書…

Raspberry Piがたまに重くなるのはapt-daily.timerのせいかも

結論 もしRaspberry Piの /var/log/syslog に以下のようなログがあったら重くなってるかも Oct 5 19:03:10 raspi13 systemd[1]: apt-daily-upgrade.timer: Adding 23min 12.345204s random time. Oct 5 19:03:10 raspi13 systemd[1]: apt-daily.timer: Addin…

Squidで多段プロキシサーバーを実現する設定

構成 そもそも多段プロキシだが、Squidで受けたアクセスをさらに別のSquidへ流す仕組み 通常 [ client ] -> [ Squid server ] -> [ WEBサイト ] だが、これを [ client ] -> [ Squid serverZ ] -> [ Squid serverA ] or [ Squid serverB ] -> [ WEBサイト] …

jqコマンドで複数フィールドの値を1行に表示させる

たとえば {"users":[{"id":1,"name":"taro"},{"id":2,"name":"hanako"}]} のようなJSONがあったとして、 1 taro 2 hanako のように整形して表示させたかった 結論 jq単体ではできないので xargsコマンドを使う ruby a.rb | jq -r '.users[] | .id, .name' | …

Unixドメインソケットをコマンドから生成する

一生に1回くらいの頻度で、Unixドメインソケットを自分で作りたいと思うことがあるはず(ない コマンド 調べてみると、意外にもLinuxのコマンドでは生成できないらしい。 で、何故かPythonで作れた /tmp/test.sockに作りたいUnixドメインソケットの絶対パス…

インストールされたOpenCVのバージョンを確認するコマンド

環境 Ubuntu 18.04 OpenCVバージョン確認する! 自分が入れたサーバーなら流石にどのOpenCVを入れたか分かるが、プリインストールされていたり、他人がインストールしてた場合はバージョンがわからない。そこでコマンドで確認する方法をいくつかまとめておく…

Jetson NanoのWifiが不安定問題

Jetson Nano自身にはWIFIは搭載されてないので、自分でUSBのWifiアダプタを購入して接続する必要があるのだが、いかんせん不安定だったのでメモ 環境 Jetson Nano WIFIアダプタ Edimax EW-7811Un 他のWIFIアダプタを試しても症状は同じだった 状況 pingです…

Jetson NanoにTensorFlowとKerasをインストール

Jetson Nanoとは1万円弱で買えるRaspberry Pi大きさ並みのGPU付きシングルボードコンピュータである。 で、GPUがあるということは当然機械学習用なわけで、早速ライブラリのインストールをした 環境 Ubuntu 18.04 CUDA 10 最初から入ってる python 3.6 pyen…

systemdで起動すると/etc/security/limits.confの設定は効かない

検証環境 Ubuntu 18.04 背景 Ubuntuサーバー上にElasticsearchを構築しようと思った。 が、起動時に以下のようなエラー [2019-04-10T15:59:19,986][ERROR][o.e.b.Bootstrap ] [deca01] node validation exception [1] bootstrap checks failed [1]: memory l…

特定のNIC経由で通信できるか確認するコマンド5選

通信できるか確認したい ネットワーク系の問題を解決するのはプログラミングより厄介で、いわゆる問題の切り出しが肝になる。 ここでは特定のNIC(ここではeth0)とか自身のローカルIPを指定して、そこ経由で通信可能かどうかをチェックできるコマンドをまと…

raspi memo

ネットワークの設定 hostnamectl set-hostname raspi13 # cat /etc/wpa_supplicant/wpa_supplicant.conf ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 country=JP network={ ssid="xxxx" psk="xxxx" } ip link set wlan0 down …

LinuxでL2TP/IPsecなVPNサーバーを構築する

自宅で動いているTinker Board(ARM)を使ってVPNサーバーを構築してみた。 PPTPでVPNサーバーを構築するのは割と楽なんだが、セキュリティ上の理由から、Macではその認証経由では接続できない。ということで、L2TP/IPsecしかなく、YAMAHAのお高いルーターを…

Nginxで全リクエストをメンテナンスページにリダイレクトする設定

環境 nginx 1.14 やりたいこと メンテナンスするのですべてのリクエストを遮断したい。けどnginx 404のエラーページ出るのは良くないので、用意した静的htmlファイルを表示させたい。 設定 まずnginxの設定を以下。 server { listen 80; server_name hogehog…

ChefでTimezoneとhostnameの設定が1行で出来るようになってた

Chef記事、もっと流行ってほしい。。。(切実 環境 Chef 14 Ubuntu 18.04 ChefでLinuxの構築をしているのだが、タイムゾーンとかhostnameの設定もしなくてはいけない。 が、割とOSによって方法が違くて面倒だったりしたのだが、たまたま公式ドキュメントを見…

Docker&dnsmasqでローカルにオレオレDNSサーバーを構築する

Macで開発する際に/etc/hostsを書き換えて作業することが結構おおい。 が、そのたびにhosts書き換えるのもだるいし、/etc/hostsの悪いところはワイルドカードに対応していないところである。。 ってことで、今回はMacにDNSサーバーを入れてみることにした。…

Linuxでデフォルトゲートウェイを変更するコマンド

環境 centOS Ubuntu 最近のディストリビューションならipコマンド入っているのでいけるはず コマンド 例えばデフォルトゲートウェイのIPを192.168.0.1、経由NICをeth1とすると、 /sbin/ip route replace default via 192.168.0.1 dev eth1

sedコマンドで正規表現を使う場合は注意が必要

結論 sedコマンドの正規表現は高級言語の正規表現と同じ感覚で使うと死ぬ 必ず動作テストをすべし 発端 例えば以下のようなテキストファイルがあったとして、 ~ $cat /tmp/sample.txt 1a 2b 3c 4a 5b 「a」を含む行を一括削除したいとする。以下のコマンドで…

Chefでyarnをインストールするレシピ書いた

やりたいこと yarnでnpmパッケージのインストールを行いたいのではなくyarnバイナリファイル自体をChefで自動インストールしたいって話 レシピ include_recipe 'apt::default' apt_repository 'yarn' do uri 'https://dl.yarnpkg.com/debian/' key 'https://…

msgpackをコマンドラインで使う

MessagePackと呼ばれるJSONのような、、だけど似て非なるオブジェクト形式がある。 MessagePack: It's like JSON. but fast and small. 具体的な説明は公式ドキュメントに譲るとして、phpやruby 、Pythonで扱うライブラリはあるものの、linuxのコマンドで使…

Amazon Linuxのsysctlの設定を参考にすべき

EC2でハイスペックなインスタンスを作成してAmazon Linuxを起動すればベストな設定のsysctlの値が取得できるのでは説 abi.vsyscall32 = 1 crypto.fips_enabled = 0 debug.exception-trace = 1 debug.kprobes-optimization = 1 dev.hpet.max-user-freq = 64 d…

Ubuntuでdebファイルをインストールせずに解凍だけする

環境 Ubuntu 18.04 やりたいこと 通常apt install nginxのようにaptコマンド経由でパッケージのインストールを行うが、事情的に.debファイルを落としてきてインストールってパターンもある。 ただパッケージマネージャー経由じゃないだけあって先に手元で解…

dockerでWineをインストールするときにライセンス確認画面から進めない問題

環境 Ubuntu 18.04 wine 1.6 症状 ubuntuのイメージを使ってdockerをbuildする。 RUN apt-get update RUN apt-get install wine1.6 xvfb -y みたいにwineインストールしようとすると、 (略) If you acquired this product in the United States, this EULA…

シェルスクリプトからrbenv上のrubyを実行したい

環境 rbenv 通常rbenvは/etc/profile.dか~/.bashrcなどの読み込み時にロードされる。 が、シェルスクリプトからだとロードされないのでrbenvが無い環境扱いになってしまう。 ので、以下のように明示的にrbenvを読み込ませる必要がある。 #!/bin/bash export …

Linuxでパーミッション情報やシンボリックリンクを維持したままコピーしたい

特定のディレクトリをバックアップしたいとき、cp -r target destすればもちろんコピーできるが、とっても大切なデータの場合慎重になる。 というのもcpコマンドではパーミッションまで保持してくれないからである。 -aオプションをつけると属性を引き継いだ…

Let's EncryptのワイルドカードSSL証明書の更新に苦労した話

経緯 一応ドメインを持っていて、turai.work ドメインを持っているのだが、Let's EncryptのワイルドカードSSL証明書で運用している。 期限も近づいてきたし、certbot-autoコマンドで更新するか〜と思って更新を実行したのだが /root/certbot/certbot-auto re…

docker-composeでアスタリスク(*)を含むコマンドを実行したい

なんでできへんのや 環境 $docker -v Docker version 18.06.1-ce, build e68fc7a $docker-compose -v docker-compose version 1.22.0, build f46880f やりたいこと docker-composeが起動している上で以下のようにするとdocker内でコマンドを実行できる。 doc…

FFmpegで指定時間ごとに静止画を切り出して連番画像で出力する

動画を機械学習されるあたり、画像に変換する必要があったのでメモ。なんかググって一番最初に出てきたサイトのオプションではできなかったので注意 1秒毎に〜枚画像を生成したい場合 -rオプションをつけることで指定フレームごとに抽出できる。以下のように…

iptablesミスってEC2インスタンスにSSHログイン出来なくなった時の対処法

の対処法 試したのはCentOSだけど、Ubuntuとか他のディストリビューションでも可能と思う sshできなくなったら復元は不可能 GCPみたいに画面を擬似的に映し出す機能はないし、ServersManVPSのようにiptablesを謎の力でリセットするなんてことはEC2では出来な…

シェルスクリプトで引数オプションをパースするテンプレート作った

なんだかんだ言ってシェルスクリプトはどの環境でも動くから自作スクリプトを走らせるにはbashが一番だったりする。 しかしlinux系コマンドでよくある ./exe.sh -i hoge.txt -o out.txt -a みたいなオプションを自分で1から実装するのはつらい。そこでgetop…

ethtoolでネットワークのリンク速度を設定する

Linuxで1GのNICから10GのNICへファイルのコピーをしてたが、めっちゃ遅い。どうもネットワークデバイスが意図しないリンク速度として認識してしまってるらしい。いわゆるオートネゴシエーションが悪さしてるっぽかったので、無効化して手動でリンク速度を設…