Category: サーバー

  • やっちまった

     色々systemをいじっていたら、起動時のプロセスがおかしくなっていたらしく、起動できなくなっていた。  そのせいで家人の仕事に影響出しまくり  申し訳ない  多分、systemd-networkd.serviceが起動しなかった。  1分30秒でタイムアウトするのだが、また再起動しようとして失敗する、の繰り返し。  結局時間までに動かなくて、仕事に大きな迷惑をかけてしまった m(_ _)m  多分、socket関係の依存にnetworkが紛れ込んでいたためだと思う。  /etc/systemd/system/ の下の *network* ファイルの依存をとりあえず消して起動したら動いた。  ちなみにこのサーバーはxenの仮想マシンなので、dom0にログインすればリモートからでもいじれる。  これ自体は役に立ったパターンなのだが、こういう複雑なことをしているからコケやすい、のかもしれない。  前から、kernel 4.4.xじゃないとうまく動かなくて、最近なぜか4.13.xで動いたのでそれでやっていたのだが、それでも変なタイミングで止まってしまう。  どうもディスクに負荷をかけると死ぬっぽい。  単に準仮想化したいだけなのでxenじゃなくてもいいので、dockerとかsystemd-nsspawnに置き換えたいのだが、いざ変えようとするとゲスト側もそれなりにいじらなくちゃいけなくて、そこがめんどい。  特にネットワーク関係がめんどくて、ブリッジ自体はxenでもやっているのだが、nspawnだとeth0がhost0とかになるっぽくて、簡単に置き換えれそうにないので現状放置。  ていうか今こんなことやっている暇がない日程なんだけどなぁ・・・  忙しい時に限って忙しくなるマーフィーの法則を実感しつつとりあえず寝る。

  • journald-remote

     結局よくわからないままであるが何となく転送されたっぽいのでメモ  今、rsyslogでsyslogを転送しているのだが、もういい加減にsystemd-journalに移行したい。  でも転送方法がわからなくて色々やっていた。  systemd-jounarl-remote.serviceとsystemd-jounal-upload.serviceとか使えばよいのはわかっていたのだが、なんかうまくいってなかった。  受け取り側のサーバーにDNS名降っておく。syslog.daionet.gr.jpにしておく  両方のマシンにsystemd-journal-remoteをインストール  受け取り側で、 パッケージをローカル用にコピーして編集する。  systemctl edit systemd-journal-remote.service とかでもできそうな気がしたんだけど、overrideであって書き換えには向かないっぽい。  同じエントリが2つあると怒られてしまうので全部コピーして一部編集する。 # 直接/lib/systemd/system/を書き換えると、アップデートで全部消えるのでローカル用は/etc/systemdにコピーする仕様らしい cp /lib/systemd/system/systemd-journal-remote.service /etc/systemd/system/ cp /lib/systemd/system/systemd-journal-remote.socket /etc/systemd/system/ /etc/systemd/system/systemd-journal-remote.service の [Service] 内の ExecStart=/lib/systemd/systemd-journal-remote –listen-http=-3 –output=/var/log/journal/remote/ # –listen-https=-3 を –listen-http=-3にする  httpsにしたかったけどローカルだし証明書面倒だしとhttpにしてしまうことにした。 /etc/systemd/system/systemd-journal-remote.socket の [Socket] 内の ListenStream=[2001:0db8::1]:19532 BindIPv6Only=yes # ユニークローカルアドレスにするとかFWで守るとかして適当に保護。 # ListenStream=syslog.daionet.gr.jp:19532 とかやったらエラーになった。IPアドレスじゃないとダメっぽい  systemctl start systemd-journal-remote.socket ・ここは.serviceじゃなくて.socketを起動する。起動時有効にするのも.socket 送信側で、 /etc/systemd/journal-upload.conf systemctl start systemd-journal-upload.service  これで受信側の/var/log/journal/remote にコピーされた。 […]

  • fetchmail on systemd

    昔から色々やってうまくできなかったのがやっとできた。 # 難しいわけじゃなくて理解してなかっただけだがw debian/unstable/busterで、 /etc/systemd/user/fetchmail@.service :  あとは一般ユーザーで systemctl –enable now fethchmail@user.service で良いようだ。  最初、User=%IとかGroup=%Iとか付けてて失敗した。 等のエラーが出て、起動しなかった。 userユニットの場合は付けちゃダメっぽい。

  • aptとw3mとlibgpm

    最近aptのbuildに失敗するなぁと思っていたのだが、実はw3mの問題だったというお話。 現在、gpmにはexperimentalが来ていて、1.20.7-1と1.20.4-6.2があるのだが、libgpmに依存しているw3mとかemacsにはバージョン条件が入っていなくて、experimentalだと動かない、という問題がある。 で、aptのbuild-depにはw3mが入っていてw3mが使われているのだが、そこでw3mを起動しようとするとエラーになっていたのだが、見た目エラー内容がわからないために何でエラーになっているのかわからない状態になっていた。 たまたまhtmlで書かれたメールをemacsのwanderlustで見ようとしたら、w3mでフォーマットしようとして失敗する、というのを発見してあれ?と思ったのがきっかけ。 とりあえずlibgpm-devとlibgpm2をunstable 1.20.4-6.2にしてみたらaptのbuildもできたし、htmlメールも(一応)見れるようになった。

  • systemdとGNU screen

    なんか設定変えた記憶ないのに動作が変わってしまったGNU screen。 いくつか自前でパッケージ再作成してたりexperimentalからもらってきたりしてるからその関係かもしれないけど。 探しているとまず見つかるのは /etc/systemd/logind.conf に KillUserProcesses=No を書け。 だった。 書いてみたけど動作が変わらない。 systemctl daemon-reloadもやってみたけど同様。 もしかしたら要再起動だったりするかもしれないけどとりあえず保留。 screenを起動するときに systemd-run –scope -user screen で起動しろ、ってのもあったけど、これもダメ だった。 別の端末(別窓teraterm)からscreen -R -DD するとちゃんとセッション切り替わるのだが、screenの動いているTeratermを終了させるとそのタイミングでscreen下のプロセス全部killされるっぽい。 今までどうして動いてたんだ、という気もしつつ、よくよく調べてみたら、 loginctl enable-linger user しろというのがあったのでやってみたら、ビンゴ。 とりあえず一発loginctl enable-linger打っておいて、あとは systemd-run –scope –user screen -R -DD を.bashrcでばばそ、で今まで通りになったっぽい。 前はKillUserProcesses=No だけでできてたと思ったんだけどなぁ