Launchd-Skript zum Mounten des Volumes beim Booten

Ich habe ein Skript monta.shzum Mounten eines externen Volumes:

#!bin/sh
mkdir -p /Volumes/remvol
mount_smbfs //user:password@server/folder /Volumes/remvol

Dann habe ich ein com.jo.monta.plistSkript zum Starten des Skripts nach dem Systemstart platziert in /Library/LaunchDaemons:

<?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>com.jo.monta</string>
    <key>Disabled</key>
    <false/>
    <key>UserName</key>
    <string>admin</string>
    <key>ProgramArguments</key>
    <array>
        <string>/Users/admin/scripts/monta.sh</string>
    </array>
    <key>KeepAlive</key>
    <dict>
        <key>SuccessfulExit</key>
        <false/>
    </dict>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>

Ich habe das Skript von der Befehlszeile aus getestet und es funktioniert, aber wenn ich mich nach dem Booten anmelde, wird das Volume nicht gemountet.

Es scheint, als würde die Plist-Datei nicht geladen? Was ist los mit dir?

Kleine Korrektur zum Drehbuch: #!bin/shsollte sein#!/bin/sh
Sehen Sie eine Ausgabe in system.logBezug auf diesen launchd-Job? system.logSie können den Inhalt von Applications > Utilities > Console.app anzeigen .
@GrahamMiln Danke, ich habe mein Skript korrigiert. Ich habe keinen Hinweis auf com.jo.montaim Systemprotokoll gesehen, ich habe auch verwendet launchctl list | grep monta, um zu sehen, ob es etwas gab, und auch keinen Hinweis.
Warum verwenden Sie ProgramArgumentsstattdessen Program(was ein einfaches Schlüssel/Wert-Paar ist, kein Array, siehe man launchd.plistfür Details)?

Antworten (1)

Das Skript und die Plist funktionieren einwandfrei, wenn Sie folgende Änderungen vornehmen:

Fügen Sie einen Schrägstrich in /Users/admin/scripts/monta.sh hinzu:

#!/bin/sh
mkdir -p /Volumes/remvol
mount_smbfs //user:password@server/folder /Volumes/remvol

ordnungsgemäßes Eigentum an com.jo.monta.plist:

sudo chown root:wheel /Library/LaunchDaemons/com.jo.monta.plist

richtige Dateimodusbits von /Users/admin/scripts/monta.sh:

chmod 755 /Users/admin/scripts/monta.sh

Laden Sie den Launch-Daemon:

sudo launchctl load /Library/LaunchDaemons/com.jo.monta.plist
@naio Versuchchmod 755 /Users/admin/scripts/monta.sh