2014/12/19

systemctl

systemctl stop iptables.service
systemctl stop ip6tables.service
systemctl stop ebtables.service

systemctl mask iptables.service
systemctl mask ip6tables.service
systemctl mask ebtables.service


・maskしてサービスを無効にする
sudo systemctl mask httpd.service
=>ln -s '/dev/null' '/etc/systemd/system/httpd.service'
Unitファイルは/etc/systemd/system⇒/usr/lib/systemd/systemの順に参照される。優先度の高い/etc/systemd/system上に/dev/nullへのシンボリックリンクを配置することで、対象Unitへの操作を無効化している事が分かる。


・変更を有効にする
systemctl daemon-reload

・変更ログ
journalctl
該当サービスの直近のシステムログが表示されています。
rsyslogに送られるメッセージは、systemd-journaldというデーモンが監視しており、
すべてsystemd独自のログ(ジャーナル)にも保存されています。
ここで表示されるログは、ジャーナルから取り出しているため、実際のログの出力ファイルに関わらずすべてのログがここで確認できます。
上記のコマンドに-fオプションをつけると、「tail -f」と同じように新たなログが追記されるのを監視することもできます。



・serviceとの比較
systemctlは全てのUnitタイプを扱えるのに対して、serviceはserviceタイプのUnitしか取り扱う事ができない。
service-->**.service serviceは省略可能
systemctl-->**.socket *.mount

・chkconfig確認
systemctl is-enable httpd
systemctl enable httpd
systemctl disable httpd
systemctl restart httpd
systemctl reload httpd
===>[Service]
 ExecReload=/bin/kill
 ==>これはないと、エラーになる

systemctl show sshd.service
systemctl daemon-reload

現在稼働中の
systemctl list-units --type=service
関係なく、全てのサービス
systemctl list-unit-files --type=service

==>起動ON/OFFのチェック

・メリット
プロセスを並行起動する
==>UNITの関係を解析して、最適な順位で並行起動する
==>早くなる

initの場合は/etc/rc.d/rc[runlevel].dディレクトリのシンボリックリンクの命名規則によって起動順を指定していたが、
Systemdでは、Unitに定義されたUnit間の関係を元にSystemd側で起動順を決定する。

・cgroups

★systemctl enable error

test@localhost etc]$ sudo systemctl enable redis
redis.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig redis on
The unit files have no [Install] section. They are not meant to be enabled
using systemctl.
Possible reasons for having this kind of units are:
1) A unit may be statically enabled by being symlinked from another unit's
   .wants/ or .requires/ directory.
2) A unit's purpose may be to act as a helper for some other unit which has
   a requirement dependency on it.
3) A unit may be started when needed via activation (socket, path, timer,
   D-Bus, udev, scripted systemctl call, ...)
  

★systemd-cgls
groupsは、Kernelが持つ機能の1つで、CPUやメモリなどのリソースをプロセスグループごとに割り当てることができるものです。
各グループの階層については、systemd-cglsコマンドで確認できます。

★systemd service type?? foring simple
「Type」は、「ExecStart」で指定したコマンドでサービスのプロセスを起動した際に、起動完了をどのように判定するかを指定します

simple==>普通の
forking==>後ろで実行続ける
デーモン型のプロセスではなく、一度だけ指定のコマンドを実行するタイプのサービスについては、「Type=oneshot」とすると、「ExecStart」で指定したコマンドを実行して、それが完了したタイミングで起動完了(かつサービス終了)と判断します。コマンドが完了したあともサービスとしては起動状態として認識させたい場合は、「RemainAfterExit=yes」を指定します。このタイプについては、「Type=simple」とすることも可能ですが、この場合、systemdは、コマンドの実行を開始したタイミングで起動完了と判断します。