2019年11月23日土曜日

python3.8 で追加された機能

Python Release Python 3.8.0
とりあえ、以下の2つは覚えておく。

■ f-strings
>>> val1 = "111"
>>> val2 = 222
>>> f"{val1}, {val2}")
"'111, 222'"

# =を付けると変数名も一緒に表示してくれる (今回のリリースで追加された)
>>> f"{val1=}, {val2=}")
"val1='111', val2=222"

■ PEP 572, Assignment expressions

やっとpython で代入式が使えるようになった。
正規表現の結果をif でチェックする処理が1行で書けるようになった。
if res := re.search(ptn, words):

2019年11月22日金曜日

systemdを更新したらエラー

最近いろいろサボっていたけど、久しぶりの「yum update」です。
(centos のバージョンも7.7 になってる気がする)

systemd の更新があったようで、mongodb, nginx が起動しませんでした (涙
エラーです...

■ systemd のエラー表示
# nginx の場合
> Can't open PID file /var/run/nginx.pid (yet?) after start: Too many levels of symbolic links

# mongodb の場合
> Can't open PID file /var/run/mongodb/mongod.pid (yet?) after start: Too many levels of symbolic links

■ エラーの関連リンク
- Systemd error: 'Refusing to accept PID outside of service control group, acquired through unsafe symlink chain'
- service: relax PID file symlink chain checks a bit (#8133)
cgroup 対応でチェックを追加したという事です。

■ 対処
 - /usr/lib/systemd/system/mongod.service
 - /usr/lib/systemd/system/nginx.service
このファイルを編集して
pid のパスを /var/run から /run に変更。

nginx, mongo を起動
> systemctl daemon-reload
> systemctl reload nginx
> systemctl reload mongod
OK ... 無事起動 (うれし涙

一応、nginx, mongo のconf も変更しておく
 - /etc/nginx/nginx.conf
 - /etc/mongod.conf
pid のパスを変更。/var/run -> /run
(/var/run は /run へのシンボリックリンクなので変更しなくても動きますが、systemdの変更に合わせておきます)

mongodbやnginx のように、centos 以外のレポジトリからインストールしたものがあれば、しばらくは要注意。
Can't open PID file /var/run/xxxxx.pid (yet?) after start: Too many levels of symbolic links
このエラー表示を頭の片隅に。

(そもそも、cgroup の勉強ができていないので何とも言えませんが、別の対応方法があるような気もする.....)