systemd
$ systemctl list-unit-files
2 つのfieldが出力される。 unit名と state
unit名: 最後の拡張子?で、mount, path, service, scope, timerなどの分類が分かる
stateは、enable, disable, static, masked, generated とある。
自動再起動
Restart=always RestartSec=5とした。 RestartSecを指定しないと 'start request repeated too quickly..'となる。
defaultの RestartSecは100msなので、1秒で10回近くtryするので...
ログ
まだリンク先読んでない..
> systemdでは、「Unit」という単位で処理を管理
従来のinit/upstratでは、サービスの単位で管理
サービスとはdaemonのことで多分良い。
target,mount,service,deviceなど、役割によってタイプがわかれています
target
mount
service
device
target, mount, service, deviceと分類されるのか。その大元が Unit
PID=1の最初のプロセスprocessとしてsystemdが起動すると、「default.target」というUnitを頂点とする、依存関係のツリー 利点は、並列化( upstartと比べて)
Unit間の「依存関係」と「順序関係」を分けて定義できるところが、systemdの特徴と言えるかも知れません。Upstartでは、イベントの連鎖によって依存する処理が順次実行されていきますが、この場合は、「依存関係=順序関係」となるため、「依存はしているが並列に起動してもかまわない」というような処理を並列化することができませんでした。
ここで、一旦 読むのを離脱。
主なUnitのタイプをまとめておきます。
$ find /usr/lib/systemd
とうつと、いろいろファイルが出る。
$ find /usr/lib/systemd |sed -E 's/.*\.//g' |sort | uniq -c |sort -g
で、みると、
service, socket, target, catalog, warnts, path, timer, preset, requires, stub, efiと。 generatorというのもあるけど、subtleなものかな。 $ sudo systemctl list-unit-files --type=service |grep rstudio
ここでは、rstudio-serverを例に。[] 内は、どれか、他にもサブコマンドはある。 $ systemctrl --help
Q:
sudo service status includes bad;
A:
Solution:
status bad will not create problem (i am not sure it depends) but it will not provide all functionality of systemctl. you can wait for next release of that package that will natively support systemd. or you can write unit file for your service or any other resource using given references.
maskedされたservice
enableさせたい。
/etc/systemd/system/ 以下にファイルがあるはずなので、
削除して
sudo systemctl daemon-reload
なぜ masked?
mask is a stronger version of disable. Using disable all symlinks of the specified unit file are removed. If using mask the units will be linked to /dev/null. This will be displayed if you check e.g. by systemctl status halt.service. The advantage of mask is to prevent any kind of activation, even manual.