揮発性のメモ2

http://d.hatena.ne.jp/iww/

Linux

TeraTermで、シリアルコンソールの画面サイズを変更したとき

TeratermでシリアルコンソールでLinuxに接続しているとき、画面サイズの変更は sttyコマンドでおこなう # stty size 24 80 # stty rows 48 columns 160 # stty size 48 160 linuxjm.osdn.jp桁数は割とすぐ反映されるけど、行数はなんか反映されないことがあ…

udevでバックグラウンドで動くプログラムを起動する 3

USB機器を挿した契機で、ちょっと時間のかかるプログラムをバックグラウンドで起動したい。 また、抜けたら抜けたで何か起動したい。 /etc/udev/rules.d/99-local-usb.rules # USB機器が刺さったらなんかする ACTION=="add", SUBSYSTEM=="usb", ENV{DEVTYPE}…

udevでバックグラウンドで動くプログラムを起動する 2

USB機器を挿した契機で、ちょっと時間のかかるプログラムをバックグラウンドで起動したい。 そのまま呼ぶと一瞬で殺されるので、systemdを使って起動する /etc/udev/rules.d/99-local-usb.rules # USB機器が刺さったらなんかする #ACTION=="add" , SUBSYSTEM…

udevでバックグラウンドで動くプログラムを起動する

USB機器を挿した契機で、ちょっと時間のかかるプログラムをバックグラウンドで起動したい。 ちょっと前までは nohup とか付けたプログラムを2段ロケットで呼べば動いていたけど、最近(Debianならstretchから?)ではdisownだろうがnohupだろうが 1秒も経た…

[: missing ]

/usr/local/bin/hoge: 8: [: missing ] というエラーが出て、その8行目は [ -z "$ADDR"] || ADDR="HOGEHOGE" という塩梅だった。 "[" が文法じゃなくて内部コマンドだということを失念していたため、[ ] を単なる飾りとして見ていて、: missing ってなんだろ…

grepでファイルシステムをまたがずに検索する

普通に / からgrepで全ファイル検索しようとすると、/sysや/procまでたどるので困る。 なので、同一ファイルシステム内だけで検索したい (findなら -xdevが、cpなら -x がある) unix.stackexchange.com find / -xdev -type f -print0 | xargs -0 grep -I -…

tmpfsでオーナーを指定する

wiki.archlinux.org # ls -ld /hoge drwxrwxrwx 2 root root 4096 May 22 2018 /hoge # mount -o uid=www-data,mode=700 -t tmpfs tmpfs /hoge # ls -ld /hoge drwx------ 2 www-data root 40 Jun 29 10:00 /hoge tmpfsは、オプションでパーミッションや所有…

diffの結果を使ってdiffしやすくするやつ

diff -rq の出力結果を見ながら、さらに差分とったりコピーしたりをよくするんだけど Files /tmp/hoge/www/test.html and /opt/piyo/www/test.html differ Only in /opt/piyo/www: test.html.bak みたいに Files ○○ and △△ differ とか余計な文字列が入って…

iptablesで一時的にDROPとか設定する

なんかネットワークが切れたとかの試験をするとき用 # DROP追加 iptables -I INPUT 1 -p tcp --dport 9999 -j DROP # DROP削除 iptables -D INPUT 1

スーパーブロックの修復

壊れたSDのイメージを吸い出して、同じくらいのサイズの別SDに丸コピーして調査を # fsck -n /dev/sda2 fsck from util-linux 2.29.2 e2fsck 1.43.4 (31-Jan-2017) Warning: skipping journal recovery because doing a read-only filesystem check. The fil…

ファイルをぜんぶコピーする

ルートファイルシステムの全ファイルを USBメモリとかにコピーしたい。 でもそのままだと /proc だの /sys だのまでコピーされるので、ファイルシステムをまたがないオプション -x を使う。 cp -ax /. /mnt/ /. の . は別に要らないけど、気分の問題なので付…

RTO_MINの変更

serverfault.com ipコマンドで変更可能らしい # ip route show default via 172.16.0.1 dev enp0s3 onlink 172.16.0.0/16 dev enp0s3 proto kernel scope link src 172.16.101.57 # ip route change 172.16.0.0/16 dev enp0s3 rto_min 3s # ip route show de…

sshdでchrootでsftp

CentOS の OpenSSH で chroot を設定する # chroot用設定 Subsystem sftp internal-sftp Match User hoge ChrootDirectory /data ForceCommand internal-sftp WinSCPとかでsftpアクセスすると、/data が / として見えるようになる。 ただし、/data はrootユ…

呼び出しているライブラリと関数の一覧

nmでシンボルを抜き出して、フィルタをかけるMan page of nm nm -C hogehoge C C++ の関数名を可読にする nm コマンド – オブジェクトファイルのシンボル情報を表示する | Linuxコマンド.NET 呼び出してる関数⇒自分じゃ定義していない関数⇒未定義シンボル と…

fatal: protocol error: expected old/new/ref, got 'shallow

fatal: protocol error: expected old/new/ref, got 'shallow xxxxxxxxx' fatal: The remote end hung up unexpectedly fatal: The remote end hung up unexpectedlyシャローなクローンをしたリポジトリをプッシュしたときのエラー。クローン元のgitのバージ…

expectで、ログを取りながらログインする

#!/usr/bin/expect -f set IPADDR "192.168.0.2" set USERID "hoge" set USERPW "piyo" set LOGFILE "test.log" # エラー・タイムアウト用関数 proc ABORT {} { exit 1 } # ログ取得開始 log_file $LOGFILE # expectのタイムアウトを30秒とする set timeout …

let's encrypt の証明書を取得する

ユーザーガイド - Let's Encrypt 総合ポータル 動き certbot-auto 証明書をダウンロードしてインストールしてくれるスクリプト 実行すると、このスクリプトが /var/www/.well-known/ 配下に適当な一時ファイルを作成する。 let's encrypt の人が http://exam…

expectで、日付を求める

年月日時分秒を取得したい dateコマンドを使う #!/usr/bin/expect -f set NOW [ exec date "+%Y%m%d%H%M%S" ] puts "--$NOW--" clock関数を使う #!/usr/bin/expect -f set NOW [ clock format [ clock seconds ] -format "%Y%m%d%H%M%S" ] puts "--$NOW--" …

自分用bashrc

~/myrc # ~/myrc として保存し、 # ~/.bash_profile の最後に . myrc を足す # パスを通す export PATH=$PATH:~/bin # sudo で vi使う export EDITOR=vi # less で 色付きエスケープ有効 export LESS='-R' # less で 日本語読む [ -z "$LESSCHARSET" ] && ex…

sSMTPの設定

# # Config file for sSMTP sendmail # # The person who gets all mail for userids < 1000 # Make this empty to disable rewriting. root=postmaster # メールサーバのIPアドレスかホスト名。ポート番号もつけれる mailhub=example.com:587 # ログインID…

あるディレクトリ以下でファイルを開いていそうな人一覧

lsof +D /var/log 「開いている間に削除されてしまった見えないファイル」を見たいときは 諦めて引数なしの lsof を実行するほかない

grepで見つかった最初の1行だけ表示する

-mオプションで、指定した行数分見つかったら検索をやめる。 1を指定すれば最初の1行だけになるMan page of GREP -H ファイル名を必ず表示 -h ファイル名を必ず非表示 -n 行番号を表示 -I *1 バイナリを対象外 -m X X行マッチしたらそのファイルの検索をやめ…

rsyslogdがログファイルを掴んで離さない

ディスクが見えないファイルに圧迫されていたので lsof で確認したところ、 rsyslogdがでかいログファイルを掴んで離さないのが発見された。 rsyslogd 511 root 4r REG 0,3 0 4026531924 /proc/kmsg rsyslogd 511 root 5w REG 8,1 4873859072 262184 /var/lo…

メモリリーク

strdupが使われている個所でメモリリークが起きていた。Man page of STRDUP Man page of BASENAME char *dirc, *basec, *bname, *dname; char *path = "/etc/passwd"; dirc = strdup(path); basec = strdup(path); dname = dirname(dirc); bname = basename(…

cppcheckの使い方

apt install cppcheck$ cd src $ cppcheck . ・・・ Checking p_tester.cpp... [p_tester.cpp:87]: (error) Memory leak: keep 97/99 files checked 99% done ・・・ enableオプション --enable=warning warning エラーになりそうな書き方の指摘未初期化変数…

connmanでDNSサーバを指定する

/var/lib/connman/hoge.conf にて設定する [service_piyo] Type=ethernet IPv4=192.168.200.2/255.255.255.0/192.168.200.1 IPv6=off Nameservers=192.168.200.1, 8.8.8.8 # ←★カンマ区切りで列挙する もし、IPv4をdhcpにしていたら ここに書いたDNSサーバの…

connman使用時の resolv.conf

connman使用時の resolv.conf は lrwxrwxrwx 1 root root 24 Sep 21 20:50 /etc/resolv.conf -> /run/connman/resolv.confこんなんなっててびっくりした しかも実態は存在しないし

connmanctlでよく出るエラー

~# connmanctl disable eth0 Error eth0: Method "SetProperty" with signature "sv" on interface "net.connman.Technology" doesn't exist テクノロジー(wifiとかethernetとか) を指定するべきところで、うっかりインターフェース(eth0)を書いてしまってい…

connmanのリファレンスマニュアル

connman(8) — connman — Debian stretch — Debian Manpages connmanctl(1) — connman — Debian stretch — Debian Manpages connman.conf(5) — connman — Debian stretch — Debian Manpages connman-service.config(5) — connman — Debian stretch — Debian M…

connmanで無線LANをテザリング対象にする

~# connmanctl tether wifi on HOGEHOGE PIYOPIYO Wifi SSID set Wifi passphrase set Enabled tethering for wifi SSID HOGEHOGE キー PIYOPIYO