Try launchd on macOS

Photo by Joshua Hoehne on Unsplash

macOS でのデーモン系の管理は launchd というものを利用するみたいですね.
早速 yaskkserv2 を launchd で管理してみました.

以下に記載の通りですが,ユーザ管理ものは ~/Library/LaunchAgents に配置するようなのでそこに置きます.

Script management with launched in Terminal on Mac

OS 起動時に立ち上がってほしいので RunAtLoad で起動するようにしました.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>net.yuzumone.yaskkserv</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/bin/yaskkserv2</string>
        <string>--no-daemonize</string>
        <string>--listen-address=127.0.0.1</string>
        <string>--google-japanese-input=notfound</string>
        <string>/usr/share/skk/dictionary.yaskkserv2</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>

あとは有効化します.

$ launchctl load yaskkserv.plist
$ launchctl list | rg yuzumone
58020   0       net.yuzumone.yaskkserv

systemd.timer のように定期実行もできそうなので,crond よりもこっちを利用したほうが良さそうです.