Debianで起動時にちゃんとディスプレイマネージャを出す
ここ3,4ヶ月ぐらい、自宅PCの起動にlightdm(ディスプレイマネージャ)直打ちを使っていた。よくそんなので運用できたな。
解決方法
要は
- 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
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