Bye Bye Moore

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

bash

nodeのアプリをサーバー起動時に立ち上げ&毎日再起動

今回はnodeJSのアプリケーションをcrontabを使って自動起動&毎日再起動するようにしました 実際のところ サーバー起動時に立ち上げをしつつ、毎日午前一時に再起動……というか既存プロセスを棄てて新しいプロセスを立ち上げるように設定します $ crontab -e…

スクショツールmaim

そのscrotの機能拡張版としてmaimなるツールが出ている様です。 実際のところ ここまではscrotと同じ感じ。特定の領域を切り抜いたりマスクをしたりできる 参考もと スクリーンキャプチャ - ArchWiki GitHub - naelstrof/maim: maim (make image) takes scre…

Ubuntu系のシステムでタイムゾーンを変更する

実際のところ $ sudo dpkg-reconfigure tzdata「Asia」->「Tokyo」 参考もと Ubuntu Manpage: dpkg-reconfigure - reconfigure an already installed package

imagemagickのdisplayコマンドをつかて色を確認する

imagemagickのdisplayコマンドは、その名前の通り表示を担当するコマンドです。 これに渡す変数"xc:"*1にはカラーコードを渡すことができるため、視覚的に色を確認したい際に便利です。 実際のところ showcolor() { display -size 128x128 xc:"${1}"; }16進…

CVLCで特定秒数のみUSBカメラからデータを取って保存する

実際のところ 30分間(=1800秒)、冒頭30秒を飛ばしてA.mpeg $ cvlc v4l2:///dev/video0 --start-time=30 --sout "#standard{mux=ts,dst=A.mpeg,access=file}" --run-time=1770 --play-and-exit

printfでスペース区切りな文字列/変数/実行結果を一つの"%s"に投入したい場合、単純に”で囲えばいいだけ

考えてみりゃ当たり前だったのですが、無駄に時間が掛かったのでメモ 実際のところ $ printf "%s >>" foo bar foo >>bar >> $ printf "%s %s>>" foo bar $ printf "%s>>" "foo bar" foo bar>> 実際の例 なんも知らないと力業で%sを並べる羽目になりますが…… …

bcコマンドで有効桁数

すっかり軟弱になったので数字を 実際のところ $ echo "scale=0; 4+42/2" | bc 25 $ echo "scale=10; 4+42/2" | bc 25.0000000000 すっかり忘れていましたが……ヒアストリングに変数を与える方式で $ cat cmd.txt scale=10; 4+42/2 scale=2; 4+86/3 $ cmdstri…

mktempで一時ファイル作り

どういう訳か、一時ファイルを作るという習慣を身に着けずに今日までやってきました。 保存用のファイルを一個作って、新プロセスが始まったらそのファイルに一から書いてくという原始的極まりない方法です。 流石にいかんやろと思い、一時ファイルの方法を…

ファイルディスクリプタ(ファイル記述子)と名前付きパイプをつかって標準入力を受け付ける系ツールを活かしたままにする

実際のところ ファイルディスクリプタ(ファイル記述子)の効用 $ echo 123 > sample.txt $ cat sample.txt 123$ exec 3> sample.txt $ echo 456 >&3 $ cat sample.txt 456 ファイルディスクリプタと名前付きパイプを使う 普通の名前付きパイプなら $ mkfifo…

debian系OSでUSBデバイスをソフトウェア的に抜き差しする

node-redでUSBカメラを使おうとしたところ、 おそらくUIの方に握られてInjectの時刻毎の実行ができないケースに遭遇しました一応抜き差しで何とかはなったものの、最終的にはリモートで操作したいので……これを機にコマンドでやる方法を調べる事に 実際のとこ…

m4とimagemagickを使ってHTMLテンプレートにインライン画像を埋め込む

実際のところ Data URIを使って、インライン画像を生成 PNG画像のインラインなら、特に記述変更の必要なく埋込ができます convert rose: -resize - inline:PNG:-これをm4をつかって埋込します 以下の様にテンプレート(index.html)を用意して <html> <body> <img src="YOURIMG1"> <img src="YOURIMG2"> <img src="YOURIMG3"> <img src="YOURIMG4"> </body> </html> m4を実…

pgrepのオプションを使い、コマンドの詳細や新しいのだけ出したりする

実際のところ 素で実行すると、単にプロセス名がでるだけ # pgrep bash 1 16 25 プロセスの細かい内容をだす # pgrep bash -a 1 bash 16 bash 25 bash 一番古いプロセスをだす # pgrep bash -o 1 一番新しいプロセスを出す # pgrep bash -n 25 参考もと Man …

GNU Parallelでファイルの移動とリサイズ

実際のところ 9~30までのファイルを名前を変更して移動し、かつ移動したファイルを別名でリサイズ # cat vZ.txt 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30# parallel -a vZ.txt 'mv /root/Downloads/dict/image\ \({}\).png /root/…

改良型SSHとして使えるMOSHというものについて

termiusを使っていたらmoshとかいうのが選択肢の中に入っていました。MObile SHellの略でMOSHという命名になったようです。途中でスリープ等でロストしてもセッションを継続してくれたり、 接続先のWiFiスポットが切り替わっても生きる様子。移動体で使うに…

shiftで関数やスクリプトファイルの引数を順繰りによむ

実際のところ $ foobar () { printf $1; shift; printf "_"$1; }$ foobar 12 34 12_34 応用例:パラメータの読み込み shiftをつかうとオプション値の順次読み込みのような動作を実現できます。 #!/bin/bash declare color=null declare value=0 until (($#==…

配列の中に格納された文字列の長さを調べてprintfに渡す

$ myary=("1234" "5678" "909")$ echo ${myary[0]} 1234echo ${#myary[0]} 4$ LONG=${#myary[0]} $ printf "%${LONG}s" s sループで回して一番長い奴を探してそれに合わせるとかできるかも ……まぁ、実行速度考えれば先に決めとけって話ではあるのですが 参考…

bashtopで格好よい機体情報表示

Jetson用の機体状態表示ツールであるjtopがかなり恰好良かったので、 これに似たような事ができるツールを探したところ……ありました 本家はbtopというツールのようですが、こちらのbashtopはそのまんまbashで稼働するツールです。 実際のところ 導入 aptで導…

unitsコマンドは異なる単位系での計算もできる

実際のところ 時間の計算 $ units -t "24 hour + 34 minute" sec 88440 異なる単位の足し算 $ units -t "1 inch + 34 cm" m 0.3654

units_curでunitsコマンド用通貨のレート更新を行う

日本円に設定して最新のレートを引っ張るには units_cur -b JPY試してみると # units Currency exchange rates from FloatRates (JPY base) on 2022-08-23 3304 units, 92 prefixes, 107 nonlinear unitsこの状態であれば units -t "100 HKD" 1749.1684 japa…

unitsコマンドのフォーマット

実際のところ ”-o”が出力フォーマット指定のオプション いわゆるANSI-Cフォーマットなので、gで整数型、fで浮動小数点型 $ units -o "%.10g" "12 m" cm * 1200 / 0.0008333333333 結果の数値だけ表示したいなら追加で"-t" $ units -t -o "%.10g" "12 m" cm 1…

unitsコマンドで3ミリ光秒の到達距離を調べたりA4用紙何枚で一畳になるか調べたりする

unitsコマンドは単位から単位の簡易計算に使えるツールです A4用紙のサイズといった規格から、mからマイルへという変換も簡単にできます 実際のところ 例として3ミリ光秒*1とマイルの対応なんていう (すくなくとも私は)突然新橋の路上で聞かれても回答できそ…

bashの特殊変数”$-”から現在実行中のシェルのオプションを読み取る

bashの特殊変数”$-”から現在実行中のシェルのオプションを読み取る 実際のところ $ echo $- himBHsこのうち、"i"は対話モード。 何らかの事情でコマンド実行中のシェルが対話型か実行したい場合は case "$-" in *i*) echo This shell is interactive ;; *) e…

Atom Cam2のRTSP配信をうける

これまでRasPiにUSBカメラを載せて動かしていたシステムをIPカメラで置き換えることになりました カメラはあくまで動画配信のみ、画処理は受信先で一気にやる想定で選定しました。 今回の配置先と性能、評判を総合的に考えて選んだのが、こちら。 ATOM Cam 2…

ffmpegでRTSP配信しているカメラから静止画をとる

実際のところ 実行環境 Ubuntu 20.04LTS on Docker ffmpeg version 4.2.7-0ubuntu0.1 コマンド Atom Cam2のLive streamを画像でうけとる方法は以下のようになります。 YOURPATH=rtsp://XXXX:YYYY@192.168.Z.A/live $ ffmpeg -rtsp_transport tcp -stimeout 2…

FigletとかToiletで使えるフォント

実際のところ デフォは/usr/share/figletにあるもので、様式さえ合っていれば自前定義も可能。 flfかflcという様式らしい。 "-d"でディレクトリを指定すれば新しいのも使える。たとえばfutureだとオールドフューチャー的な雰囲気 外部からフォントをもってく…

端末の文字列を装飾するtoiletコマンド

実際のところ $ sudo apt install toilet 使い方 とりあえず表示 $ date +'%F %T' | toilet -f term -F border --gay デジタル時計風 $ while true; do tput clear; date +'%F%n%T' | toilet -f big --gay; sleep 0.2; doneこれが、こんな感じで表示されます…

手元端末からPTY経由でUDPで送る

何やらヤヤコシイ事をしている気がしますが……手元PCの疑似端末(PTY)に送るデータをUDPで遠方に送る方法です。 実際のところ 送信側 対話はscreenやminicomで/dev/vmodem0に接続して行います。 ptyのオプションwaitslaveを使う事で他所のプロセスがlink先を…

socatの入出力でエスケープ文字を設定

実際のところ 以下の例ではバイナリ”0xdeadbeef"が送られるものの、escapeに0xbeが設定されているためそこで読み込み中止、stdoutには\xdeadが出力されます。 echo "\xde\xad\xbe\xef" | socat stdio,escape=0xbe stdio使えるのはSTDIOに限りません。 UDPで…

m4でシェルコマンドを実行するには"syscmd"

シェルスクリプトで使用する想定なマクロエンジンm4は、必然としてシェルコマンドの内部実行も可能。 実際のところ 目的であるテンプレートエンジン的な使いかた 引数にファイル名をとり、独自コマンドをパイプで渡して、それをcatでキャッチして実行という…

m4で対話型デバッグ

m4は実際にはマクロを記載したファイルを実行するような形で運用するのですが、 量が増えてくるとチョコチョコと確認したくなるタイミングも出てきます。 幸い、m4にも対話型インターフェイスが備わっています。 実際のところ "-i"オプションを付ければ対話…