====== 06 CentOS7 systemctlでCASのramdisk起動スクリプト ======
initscriptsでは/etc/rc.d/rc.localにコマンドを書いておけばOSの起動時に実行してくれますが、systemdでは下記のようにする。
===== /etc/systemd/system/にサービスファイル作成 =====
[Unit]
Description=Open Cache Acceleration Software(Open Cas ramdisk)
After=network.target
[Service]
Type=simple
RemainAfterExit=yes
ExecStart=/bin/ramdisk -a
ExecStop=/bin/ramdisk -d
[Install]
WantedBy=multi-user.target
===== 起動シェル =====
#!/bin/sh
OPTION=$1
if [ "$OPTION" == "-a" ]; then
modprobe brd rd_size=10240000
casadm -S -i 1 -d /dev/ram1 -c wb
casadm -A -i 1 -d /dev/vdb
mount -o nobarrier /dev/cas1-1 /home/
elif [ "$OPTION" == "-d" ]; then
umount /home
casadm -R -i 1 -j 1
casadm -T -i 1
modprobe -r brd
else
echo "argments error."
exit
fi
exit
===== デーモンファイルをリロード =====
# systemctl daemon-reload
===== 自動起動 =====
# systemctl enable vpnclient
===== Service タイプのオプション =====
==== Type ====
|Type=simple|指定コマンドがフォアグラウンドで実行を継続する場合。コマンドを実行したらすぐに起動完了と判定|
|Type=forking|子プロセスをバックグラウンドで起動して、最初のコマンドをは終了する場合。 \\ 最初のコマンドが終了したタイミングを起動完了と判断|
|Type=oneshot|一度だけコマンドを実行するタイプのサービスの場合。コマンドが終了したら起動完了と判定して、サービスも終了したものと認識。 \\ (RemainAfterExit=yesを指定すると、コマンド終了後もサービスは起動したままと認識。)|
|Type=notify|systemdのライブラリ関数「sd_notify()」を使用する場合。プロセスのプログラム内部で、sd_notify()関数で起動完了を通知するように作られている必要が有ります。|
|Type=dbus|D-Bus(プロセス間通信用メッセージバス)を利用するサービスの場合。BusNameで指定した接続名がD-BUsに登録されると、サービス起動完了と判定|
{{tag>centos7 systemctl}}