====== 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}}