2021年12月20日月曜日

Ubuntu コマンドで ISO ファイルを DVD に書き込む

growisofs コマンドを使う。
= (イコール) を忘れないように注意。

$ sudo apt install growisofs

$ growisofs -dvd-compat -Z /dev/dvd=./ubuntu-ja-20.04.1-desktop-amd64.iso

● growisofs, linux, command, iso, file, dvd, DVD, ISO, コマンド

2021年12月15日水曜日

SVN チェックアウト時の mtime をコミットされた時刻にする

SVN でリポジトリをチェックアウトしたとき、mtime は、チェックアウトした時刻になります。
コミットした時刻にする方法。

$ vi ~/.subversion/config
(miscellany セクションに use-commit-times = yes を記述。コメントアウトでいける場合もあり)
[miscellany]
use-commit-times = yes

● SVN, チェックアウト, checkout, コミット, commit, mtime, 更新時刻, 時刻, タイムスタンプ, timestamp

2021年12月11日土曜日

tcpdump オプションメモ

よく忘れるので、メモしておく。

# tcpdump -s0 -n -nn -tttt -i eth0

● tcpdump, オプション, option

2021年9月9日木曜日

ディレクトリ以下の zip ファイルをすべて解凍する

必要があったので、メモ。

$ find . -name "*.zip" | while read filename; do unzip -o -d "`basename -s .zip "$filename"`" "$filename"; done;

● zip, 解凍, unzip, ディレクトリ, directory, 全て

2021年7月14日水曜日

rpm ファイルの中身を展開する

rpm2cpio がインストールされていない場合は、インストールする。

# apt install rpm2cpio

展開。

$ rpm2cpio hogehoge.rpm | cpio -id

● rpm, 中身, 展開, rpm2cpio

Ubuntu 20.04 で、フォントをインストールする

ttf ファイルを /usr/local/share/fonts/ ディレクトリにコピー

$ sudo cp FONT_NAME.ttf /usr/local/share/fonts

Font Cache を更新

$ fc-cache -fv

Font Cache への登録を確認

$ fc-list | grep FONT_NAME

● Ubuntu, font, cache, ttf, TTF, fc-cache, fc-list, 登録

Ubuntu 20.04 に KVM をインストール

CPU がハードウェア仮想化に対応しているか確認する。

$ egrep -c '(vmx|svm)' /proc/cpuinfo
32

KVM をインストール

# apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils

virt-manager をインストール

# apt install virt-manager

libvirt, kvm グループにユーザを登録

# adduser USER_NAME libvirt
# adduser USER_NAME kvm

virt-top をインストール

# apt install virt-top

あとは、virt-manager でゲスト OS を設定

$ virt-manager

● Ubuntu, KVM, kvm, virt-manager, 仮想, 仮想化, virtual

2021年7月12日月曜日

Ubuntu 20.04 NTP client (timesyncd) の設定

/etc/systemd/timesyncd.conf を編集

# vi /etc/systemd/timesyncd.conf
(下記の箇所を変更)
[Time]
NTP=ntp.nict.jp
FallbackNTP=ntp1.jst.mfeed.ad.jp ntp2.jst.mfeed.ad.jp ntp3.jst.mfeed.ad.jp

timesyncd 再起動

# systemctl restart systemd-timesyncd

状況確認

timedatectl timesync-status

● NTP, 時刻, 同期, 時刻同期, timesync, timesyncd,

2021年7月9日金曜日

Ubuntu 20.04 (gdm) で、synergyc の自動起動設定をする

少しハマったので、メモ。gdm を使っているのが前提。

ログイン画面で synergy が動作するように設定。

# vi /usr/share/gdm/greeter/autostart/synergyc.deskgop
(新規作成して、下記を記述)
[Desktop Entry]
Type=Application
Name=synergyc
Exec=/usr/bin/synergyc IP_ADDRESS
NoDisplay=true
X-GNOME-AutoRestart=true

ログイン時、gdm で起動した synergyc を kill するように設定。

# vi /etc/gdm3/PostLogin
(新規作成して、下記を記述)
#/bin/sh
killall synergyc

モード変更

# chmod 755 /etc/gdm3/PostLogin/Default

ログアウト後、synergy が動作するように設定。

# vi /etc/gdm3/PostSession/Default
(下記のように記述)
#!/bin/sh

# Kill old process
/usr/bin/killall synergyc
while [ $(pgrep -x synergyc) ]; do sleep 0.1; done

# Get the xauthority file GDM uses, setup DISPLAY var and start synergyc again
xauthfile=$(ps aux |grep Xauth | grep '^root' | grep -oP '\-auth \K[\w/]+')
export DISPLAY=:0
export XAUTHORITY=${xauthfile}
/usr/bin/synergyc IP_ADDRESS

exit 0

ログイン時、自動起動するアプリケーションに下記を実行するように追加。

$ vi ~/bin/start-synergy.sh
(下記のように記述)

#!/bin/sh
/usr/bin/killall synergyc
while [ $(pgrep -x synergyc) ]; do sleep 0.1; done
/usr/bin/synergyc IP_ADDRESS

実行権を追加

$ chmod 775 ~/bin/start-synergy.sh

参考: https://stackoverflow.com/questions/67399211/starting-synergy-during-gdm-startup-greeter-in-centos8

■ 2021/09/08 追記 gdm が、Xorg → Wayland に切り替わっていて、ログイン時に synergy が接続できなくなっていた。

# vi /etc/gdm3/custom.conf

(下記のコメントを外す)
[daemon]
# Uncomment the line below to force the login screen to use Xorg
WaylandEnable=false

● Ubuntu, 20.04, gdm, synergy

Ubuntu 20.04 で、ネットワークインタフェースを eth0 にする

/etc/default/grub を編集。

# vi /etc/default/grub
(下記を編集)
GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"

update-grub を実行。そのあとで、再起動。

# update-grub

● Ubuntu, 20.04, eth0, 変更, ubuntu

2021年7月7日水曜日

Ubuntu 20.04 インストール時に画面解像度が 800x600 になってしまい、インストールができない

Alt + F7 で画面が動かせるようになる。

● Ubuntu, 20.04, インストール, install, 画面, クリック, できない, display, click, ボタン, 押せない

古い PC の ssh サーバにログインできない (no matching key exchange method found.)

古い PC の ssh サーバにログインしようとしたとき、key exchange method がマッチしないというエラーが出る。
その時の解決方法。
古い PC は、セキュリティー対応が追いついてないってことね。

エラーの例。

$ ssh 192.168.0.1
Unable to negotiate with 192.168.0.1 port 22: no matching key exchange method found. Their offer: diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1

~/.ssh/config に設定を追加。Host のところは適宜変更。

$ vi ~/.ssh/config
(下記を追加)
Host 192.168.0.1
    KexAlgorithms +diffie-hellman-group14-sha1

● ssh, key exchange, 古い, サーバ, old, server, login, ログイン, できない

2021年7月1日木曜日

telnet 代替手段 curl, nc

telnet コマンドが無いときの代替手段。
便宜上、22 番ポートにつないだ場合の例を書いてます。

■ curl

curl -v telnet:// で接続。

$ curl -v telnet://192.168.0.1:22
*   Trying 192.168.0.1:22...
* TCP_NODELAY set
* Connected to 192.168.0.1 (192.168.0.1) port 22 (#0)
SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.10

■ nc

nc -v [destination] [port] で接続。

$ nc -v 192.168.0.1 22
Connection to 192.168.0.1 port [tcp/ssh] succeeded!
SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.10

● telnet, 代替, curl, nc, alternative

2021年6月28日月曜日

proxy 経由で Gitlab に ssh 接続

proxy 経由で Gitlab に ssh で接続する設定メモ。
ssh の公開キーを Gitlab に登録するところは説明省略。
~/.ssh/config の設定箇所のみ。PROXY_HOST, PROXY_PORT は適切に変更。

$ vi ~/.ssh/config
(下記を追加)

Host gitlab.com
    Hostname altssh.gitlab.com
    IdentityFile ~/.ssh/id_rsa
    Port 443
    ProxyCommand nc -X connect -x PROXY_HOST:PROXY_PORT %h %p

確認。Welcome to GitLab が出れば OK。

$ ssh -T git@gitlab.com
...
Welcome to GitLab, @USR_NAME

● Gitlab, gitlab, proxy, ssh, nc, id_rsa, キー, 設定

2021年6月26日土曜日

Ubuntu 20.04 で X-Mouse (focus follows mouse) の設定をする (GNOME)

Ubuntu 20.04 で、X-mouse (focus follows mouse) の設定をする方法。
デスクトップ環境が Unity から GNOME に変わったので、やり方も変わってた。

$ gsettings set org.gnome.desktop.wm.preferences focus-mode 'mouse'

(参考) https://askubuntu.com/questions/64605/how-do-i-set-focus-follows-mouse

● Ubuntu, 20.04, X-Mouse, x-mouse, GNOME, gsettings, focus follows mouse, マウス, フォーカス, mouse, focus, アクティブ, active

2021年5月4日火曜日

Ctrl-d で ログアウトしない ( 今更ながら )

Ctrl-d でログアウトしない設定。
今更ながらこのメモを書くのは、その設定になってないシステムがあって困ったからだ。

$ set -o ignoreeof

ちなみに、現在の設定を確認するのは、set -o

$ set -o
allexport       off
braceexpand     on
emacs           on
errexit         off
errtrace        off
functrace       off
hashall         on
histexpand      on
history         on
ignoreeof       on
interactive-comments    on
keyword         off
monitor         on
noclobber       on
noexec          off
noglob          off
nolog           off
notify          off
nounset         off
onecmd          off
physical        off
pipefail        off
posix           off
privileged      off
verbose         off
vi              off
xtrace          off

● Ctrl-d, ログアウト, logout, ignoreeof, させない, しない

2021年4月27日火曜日

zip ファイルの中身を解凍せずに確認する (unzip, less)

■ zip ファイルに含まれているファイルのリストを確認

$ unzip -l hogehoge.zip

■ zip ファイルに含まれているファイルの中身を確認

$ unzip -c hogehoge.zip hoehoe.txt | less

● unzip, zip, less, 中身, 解凍, 解凍しない, 解凍せずに, 解凍せず

2021年4月24日土曜日

ripgrep-all (zip, tar.gz の中身も ripgrep)

zip, tar.gz の中味までも ripgrep できる ripgrep-all。
これはいい。インストールは簡単。
(参考) https://github.com/phiresky/ripgrep-all

依存パッケージをインストール。

# apt install ripgrep pandoc poppler-utils ffmpeg

下記から、適当なリリースバージョンをダウンロードして解凍。
https://github.com/phiresky/ripgrep-all/tags

$ tar zxvf ripgrep_all-v0.9.6-x86_64-unknown-linux-musl.tar.gz
$ cd ripgrep_all-v0.9.6-x86_64-unknown-linux-musl.tar.gz
$ sudo cp rga rga-preproc /usr/bin/

rg のかわりに、rga を使えば OK。

$ rga hogehoge

● ripgrep, zip, tar.gz, rg, rga, rust, ripgrep-all

2021年3月10日水曜日

diff コマンドでシンボリックリンクの先をチェックしないようにする --no-dereference

$ diff -qr --no-dereference aaa/ bbb/

● diff, no-dereference, シンボリックリンク

2021年2月16日火曜日

Emacs のコピー/ペーストをシステムのコピー/ペーストに反映させる

Emacs のコピー/ペーストをシステムのコピー/ペーストに反映させるには、autocutsel を使う。

(ウィンドウマネージャの起動時に実行するように設定する)
autocutsel -fork
autocutsel -fork -selection PRIMARY

■参考
https://stackoverflow.com/questions/3216081/integrate-emacs-copy-paste-with-system-copy-paste

● Emacs, emacs, copy, paste, system, integrate, コピー, ペースト, システム, 同期, 反映

Mew で gb2312 のメールを読む

たまにあるのでメモ。

C-c C-l Chinese-GBK を入力

● Mew, mew, gb2312, 文字化け, Chinese-GBK

tree コマンドの表示をアスキー表示にする

$ tree --charset=x

● tree, ascii, アスキー, 文字化け

2021年2月13日土曜日

sudo で環境変数を引き継ぐ (sudo -E)

sudo を実行するときに、proxy の設定とかが引き継がれないことがある。
sudo 実行時に、環境変数を引き継ぐオプション -E を使用すれば良い。

$ sudo -E ...

● sudo, 環境変数, proxy

cp コマンドでディレクトリごと上書きコピー

cp コマンドで、ディレクトリごと上書きコピーする。
既にある foo ディレクトリに bar ディレクトリを上書きコピーする場合。

$ cp -r bar -T foo

● cp, directory, overwrite, ディレクトリ, 上書き, コピー, オプション, option

2021年2月12日金曜日

wget で複数ファイルをダウンロードする (wget, xargs)

複数ファイルをテキストファイルにリスト化しておいて、wget でダウンロードさせる方法のメモ。

urls.txt ファイルにダウンロードしたい URL のリストを記述

$ vi urls.txt
(下記を記述)
ftp://hogehoge.org/hogehoge1.tar.gz
ftp://hogehoge.org/hogehoge2.tar.gz
ftp://hogehoge.org/hogehoge3.tar.gz

xargs と wget でダウンロード。wget の -c オプションは、レジューム。途中、停止したときに再開できる。

$ xargs -P 20 -n 1 wget -c --user=hogehoge --password=hogehoge < urls.txt

● wget, xargs, urls.txt, 一括, 自動, ダウンロード, レジューム, download

2021年2月10日水曜日

SVN で、ローカルのツリーをサーバと同じ状態にする SVN-DISTCLEAN

SVN で、チェックアウトしたローカルのツリーをサーバと同じ状態にしたいことがある。
make でいうところの、distclean みたいなやつ。
そんな便利コマンドは無いので、bash の function に SVN-DISTCLEAN というコマンドを追加する。

function SVN-DISTCLEAN () {
    svn status --no-ignore
    svn status --no-ignore | cut -c 2- | xargs rm -rf
    svn revert -R .
    svn update
    svn status --no-ignore
}

■ 使い方

ツリーに移動して、SVN-DISTCLEAN を実行。
作業中のファイルがある場合は、悲しいことになってしまうので注意。

$ SVN-DISTCLEAN

● SVN-DISTCLEAN, svn, distclean

2021年2月9日火曜日

tidy コマンドで XML ファイルを整形する

XML ファイルを整形するコマンド。

$ tidy -i -w 0 -xml -utf8 ./hogehoge.xml > hogehoge-out.xml

● tidy, xml, XML, 整形

2021年2月8日月曜日

Windows10 で、Caps Lock キーを Ctrl にする (レジストリ変更)

Windows10 で、Caps Lock キーを Ctrl キーに割り当てる設定メモ。
レジストリを変更する方法で。
(レジストリを変更するので、自己責任でお願いします)

■ 変更するレジストリ

レジストリキーコンピューター -> HKEY_LOCAL_MACHINE -> SYSTEM -> CurrentControlSet -> Control -> Keyboard Layout
種類バイナリ値 (REG_BINARY)
データ00 00 00 00 00 00 00 00 02 00 00 00 1d 00 3a 00 00 00 00 00

■ 設定を有効にする reg ファイル

caps2ctrl.reg ファイルを作成して実行する。中身は下記。
実行後、再起動。

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,02,00,00,00,1d,00,3a,00,00,00,00,00

先頭から、4 バイトずつ
00,00,00,00 : ヘッダ (バージョン)
00,00,00,00 : フラグ
02,00,00,00 : エントリー数 (NULL 終端含む)
1d,00,3a,00 : キーコード変換 (003a を 001d に変換)
00,00,00,00 : NULL 終端

■ 設定を解除する reg ファイル

remove_caps2ctrl.reg ファイルを作成して実行する。中身は下記。
実行後、再起動。

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=-

■ Windows キーも合わせて無効化したい場合の reg ファイル

Windows キーも不要という人 (=自分) は、下記を使います。

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,04,00,00,00,1d,00,3a,00,00,00,5b,e0,00,00,5c,e0,00,00,00,00

00,00,00,00 : ヘッダ (バージョン)
00,00,00,00 : フラグ
04,00,00,00 : エントリー数 (NULL 終端含む)
1d,00,3a,00 : キーコード変換 (003a Caps Lock を 001d Ctrl に変換)
00,00,5b,e0 : キーコード無効 (e05b 左 Win を無効化)
00,00,5c,e0 : キーコード無効 (e05c 右 Win を無効化)
00,00,00,00 : NULL 終端

● windows, windows10, caps, caps lock, ctrl, control, キャプスロック, コントロール, キー, 変更, 入れ替え, 割り当て, regedit, レジストリ, registry, win キー, win key, windows キー, windows key, 無効, 無効化

2021年2月5日金曜日

fzf インストールメモ

fzf をインストールするときに、毎回迷うのでメモしておく。
今回は、Ver.0.25.1 の例。シェルは bash。

1. fzf の github からリリースバージョンをダウンロード

git でやっても良いが、下記から tar.gz をダウンロード。

https://github.com/junegunn/fzf/tags

2. インストール

$ tar zxvf fzf-0.25.1.tar.gz
$ cd fzf-0.25.1

$ ./install
Downloading bin/fzf ...
  - Already exists
  - Checking fzf executable ... 0.25.1
Do you want to enable fuzzy auto-completion? ([y]/n) n
Do you want to enable key bindings? ([y]/n) n

Generate /home/masao/.fzf.bash ... OK

Do you want to update your shell configuration files? ([y]/n) n 

Update /home/ohmoto/.bashrc:
  - [ -f ~/.fzf.bash ] && source ~/.fzf.bash
    ~ Skipped

For more information, see: https://github.com/junegunn/fzf

$ sudo cp bin/fzf* /usr/local/bin
$ sudo cp man/man1/fzf* /usr/share/man/man1/
$ cp shell/completion.bash ~/.fzf_completion.bash
$ cp shell/key-bindings.bash ~/.fzf_key-bindings.bash

3. 設定

.bashrc に、下記を設定。設定はお好みで。

export HISTSIZE=100000
export HISTCONTROL=ignoreboth:erasedups                     # history を重複登録しないための設定
export PROMPT_COMMAND='history -a; history -c; history -r'  # 複数のシェルで history を共有するための設定
shopt -u histappend                                         # 同上

source ~/.fzf_completion.bash
source ~/.fzf_key-bindings.bash
export FZF_DEFAULT_OPTS='--height 40% --reverse --border'
export FZF_CTRL_R_OPTS="--preview-window up:3:wrap --preview 'echo {}'"

● fzf, history, 重複