揮発性のメモ2

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

Linux

findで、指定バイト未満のファイルを削除する

名前が "*.dat" で 大きさが118バイト未満のファイルを削除する find . -name "*.dat" -size -118c -delete バイトの指定をするときは、サフィックス c をつける。 b はブロック(512バイト単位)になり、何もつけないときはブロックになる。 linuxjm.osdn.j…

/etc/network/interfaces で、USB-LAN用の設定

/etc/network/interfaces.d/HOGEHOGE で、抜いたり挿したりが発生するインターフェースは auto じゃなくて allow-hotplug で書く # 内蔵LAN auto eth0 #iface eth0 inet dhcp iface eth0 inet static address 172.16.0.2 netmask 255.255.0.0 gateway 172.16…

screenでシリアル接続

cuと違い、 /dev/ttyUSB0 の所有者とパーミッションをそのまま読んでそのまま動作するので、それだけで気分が良い。そもそもcuはなんか行儀の悪い動作をいっぱいしてるので気分が良くない。 ファイルディスクリプタ 3~1023 を念のため起動時に全部閉じると…

cuで、/dev/ttyUSB0のパーミッションがないと言われる

# cu -l /dev/ttyUSB0 cu: open (/dev/ttyUSB0): Permission denied cu: /dev/ttyUSB0: Line in userootでやってんので当然パーミッションはある # ls -l /dev/ttyUSB0 crw-rw---- 1 root dialout 188, 0 11月 10 10:44 /dev/ttyUSB0結局、ユーザを変えよう…

ufwで、インターフェースごとに設定をする

eth0のポート22のアクセスを許可する。 eth1とか他のは許さない ufw allow in on eth0 to any port 22on NIC名 を書くときは、 allow in の in をつけなければならない あと、to の省略もできなくなる 設定はこんな感じに表示される $ sudo ufw status numbe…

/usr/lib/rsyslog/rsyslog-rotate

/etc/logrotate.d/rsyslog に書いてある rsyslog-rotate とは /var/log/syslog { rotate 7 daily missingok notifempty delaycompress compress postrotate /usr/lib/rsyslog/rsyslog-rotate endscript } 正体はこういうスクリプトだった # cat /usr/lib/rsy…

/var/log/alternatives.log

alternatives.logは、update-alternativesコマンドを使用したときの専用ログらしい。これってそんな特別視するほどのコマンド? これ別ログにするなら、ついでに一緒に記録したほうが良い ヤバイコマンドもっとあるんじゃないの? なんか歴史的経緯的なやつ?…

nginxで、ログを全部syslogに飛ばす

/var/log/nginx というディレクトリを使用したくないんです! nginx.org ここにあるとおり、syslogに飛ばすには syslogサーバなりUNIXドメインソケットなりを指定する。 もっとも簡単なパターンは次の通り http { (中略) ## # Logging Settings ## access_…

auth.logで、pam_unix(cron:session): session opened for user root みたいなメッセージがずっと出ててうっとおしいやつ

/var/log/auth.log にて、CRONが動くときこういうログがずーっと出てて 超うっとおしいやつ Oct 24 19:28:01 unkoman CRON[22792]: pam_unix(cron:session): session opened for user root by (uid=0) Oct 24 19:28:02 unkoman CRON[22792]: pam_unix(cron:s…

busterで、ネットワークインターフェイス名をeth1とかに戻す

Debianでネットワークインターフェイス名を eth0, eth1, ... に戻したい。 とりあえず、 Debian10 buster での戻し方は分かった /lib/udev/rules.d/73-usb-net-by-mac.rules /lib/udev/rules.d/80-net-setup-link.rulesこの2つのファイルを読まれないよう無…

rsyslogで、ファシリティに応じて分岐する

LOCAL0 だけ別ファイルにしたい # ログファイル名テンプレート $template HOGE_LOG, "/var/log/hoge/%programname%.log" # ログフォーマットテンプレート $template HOGE_FORMAT, "%$now% %timestamp:12:23:date-rfc3339% %syslogtag%%syslogseverity-text::…

vimで日本語が文字化けする

あいうえお と入力してるのにこんななっちゃうやつ 筐A~B筐A~D筐A~F筐A~H筐A~Jエンコーディングが指定されていないとこうなる :set enc? encoding=latin1このときは ~/.vimrc などに次の設定を書くと良い set encoding=utf-8www.www-creators.com

sudoで、sudo: unable to resolve host というエラーが出るとき

/etc/hosts にホスト名を書けばいい、なんてことはわかっている。 ホスト名を書きたくないときにどうすればよいか Defaults !requiretty Defaults !fqdn # ★これ root ALL = (root) NOPASSWD: ALL Defaults !fqdn を設定すると名前を気にしなくなる superuse…

systemdのsocketで、接続元のIPアドレスを取得する

For IPv4 and IPv6 connections, the REMOTE_ADDR environment variable will contain the remote IP address, https://www.freedesktop.org/software/systemd/man/systemd.socket.html 環境変数 REMOTE_ADDR で接続元のIPアドレスを取得できる。

systemdで、socketを使ってエコーサーバを立てる 最小のユニットファイル

xinetdの代わりに。 次の2つのユニットファイルを作って登録する hogehoge.socket [Unit] Description=HOGEHOGE Echo Server Socket [Socket] ListenStream=0.0.0.0:16000 Accept=yes [Install] WantedBy=sockets.target hogehoge@.service [Unit] Descript…

Linuxで、ARPテーブルをクリアする

unix.stackexchange.com ip link set arp off dev eth0 ; ip link set arp on dev eth0なるほど乱暴だけど確実だ

viで、外部コマンドを実行する

viで外部コマンドを実行するのは :!コマンド bashとか実行すると、普通にそこからbashが起動する。exitでviに戻る。 viで外部コマンドを実行禁止する -Zオプションを付けて起動すると制限モードになり、外部コマンドなどなどが一切使えなくなる vim-jp.org

Linuxの起動日時を表示 3

uptime -s オプションで起動日時で表示してくれる。 自分で一生懸命計算する必要はなかった $ uptime 22:12:22 up 11:23, 1 user, load average: 0.21, 0.22, 0.18 $ uptime -s 2022-07-16 10:49:07

シンボリックリンクがどこを指しているかを取得する

$ ls -l hoge.conf lrwxrwxrwx 1 root root 28 Mon Jul 11 19:23:54 2022 hoge.conf -> /opt/unko/etc/hoge.conf 要はこの最後の -> の後ろの文字列が取得したい $ ls -l hoge.conf | awk '{print $NF}' /opt/unko/etc/hoge.conf www.soum.co.jp

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

なんか設定ファイルが壊れたりして 全部やりなおしたくなったとき /etc/letsencrypt を空にしてしまえば良い mv /etc/letsencrypt /etc/letsencrypt.bak mkdir -m755 /etc/letsencrypt certbot certonly --standalone -d unko.example.com teratail.com qiit…

PHPで、ZipArchiveクラスを使えるようにする

容量を減らすためにインストールパッケージをケチっていると、思いもよらない不具合がターゲット機のみで起こる。ZipArchiveを使っているマシンでエラー発生。 ZipArchiveが使えない。 マジかよ $ php -r '$zip = new ZipArchive();' PHP Fatal error: Uncau…

mmdebstrapで小さいrootfsを作る

mmdebstrapは、debootstrapよりももっと小さいchroot環境をつくれるすごいやつ 基本的な使い方 SYNOPSIS mmdebstrap [OPTION...] [*SUITE* [*TARGET* [*MIRROR*...]]] 一応はこれで普通に作れる mmdebstrap buster unko http://ftp.jp.debian.org/debian/ う…

正しくない鍵の追加方法

なんかよく見る奴 Get:1 http://ftp.jp.debian.org/debian buster InRelease [122 kB] Err:1 http://ftp.jp.debian.org/debian buster InRelease The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 648ACF…

debootstrap で新しい環境を作る

debootstrap で古い環境を作る - 揮発性のメモ2debootstrapで、今よりも新しいディストリビューション環境を作る。 具体的には jessie(8) の環境で buster(10) をどうにかして作りたい。次のコマンドで作成ができた。 # 準備 ln -s sid /usr/share/debootst…

syslogでエスケープされた改行コードを復元したい

syslogだと改行とかESCとかの制御コードが #xxx という8進表記にエスケープされるので それを元に戻したい。 $ echo 'aiueo#012kakik#012ukeko' | perl -pe "s/#012/\\012/g" aiueo kakik ukeko 昔から気になってるんだけど、シェル上で実験するとき、下記の…

ファイルを連番でコピーする

a1.txt を a2.txt~a100.txt に複製する。 for i in a{2..100}.txt; do cp a1.txt $i; done for文で回るやつ。 わかりやすい。 echo a{2..100}.txt | xargs -n1 cp a1.txt xargsを使う。 誤解を招きやすい。

dmesgのuptime部分を日付にする 3

-Tオプションを付けると、読みやすく変換してくれる。 # dmesg ・・・ [ 871.861243] rfkill: input handler disabled [ 922.989837] VMMR0InitVM: eflags=246 fKernelFeatures=0x0 (SUPKERNELFEATURES_SMAP=0)# dmesg -T ・・・ [月 5月 30 10:04:42 2022] …

socatでUNIXドメインソケットをデータグラムで使う

待ち受け側 socat unix-recvfrom:/tmp/unko.sock,fork,mode=777 stdout何か受信するたびに標準出力に表示する,fork を付けないと一回ずつ受信して終わっちゃう ,mode=777 はUNIXドメインソケットファイル(/tmp/unko.sock)のパーミッションを変更する。 デ…

[C][Linux] Cでuptimeを書く

clock_gettime() を使う Man page of CLOCK_GETRES CLOCK_MONOTONIC_COARSE か CLOCK_MONOTONIC を使うと起動経過時間が取れる 秒までなら CLOCK_MONOTONIC_COARSE でいい #include <time.h> // clock_gettime time_t uptime() { struct timespec ts; clock_gettime(</time.h>…

ファイルを新規作成するとき、仮ファイルを作って書ききってからリネームする

ファイルを新規作成するとき、仮ファイルを作って書ききってからリネームすると、 書いてる途中のファイルを「お、あるある」とか言って読まれないので比較的安全 #include <stdio.h> #include <stdlib.h> // mkstemp #include <unistd.h> // write int main() { // 仮ファイルを作って本</unistd.h></stdlib.h></stdio.h>…