initscriptsでは/etc/rc.d/rc.localにコマンドを書いておけばOSの起動時に実行してくれますが、systemdでは下記のようにする。
/etc/systemd/system/ramdisk.service
[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/ramdisk
#!/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
Type=simple | 指定コマンドがフォアグラウンドで実行を継続する場合。コマンドを実行したらすぐに起動完了と判定 |
Type=forking | 子プロセスをバックグラウンドで起動して、最初のコマンドをは終了する場合。 最初のコマンドが終了したタイミングを起動完了と判断 |
Type=oneshot | 一度だけコマンドを実行するタイプのサービスの場合。コマンドが終了したら起動完了と判定して、サービスも終了したものと認識。 (RemainAfterExit=yesを指定すると、コマンド終了後もサービスは起動したままと認識。) |
Type=notify | systemdのライブラリ関数「sd_notify()」を使用する場合。プロセスのプログラム内部で、sd_notify()関数で起動完了を通知するように作られている必要が有ります。 |
Type=dbus | D-Bus(プロセス間通信用メッセージバス)を利用するサービスの場合。BusNameで指定した接続名がD-BUsに登録されると、サービス起動完了と判定 |