Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

linux

NanoPi Neo2がNPNトランジスタをつかう

一応電子工学科を出ておきながら、トランジスタは敬遠しておりました。 今回、預かっている試作装置に採用されている事もあり、復習がてらNano Pi Neo 2で動かしてみました。 実際のところ 配線 Nano Pi Neo 2はUSBシリアルを経由して接続。 これにより、5V…

Nano Pi Neo 2の格好いい金属ケース

NanoPi Neo2には公式からHATと金属ケースのセットがでており、これが中々にいいものです。外観はこんな感じ。 GPIOがボタンや文字盤で埋まりますが、放熱性能は向上。 ミニ六角とOS書き込み済みSDカードつき。 試験用ツールの導入 OLEDとボタンの試験動作を…

timeoutコマンドで一定時間たったらシグナルを送る処理を実装する

いままでシェルスクリプトのsleepとループでぶん回していましたが……coreutilの中に便利なコマンドがありました…… 実際のところ $ [[ $( timeout --signal=SIGHUP --kill-after=2s 2s /home/shuzo/testExit.bash > /home/shuzo/log.log ) ]] && echo none$ ca…

bashのdouble bracket ([[ ]])で論理判定する

実際のところ こんなスクリプトがあったとします ~$ cat cmd1.bash #!/bin/bash printf $(basename $0) exit 0これを二重角カッコ内で判定すると、正は0、負は1を返します。 これに&&や||をつなげて処理を続けます。 $ [[ ./cmd1.bash ]] && echo 0 0$ [[ …

ptreeコマンドで親プロセスと子プロセスの関係表示

ptreeコマンドをつかうと、親プロセスと子プロセスの関係を表示できます。 実際のところ こんなの感じで、testExitの中でtestSubをよむというモンがあったとしあmす。 $ cat testExit.bash #! /bin/bash COUNT=0 function catchHup () { printf HUP } trap …

exitで渡すのは終了ステータスであってシグナル番号ではない

ちゃんと勉強した人なら当然なのでしょうが、私はちゃんと分かっていなかったのでメモ。shuzo-kino.hateblo.jp の補足的内容。 exitでは数字を渡して終了できるのですが……なんとなくシグナル番号を渡すもんだと勘違いしており $ cat testExit.bash #! /bin/b…

HUPシグナルをトリガーにしたスクリプトの再起動処理

再起動等の意味合いがあるシグナル ただ、機能をちゃんと作らないと普通の停止シグナルと同じ 実際のところ とりあえず使う 前回のスクリプトをベースにHUP(シグナル番号1)を捕まえる処理を書くとこんな感じに。 つかんだ処理を分かり易くするため、起動…

pkillはKILL以外にもシグナルを送る事ができる

実際のところ 実行権限をつけた、こんなファイルがあったとします。 $ cat testExit.bash #! /bin/bash COUNT=0 trap "printf '\n\r`basename $0` is closing.'" EXIT trap "printf '\n\r良夫ちゃんゴハンの時間ヨ\n'" 14 while true do COUNT=$((COUNT + 1)…

ssh越しに画像を出すならfehコマンドが高速かもしれない

ssh越しの画像表示にimvrを使っていました。 機能に不満はなかったのですが……fehコマンドという奴がものすごく高速だったのでこの機会に乗り換えてみました。 端末で絵をみるというだけなら、sixel対応端末を経由する手も有用かと WSL上でsixelな画像を端末…

Ubuntuでローカルタイムを変更

RaspberryOSだとraspi-configで出来ますが、Ubuntuだとそういうのはないので別の方法を使う事になります。 実際のところ shareディレクトリの中にある地域情報を、etcディレクトリにある時刻設定ファイルに上書きするだけ。 $ sudo cp /usr/share/zoneinfo/A…

ブラウザでSSHログインができるshell in the box

必ずしも恵まれた環境ばかりでない何かの都合でスマホアプリの内蔵ブラウザで無理やりする日もくる……かもしれないそんな時に使える 実際のところ 今書いてまs 参考もと orebibou.com GitHub - shellinabox/shellinabox: Official-ish Fork of Shell In A Box

CLIベースのファイルマネージャー「mcコマンド」

実際のところ 導入 $ sudo apt install mc つかいかた 起動は簡単で $ mc移動すると、下の方に現在地が表示されたり 上のほうのメニューっぽいのをマウスで押すと実際メニューがでてきます(困惑 ……昔はよくあるUIだったんでしょうが、はじめて所有したPCがW…

ネットワークインターフェイスを指定してCurlコマンドをつかう

RasPiに4GPIのような外向きネットワークと、開発用の社内ネットワークが混在しているようなケースで、 Curlで極力重い処理は社内ネットワークでやりたいってことがあるかと思います。 てかありました。そういう場合、Curlのinterfaceオプションをつかうと、…

Curlコマンドにcookieをもたせる

CurlコマンドでPOSTする際、cookieが必要だったりすることもあります。 そういう場合も、幸いにして、cookieを持たせるオプションがあるので、そいつを使ってきましょう。 実際のところ cookieつきでPOSTする "URL"に対し、cookies.txtに記載されたcookieを…

ImageMagickでCMYKの色分離をする

shuzo-kino.hateblo.jp で企んでいたことが目途がある程度たってきたので、メモ。ちょっと前にOpenCVでやってみましたが、 方向転換して伝統と実績のImageMagickをつかって、色判定をやっていこうと思います。まずは色分離から。 実際のところ 機体はRasPi 3…

ルートユーザー状態で、他ユーザー扱いでコマンドを実行する

pipの依存パッケージの関係で、ルートユーザーでは入れてないけど特定ユーザーでは入ってるパッケージがあったとします。 実際のところ $ sudo /usr/bin/python3.7 Python 3.7.3 (default, Dec 20 2019, 18:57:59) [GCC 8.3.0] on linux Type "help", "copyr…

X Window利用の画像ビュワー imv

RasPiとカメラを組み合わせて使うアプリの開発中にいちいち絵をみるためにVNCをつかうのが馬鹿らしくなってきました。 でX window(X11)の画像ビュワーがないか探したところ……やはりありましたよ。 端末で絵をみるというだけなら、sixel対応端末を経由する手…

何らかの事情でapt install/upgradeを中断したとき

実際のところ $ sudo apt upgrade E: dpkg was interrupted, you must manually run 'sudo dpkg --configure -a' to correct the problem.dpkg を直接叩いてゴミを片付けないといけません。 $sudo dpkg --configure -a Setting up libmono-system-servicemod…

stringsコマンドで条件一致時のオフセット値も表示する

stringsコマンドで条件一致時のオフセット値も表示する場合”-o”オプションで数値がでてきます。 が……どういうわけか、デフォでは8進数です。 $ strings -o /usr/bin/make | head 1070 /lib64/ld-linux-x86-64.so.2 1533 ha@&M 3732 =Yg- 4117 }(>v 4277 DuM&

findコマンドで複数タイプの拡張子を対象にサーチする

実際のところ $ find /path/to/source/package -regex ".*\.\(svg\|png\|xpm\|gif\|ico\)$" 参考もと デスクトップエントリ - ArchWiki

xdotoolでGUIツールの操作をする その1:導入

一時、ネットゲームでボット行為といって自動的にモンスターを倒し続け寝てる間にレベルアップ~なんてのが流行った事があります。 xdotoolは業務でもそういったアレができるようになるツールです。ソコソコ歴史のあるツールで、ネットを探すと古いサイトな…

systemdで前回起動してから間が開いた場合に実行するスクリプトを書く

OnUnitInactiveSecオプションを使えば、前回起動してから間が開いた場合に実行するスクリプトを用意することができます。 実際のところ [Timer] OnUnitInactiveSec=1h 参考もと systemd.timer(5) — Arch manual pages Talk:Systemd/Timers - ArchWiki

ISO 8601形式の文字列をdateコマンドで加工する/出力する

時刻同期標準のISO 8601形式で記述された文字列を dateコマンドでよろしく扱う方法です。他の時刻構文と同様、"-d"オプションでよろしく判定してくれます。 タイムゾーンは、使用中のシェルの設定が反映されます。 私のはJSTなので、よろしくやってくれます…

systemdで指定時間ごとに稼働するスクリプトを書く

定期実行はcrontabと習いましたが、 イマドキのナウなヤングはsystemdでやるそうです。 実際のところ 60分ごとに実行 [Unit] Description=Runs mytimer every hour [Service] ExecStart=/bin/bash /path/to/action [Timer] OnUnitActiveSec=1h [Install] Wan…

opensslの暗号文生成にてパディングをなくす

OpenSSLで暗号化する際、ブロック暗号だと一定単位未満だった場合、パディングが行われます。 何らかの事情でこのパディングが邪魔な場合、"-nopad"オプションでなしにする事が可能です。 nopadオプションを使う場合は復号する際の長さに注意してください。…

openssl randでhexな乱数を生成する

$ openssl rand -hex 12 ea8fe2a0267f3405adec4dff $ openssl rand -hex 12 74f10baf6b97f77d9004670c $ openssl rand -hex 12 819b03c9ce4c695592f2943c

高速圧縮/解凍ができるlzop

gzipより10倍早いらしい圧縮方法。 netcatのようなコマンドと合わせると威力を発揮しそう。 実際のところ 導入 $ sudo apt install lzop 使う $ tar --lzop -cf testfile.lzo fileまたは $ lzop testfile ファイルが大きくなるケースもある!? あくまで「高…

pvコマンドでパイプ処理の進捗をみる

pvコマンドはPipeViewerの略で、名前の通りパイプ処理の進捗状態を監視するコマンドです。 pv - monitor the progress of data through a pipe 感じはaptでパッケージ導入したときに出るアレです。 実際のところ debian系ではデフォでは入ってないので、apt…

ncコマンドのUDP受信状態から結果を送り返す

二つのRasPiをUDPで繋いで通信するアプリを書いていた時 netcatで導通試験をする場合、送信と受信を毎回入れ替えて書いてました。 なんとなく不毛な気がして、調べたところ……ちゃんとありました。 実際のところ guestとhostのraspberry Piがある想定で、host…

netcat/ncでポートが空いてるかしらべる

接続先のポート番号が解放されているか確認するときはnetcat が使えるかも 実際のところ pingコマンドはレイヤーが違ってダメなのでnetcat $ nc -vz 192.168.0.251 9600 Connection to 192.168.0.251 9600 port [tcp/*] succeeded!udp通信の場合"-u"オプショ…