Search code examples
macosshelllaunchd

Mac launch daemon keeps loading the firewall shell script


Launch daemon worked as it should but now the problem is it keeps loading the same shell script and I can see multiple entries for the same rule. sudo ipfw list. How can this be prevented?

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.apple.ipfw</string>
    <key>OnDemand</key>
    <false/>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/local/ipfw.apple.startup.sh</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>ServiceDescription</key>
    <string>Apple IPFW Filter Rules</string>
    <key>StandardErrorPath</key>
    <string>/var/log/ipfw.apple.stderr</string>
    <key>StandardOutPath</key>
    <string>/var/log/ipfw.apple.stdout</string>
    <key>UserName</key>
    <string>root</string>
</dict>


Solution

  • Use LaunchOnlyOnce key in plist file.

    LaunchOnlyOnce : This optional key specifies whether the job can only be run once and only once. In other words, if the job cannot be safely respawned without a full machine reboot, then set this key to be true.