The "no plist was returned" error means that it was unable to parse the .plist file. I see two problems offhand: Lable
should be Label
, and </true>
should be <true/>
. You can use the command plutil -lint ~/Library/LaunchAgents/local.sshfs_mounts.plist
to check the plist syntax, although it will not detect whether the data in the plist is valid as a launchd item.
Скрипт запуска OSX для монтирования sshfs при входе в систему с помощью файла plist
Я прочитал справочные страницы для plist и launchd.plist, а также посты об использовании файлов plist для запуска скриптов при входе в систему; но я могу заставить вещи работать.
Мой сценарий расположение и разрешения:
sshfs_mounts.sh
:
ls -al Library/scripts/ -rwxr-xr-x 1 jason staff 288 May 10 17:06 sshfs_mounts.sh
cat Library/scripts/sshfs_mounts.sh
#!/bin/bash # ## automounting of sshfs directories mount_cosmic () { /usr/local/bin/sshfs jason@iss.nasa.gov:/media/NetworkShare/spacedock-1 /Users/jason/share; } mount |grep "/Users/jason/share/" if [ $? == 1 ] && [ -d "/Users/jason/share" ] && [ $USER == "jason" ]; then mount_cosmic fi
ИЗДАНО ИЗ ОРИГИНАЛЬНОГО ПОЧТЫ:
Если я запускаю скрипт вручную, он выполняется как положено. Я могу загрузить plist ( launchctl load ~/Library/LaunchAgents/local.sshfs.plist
) и запустить его ( launchctl start ~/Library/LaunchAgents/local.sshfs
), но он не запускает скрипт. В логах ( cat /var/log/system.log |grep local.sshfs
) я получаю:
May 11 09:30:26 rover com.apple.launchd.peruser.504[305] (local.sshfs.plist): Throttling respawn: Will start in 10 seconds
Вот мое местоположение и разрешения для файла plist:
ls -al Library/LaunchAgents/local.sshfs.plist -rw-r--r-- 1 jason staff 419 May 10 18:14 Library/LaunchAgents/local.sshfs_mounts.plist
И файл (отредактированный после принятия совета Гордона ^ 2):
<?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>KeepAlive</key> <true/> <key>Label</key> <string>local.sshfs.plist</string> <key>ProgramArguments</key> <array> <string>/bin/sh</string> <string>/Users/jason/Library/scripts/sshfs_mounts.sh</string> </array> <key>RunAtLoad</key> <true/> <key>StandardErrorPath</key> <string>/tmp/sshfs_mounts.err</string> <key>StandardOutPath</key> <string>/tmp/sshfs_mounts.out</string> </dict> </plist>
Махало заранее.
2 ответа на вопрос
Благодаря Гордону, помогавшему мне в устранении неполадок, я смог правильно отформатировать файл plist (в итоге я использовал plistEdit pro, потому что plists требовательны к форматированию, а использование текстового редактора мне не помогло) и определил, что в скрипт, который я пытался запустить при входе в систему.
Были две вещи, которые мешали мне. Во-первых, launchd не позволял моему подпроцессу порождения скрипта, необходимому для монтирования каталога sshfs. Это было исправлено добавлением следующей пары ключ-значение:
<key>AbandonProcessGroup</key> <true/>
(спасибо tw из сообщения на форуме macworld.com )
Опять же, благодаря предложениям Гордона, я смог прочитать ошибки, /tmp/sshfs_mounts.err
чтобы обнаружить, что что-то не так с тем, как была написана моя команда. Я провел некоторый поиск по sshfs mounts и нашел информацию о паре сайтов Linux, которые помогли мне составить лучшую команду mount.
Итак, вот что работает.
Автор сценария:
mount | grep /Users/jason/share if [ $? == 1 ] && [ -d /Users/jason/share ]; then /usr/local/bin/sshfs -o idmap=user jason@iss.nasa.gov:/spacedock-1 /Users/jason/share fi
PLIST
<?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>AbandonProcessGroup</key> <true/> <key>Label</key> <string>local.sshfs.plist</string> <key>ProgramArguments</key> <array> <string>/Users/jason/Library/scripts/sshfs_mounts.sh</string> </array> <key>RunAtLoad</key> <true/> </dict> </plist>
Похожие вопросы
-
3
Почему Macbook Pro Unibody вылетает в спящем режиме под Windows?
-
3
Ускорение загрузки OS X на годичной MBP
-
2
iTunes на Mac: как использовать внешнюю музыкальную библиотеку на NAS (общий ресурс Windows)?
-
-
3
Как повторно связать резервную копию Airport Time Machine после перехода на новый Mac?
-
4
Как я могу конвертировать ISO-образ CD в формат bin / cue на Mac?
-
6
Как вы отключите звук запуска на Mac?
-
5
Почему мой Macbook сильно нагревается при использовании Boot Camp?
-
5
Macbook Pro продолжает извлекать все, что я положил во внутренний оптический привод
-
4
Есть ли альтернативы TextExpander в Mac OS X?
-
7
Есть ли в Mac OS X эквивалент Ctrl + Tab?