揮発性のメモ2

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

Linux

flock

ファイルロックを使ったプロセス間での排他制御 // gcc -Wall -lpthread test_flock.c #include <fcntl.h> // O_CREAT #include <sys/file.h> // flock #include <stdio.h> // printf #include <unistd.h> // sleep int main() { int fd = open("/tmp/hoge", O_CREAT, 0600); printf("ロック\n"); flo</unistd.h></stdio.h></sys/file.h></fcntl.h>…

pthread_mutex_lock

Pスレッドのmutexを使ったプロセス間での排他制御 // gcc -Wall -lpthread test_mutex.c -lrt // 動かんときは rm /dev/shm/hoge #include <fcntl.h> // O_CREAT #include <stdio.h> // printf #include <unistd.h> // sleep #include <sys/mman.h> // mmap #include <stdlib.h> // exit #include <pthread.h> // pthread #</pthread.h></stdlib.h></sys/mman.h></unistd.h></stdio.h></fcntl.h>…

sem_init

共有メモリ上の名前なしセマフォを使ったプロセス間での排他制御 // gcc -Wall -lpthread test_seminit.c -lrt // 動かんときは rm /dev/shm/hoge #include <fcntl.h> // O_CREAT #include <semaphore.h> // sem_wait #include <stdio.h> // printf #include <unistd.h> // sleep #include <sys/mman.h> // mmap #i</sys/mman.h></unistd.h></stdio.h></semaphore.h></fcntl.h>…

sem_open

名前付きセマフォを使ったプロセス間での排他制御 // gcc -Wall -lpthread test_sem.c // 動かんときは rm /dev/shm/sem.unko #include <fcntl.h> // O_CREAT #include <semaphore.h> // sem_wait #include <stdio.h> // printf #include <unistd.h> // sleep int main() { // 1を指定するとバイナリセ</unistd.h></stdio.h></semaphore.h></fcntl.h>…

プロセス間での排他制御

生成 ロック アンロック 共有メモリ 備考 ファイルロック open flock(fd,LOCK_EX) flock(fd,LOCK_UN) 不要 他言語と連携可 600 名前付きセマフォ sem_open sem_wait sem_post 不要 -pthread 16 名前なしセマフォ sem_init sem_wait sem_post 必要 -pthread 1…

connman で無線LANの接続設定をする

BeagleBone Green Wirelessの初期設定 :: WASP株式会社 connmanctl command man page - connman | ManKier ConnMan - ArchWiki connmanctlコマンドでいったん接続してしまえば、設定が保存されて次から自動接続するようになる。 # connmanctl connmanctl> te…

connman 無線LAN接続設定ファイル

/var/lib/connman/wifi_112233445566_484f4745484f4745_managed_psk/ に保存される この長い名前は wifi_MACアドレス_SSID_managed_psk という構成settings と data という二つのファイルが保存される settings こんな感じ。 省略可能な項目はほぼないので、…

sudo: sudo を実行するには tty がなければいけません。すみません

sudo: sudo を実行するには tty がなければいけません。すみませんsudo: sorry, you must have a tty to run sudo - 揮発性のメモ

SoftEtherのバージョンを確認する

vpncmdで確認できる # ./vpncmd /? vpncmd command - SoftEther VPN Command Line Management Utility SoftEther VPN Command Line Management Utility (vpncmd command) Version 4.24 Build 9651 (English) Compiled 2017/10/23 01:52:32 by yagi at pc33 C…

DHCPサーバを探す

apt install dhcpingdhcping -s 255.255.255.255 -s サーバIPアドレス指定。 ブロードキャストアドレスを使えば広く探せる -r DHCPREQUEST を使う指定。 デフォルトなのでなくてもいい -v 情報出力。 なくてもモリモリ出るのでたぶん不要 dhcping でdhcp サ…

Debian ARM 略語対応表

unameで見た dpkgで見た 分類 gcc 概要 armv8l arm64 64bitのARM armv7l armhf Hard Float略してHF arm-linux-gnueabihf-gcc ハードウェアFPUがあるARMBBB, RPi2, RPi3*1 armv6l armel ARM EABI arm-linux-gnueabi-gcc ショボいARMRPi1*2 arm ARM Legacy ABI…

デバイス名、IPアドレス、ネットマスク のリストを出力する

$ ip -o a s| perl -nle 'if(/^\d+: (\w+)\s+inet ([\d\.]+)\/(\d+) /){ $e=join(".", unpack("C*",pack("N",0x100000000-(2**(32-$3)))));print "$1\t$2\t$e"}' lo 127.0.0.1 255.0.0.0 eth0 172.16.1.1 255.255.0.0 usb0 192.168.7.2 255.255.255.252

ネットマスクの /8 とか /16 とかの表記を 255.0.0.0 とか 255.255.0.0 とかに変換するbashスクリプト

あの 192.168.0.1/8 みたいなおしゃれな書き方を Classless Inter-Domain Routing(CIDR:サイダー) と呼ぶらしい。 IPアドレスとサブネットマスクをまとめて表記する:Tech TIPS - @IT #!/bin/bash A=$1 C=$(( 2**(32-$A)-1 )) D=$(( 0xFFFFFFFF^$C )) E1…

リバースプロキシの設定その2

リバースプロキシの設定 - 揮発性のメモの続き転送する際、HTTP_HOST は書き換えられてしまう ProxyPreserveHost On ProxyPass /hoge http://172.16.101.51/piyo ProxyPassReverse /hoge http://172.16.101.51/piyo ProxyPreserveHost を有効にすれば、HTTP_…

LVMのディスクのサイズを変更する

CentOS6.9で 普通にインストールすると 論理ボリュームを / と /home で分けられるが サイズが適当なので、 / を小さくしたい。 マウントしっぱなしだと、大きくできるけど小さくはできないので、レスキューディスクから作業する。 # lvdisplay vg_VolGroup0…

systemd で適当なシグナルを送る

systemctl kill -s SIGUSR1 hogehoge kill -s シグナル名 でシグナルを送信し放題。

192.168.0.1〜192.168.0.254 までpingを打って結果の一覧を作る

echo -e 192.168.0.{1..254}\\n \ | xargs -IXXX -P30 bash -c 'ping -c1 -w1 XXX >&/dev/null; echo XXX $?' \ | sort -V > ping.txt for文で回すと1件ずつしか動かせないので、xargsで30件ずつくらい並行処理する。 並列処理すると当然結果はばらばらにな…

Windows Subsystem for Linux でルート権限になってみよう!

sudo su - を使う。パスワードは一般権限のでよい。 rootのパスワードは知る必要がない

Windows Subsystem for Linux を起動してみよう!

The WSL optional component is not enabled. Please enable it and try again. See https://aka.ms/wslinstall for details. Error: 0x8007007e Press any key to continue...

ディレクトリの中身をコピーする

× cp -a hoge/* piyo/ ○ cp -a hoge/. piyo/ *を使うと一旦展開されるのがダサいし、そもそもとして隠しファイルがコピーされないのはマズい。

BBB 復旧手順

BeagleBone Blackのシステムを復旧しよう | マルツセレクト BBB_eMMC_flasher_debian - Tech Info https://debian.beagleboard.org/images/ https://debian.beagleboard.org/images/BBB-eMMC-flasher-debian-7.5-2014-05-14-2gb.img.xz このイメージをSDカー…

GPIOの入出力方向を変更する

GPIOを出力ポートに変更すると valueが0になる、つまり 出力がLowになる。 電源はいって初期状態は入力方向で、入力はだいたいプルアップされててHighなので、プログラムが起動し出力方向を切り替えた瞬間に出力内容がLowに変わってしまうことになり 良くな…

ps の結果にカーネルスレッドを含めない

出力結果を加工するほかない ps aux|egrep -v ']$'

systemctl よく使うオプション

systemctl --no-pager ページャーを使用しない systemctl list-units -t service サービス一覧今アクティブなやつ systemctl list-unit-files -t service サービス一覧全部非アクティブも含む systemctl daemon-reload ユニットファイル等の再読み込み syste…

Error: bad username;

Feb 3 15:14:01 hoge845 cron[300]: (*system*mycron) RELOAD (/etc/cron.d/mycron) Feb 3 15:14:01 hoge845 cron[300]: Error: bad username; while reading /etc/cron.d/mycron Feb 3 15:14:01 hoge845 cron[300]: (*system*mycron) ERROR (Syntax error, …

viminfoを作成しない

ROM化したLinuxでviを使うとエラーが出る E138: Can't write viminfo file /root/.viminfo!これがうざいのでなんとかする

jessie-updates is expired

# apt-get update Get:1 http://security.debian.org jessie/updates InRelease [63.1 kB] Ign http://ftp.jp.debian.org jessie InRelease Get:2 http://ftp.jp.debian.org jessie-updates InRelease [145 kB] Get:3 http://ftp.jp.debian.org jessie Relea…

systemdの最小のユニットファイル

systemdでプログラムの起動とかを制御するファイルをユニットファイルと呼ぶそうSystemd入門(4) - serviceタイプUnitの設定ファイル - めもめも 10.6. systemd のユニットファイルの作成および変更 Red Hat Enterprise Linux 7 | Red Hat Customer Portal /l…

LibreOfficeのアンインストール

LibreOfficeの安全なアンインストールの仕方 # apt-get remove libreoffice # apt-get autoremovelibreofficeはメタパッケージなので、これを削除すると一緒に入った分はautoremoveで一気に削除できる

dmesgのuptime部分を日付にする

汎用的な何かを目指していたが途中で飽きたので中途半端なものになった。 #!/bin/bash uptimedate(){ UPTIME=$1 STARTTIME=$2 date +"%Y-%m-%d %H:%M:%S" --date=@$(($UPTIME+$STARTTIME)) } STARTTIME=`grep btime /proc/stat|cut -b7-` dmesg | while read…