XFCE4にgenmon-pluginでorageの代替えアプレットを作成する

gnome-pluginとアプレットをクリックした際に起動するカレンダーアプリケーションをインストールする。

# apt install xfce4-genmon-plugin
# apt install gnome-calendar

下記のスクリプトファイルを作成する。

#!/bin/bash
echo "<txt>"$(date +'%b%-d日(%a)  %R')"</txt>"
echo "<txtclick>gnome-calendar</txtclick>"
echo "<tool>"$(date +'%x (%a)')"</tool>"

下記コマンドで作成したスクリプトを実行可能にし、XFCEパネルにアイテム「ジェネリックモニター」を追加して、作成したスクリプトを指定する。

$ chmod +x /home/user/bin/xfce4-genmon-calendar.sh

MX-19.4でVNCサーバーを起動して画面共有する

画面共有用のtigervncサーバーをインストールする。

# apt install tigervnc-common
# apt install tigervnc-scraping-server

パスワードファイルを作成する。

$ vncpasswd

下記のコマンドを実行してサーバーを起動する。

$ x0vncserver -passwordfile /home/user/.vnc/passwd

lightdmのログイン画面に解像度を設定する

環境

OS: Linux Mint 20.2
LightDMのVersion: 1.30.0

下記のコマンドでディスプレイ名と使用できる解像度を確認する。

$ xrandr

解像度をセットするスクリプトをディスプレイ名と解像度を確認した値に置き換えて作成する。

#!/bin/bash
xrandr --output DisplayPort-1 --mode 1920x1080

スクリプトに実行権限を付与する。

# chmod +x /etc/lightdm/resolution.sh

lightdmの設定ファイルにスクリプトを実行する設定を追記する。

…
display-setup-script=/etc/lightdm/resolution.sh
…

Ubuntu20.04でVirtualBoxの仮想マシンをサービス化する

下記のファイルを作成する。パーミッションは644で良い。

[Unit]
Description=VirtualBox VM %I
After=network.target virtualbox.service
Before=runlevel2.target shutdown.target

[Service]
User=username
Group=vboxusers
Type=forking
Restart=no
TimeoutSec=5min
IgnoreSIGPIPE=no
KillMode=process
GuessMainPID=no
RemainAfterExit=yes
ExecStart=/usr/bin/VBoxManage startvm %i --type headless
ExecStop=/usr/bin/VBoxManage controlvm %i acpipowerbutton

[Install]
WantedBy=multi-user.target

win1とwin2という名前の仮想マシンをサービスとして有効にして起動する。

# systemctl enable vbox@win1
# systemctl start vbox@win1
# systemctl enable vbox@win2
# systemctl start vbox@win2

スクリプトをsystemdに登録する

下記のようなファイルを作成する。
・Afterは記述したserviceやunitの起動処理が終わるまで起動しない
・Restartはプロセスが終了した場合に自動で再起動するかを設定
(no:なし、always:常に、on-success:正常終了した場合、on-failure:異常終了した場合)

[Unit]
Description=test script service
After=NetworkManager.service

[Service]
ExecStart=/usr/local/bin/test.sh
Restart=no

[Install]
WantedBy=multi-user.target

FreeIPAサーバーのdna範囲を再セットする

前提条件

FreeIPAのバージョンは4.6.8、一時的に普通のPCでipa98/ipa99というFreeIPAサーバーを立てて、移行作業後に本番で使うサーバー機でipa01/ipa02をレプリカにして、何も考えずにマルチマスターだからと思って、最初に作ったipa98/ipa99をIdMで削除して、しばらく認証されてるから良いと思ってたら新しいユーザー追加できなかった際の対応内容です。下記のエラーが発生しました。
Allocation of a new value for range cn=posix ids,cn=distributed numeric assignment plugin,cn=plugins,cn=config failed! Unable to proceed.

対応内容

現在のipa01とipa02のdna範囲を確認する。

# kinit admin
# ipa-replica-manage dnarange-show

dna範囲が設定されていなかった。

ipa01.local.example.com: No range set
ipa02.local.example.com: No range set

dnarange-setで設定できそうだけど、設定する範囲を知りたいので、消してしまったサーバーの残っていた設定ファイルをfindとgrepで探索してたら、それっぽいファイルを発見した。IdMと見比べても矛盾していなさそう。

…
dnaMaxValue: 1304599999
dnaNextValue: 1304400063
…

下記のコマンドでdnaを範囲を設定したら無事にユーザーを追加できた。

# ipa-replica-manage dnarange-set ipa01.local.example.com 1304400063-1304599999

PostgreSQL10ストリーミングレプリケーション設定(CentOS7)

CentOS7.9を使用。

2台構成

host:sv1 ip:192.168.0.100 略称:プライマリ
host:sv2 ip:192.168.0.101 略称:セカンダリ

プライマリとセカンダリの共通設定

インストールする。

# yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
# yum install postgresql10-server postgresql10-devel postgresql10-contrib

ファイアウォールに例外を追加する。

# firewall-cmd --add-service=postgresql --permanent
# firewall-cmd --reload

データベースを初期化してデータベースクラスタを作成する。

# postgresql-10-setup initdb

サービスを有効化する。

# systemctl enable postgresql-10

プライマリの設定

サービスを起動する。

# systemctl start postgresql-10

レプリケーション用ユーザーを作成する。

# su postgres
$ psql
=# CREATE USER replication_user REPLICATION PASSWORD 'password';
=# \q

外部からの通信を許可。最下部に下記を追記する。

host    replication    replication_user    192.168.0.0/24    md5

postgresql.confを編集して下記8行を変更する。
※synchronous_commitはシステム要件によって変更した方が良い

listen_addresses = '*'
wal_level = hot_standby
fsync = on
synchronous_commit = off
wal_sync_method = fsync
max_wal_senders = 2  ※プライマリを含んだレプリケーションサーバーの数を入れる
wal_keep_segments = 32  ※8~32が目安らしい
synchronous_standby_names = '*'

ついでに下記設定値がシステム要件に合っているか確認する。

max_connections = 300  ※同時接続数
shared_buffers = 1024MB  ※物理メモリの1/4程度
work_mem = 8MB  ※物理メモリの1/500程度だが最大8MB
effective_cache_size = 2048MB  ※物理メモリの1/2程度

サービスを再起動する。

# systemctl restart postgresql-10

セカンダリの設定

postgresqlサービスが停止した状態でdataを空にする。

# rm -r -f /var/lib/pgsql/10/data/*

先程作成したレプリケーション用ユーザーを使用してプライマリからデータをコピーする。
※-Rオプションはrecovery.confを自動作成する指定
※-Pオプションは進捗を表示する指定

# su postgres
$ pg_basebackup -R -h 192.168.0.100 -p 5432 -U replication_user -D /var/lib/pgsql/10/data/ -P

/var/lib/pgsql/10/data/内のすべてのファイルの所有者/所有グループがpostgresになっているか確認する。

ll /var/lib/pgsql/10/data/

/var/lib/pgsql/10/data/postgresql.confを編集して設定を変更する。

hot_standby = on

postgresqlサービスを起動する。

# systemctl start postgresql-10

プライマリサーバーで下記SQLを実行するとレプリケーションされているか確認できる。

SELECT * FROM pg_stat_replication;

フェイルオーバーする際はセカンダリで下記コマンドを実行する。

# su postgres
$ pg_ctl promote -D /var/lib/pgsql/10/data/

LibreOffice CalcのVBで印刷範囲を変更する

Dim args(2) as new com.sun.star.beans.PropertyValue
args(0).Name = "PrintArea"
args(0).Value = "$A$1:$U$30"
args(1).Name = "PrintRepeatRow"
args(1).Value = "$A$10"
args(2).Name = "PrintRepeatCol"
args(2).Value = ""
Dim dispatcher as Object
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dispatcher.executeDispatch(ThisComponent.CurrentController.Frame, ".uno:ChangePrintArea", "", 0, args())