なんとな~くしあわせ?の日記

「そしてそれゆえ、知識そのものが力である」 (Nam et ipsa scientia potestas est.) 〜 フランシス・ベーコン

Debianで起動時にちゃんとディスプレイマネージャを出す

ここ3,4ヶ月ぐらい、自宅PCの起動にlightdm(ディスプレイマネージャ)直打ちを使っていた。よくそんなので運用できたな。

起こっていたこと

  • Debian起動時に自動でGUIのログイン画面が出ない(=ディスプレイマネージャ)
  • 仕方ないのでXがない状態でrootでログインし、lightdmを起動してログインしていた

解決方法

参考サイト

この辺にやり方が書いてあった

eng-entrance.com

askubuntu.com

要は

  • xdm, lightdm をインストールする
  • systemctl でデフォルトの起動をGUIにする
  • lightdm を起動時に有効にする
  • /etc/systemd/system/display-manager.service のファイルを修正する
# apt-get install xdm lightdm
# systemctl set-default graphical.target
# systemctl enable lightdm
# ln -s /lib/systemd/system/lightdm.service /etc/systemd/system/display-manager.service

場合によっては全部はいらないかも

EC2上でJettyにJMXを設定してjconsoleでメモリ使用量を確認する

JMX

仕事でアプリサーバの監視をする必要が出てきたので、Jettyにjmxを設定してみた。

JMXとは Java Management Extensions - Wikipedia の略らしい。

以下のサイトを参考にしました。
d.hatena.ne.jp
ameblo.jp

ハマりどころ

RMI Serverが利用するポートの開放ができておらず、jconsole側で接続がタイムアウトしてしまいました。全部で使用するオプションは5つでした。いずれもJavaの"-D"オプションで指定できるのでファイルはいじってません。

-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=[ポート]
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.rmi.port=[ポート]

/etc/default/jetty の設定

  • Jettyをサービス化している前提
$ vim /etc/default/jetty
 
JETTY_HOME="/usr/local/jetty/"
JAVA_OPTIONS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.rmi.port=1099 $JAVA_OPTIONS"

これでアプリを再起動してjconsoleでつなげばOK

  • ネットワーク疎通チェック

netcatでポートスキャンしとくと、1099ポートが開いているか気軽にチェックできます。

$ nc -vz x.x.x.x 1099
x.x.x.x 1099 open

RSpecでファイル読み書きテストをやる

Rubyには Tempfile というクラスがあるので、それを使えばOK

  • Ruby 2.4で試してます
  • File.read するときはエンコード指定したほうがよいかも

class Tempfile (Ruby 2.5.0)

RSpec.describe ModuleXXX do

  before(:all) do
    @module = ModuleXXX.new
  end

  context " ファイルパターン1について(pattern1.txt)" do
    #File.open(File.expand_path('test.txt'), "w", 0755) do |f|
    Tempfile.create("test.txt") do |f|
      it " は出力に欠損がない " do
        # 一時ファイルでテスト
        file1 = FILE_PATH_TO_TEST
        file2 = f.path

        @modul.exec(["--input",
                  "#{file1}",
                  "--output",
                  "#{file2}"])

      end

      it ' 処理後のファイルの行数は 8' do
        expect(File.read(f.path, encoding: 'cp932').count("\n")).to eq(8)
      end

    end

    GC.enable
  end