Próbuję zamontować dysk RAM podczas uruchamiania za pomocą tego:
/Users/Aram/Development/Tools/ramdisk.sh
diskutil erasevolume HFS+ "RamDisk" `hdiutil attach -nomount ram://800000`
com.aram.ramdisk.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>Label</key>
<string>com.aram.ramdisk</string>
<key>ProgramArguments</key>
<array>
<string>/bin/sh</string>
<string>/Users/Aram/Development/Tools/ramdisk.sh</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
A następnie działa:
sudo chown root:wheel /Library/LaunchDaemons/com.aram.ramdisk.plist
sudo launchctl load -w /Library/LaunchDaemons/com.aram.ramdisk.plist
Ale dostaję je w konsoli:
1/08/12 1:29:25.982 PM fseventsd[64]: could not open <</Volumes/RamDisk/.fseventsd/fseventsd-uuid>> (No such file or directory)
1/08/12 1:29:25.982 PM fseventsd[64]: log dir: /Volumes/RamDisk/.fseventsd getting new uuid: 102D7293-F1F1-4640-AA50-D547C365339F
1/08/12 1:29:24.561 PM sudo[1193]: Aram : TTY=ttys000 ; PWD=/Library/LaunchDaemons ; USER=root ; COMMAND=/bin/launchctl load -w /Library/LaunchDaemons/com.aram.ramdisk.plist
1/08/12 1:40:17.052 PM com.apple.launchd[1]: (com.aram.ramdisk) Throttling respawn: Will start in 8 seconds
Działa, jeśli ustawię KeepAlive na true, ale wtedy tworzy dysk RAM co 10 sekund.
Czy istnieje sposób na opóźnienie skryptu o 10 sekund przed uruchomieniem?
launchd
command-line
Aram Kocharyan
źródło
źródło
Odpowiedzi:
Możesz opóźnić wykonanie polecenia diskutil w skrypcie ramdisk.sh, przygotowując wiersz
sleep 10
.Tryb uśpienia zawiesza wykonanie na pewien czas, w sekundach.
Twój nowy ramdisk.sh staje się:
Aktualizacja nr 1: uruchamianie ramdisk.sh co 10 sekund i tworzenie dysku RAM tylko wtedy, gdy go nie ma, jest obejściem. Zobacz ten przykładowy skrypt dla takiej kontroli warunkowej:
Twój błąd może być spowodowany, ponieważ / Volumes nie jest już tworzone w procesie rozruchu w momencie uruchomienia uruchomionego zadania. Dlatego możesz najpierw sprawdzić obecność / Volumes, zanim jeszcze wykonasz skrypt, na przykład:
A gdy tworzenie się powiedzie, możesz chcieć zwolnić com.aram.ramdisk.plist od launchctl do następnego uruchomienia.
źródło
QueueDirectories
słowa kluczowego w uruchomionej konfiguracji (aby upewnić się, że/Volumes
jest dostępne)sleep 10
na początku. Chciałbym dowiedzieć się dokładnie, dlaczego sen jest potrzebny. Próbowałem sprawdzić / Volumes, ale jest tam od samego początku, więc musi to być coś innego.Korzystając ze świetnej odpowiedzi Pro Backup, zestawiłem to i działa:
Potrzebowałem tego, aby moja przeglądarka nie buforowała mojego dysku SSD, więc usunąłem to:
I utworzył dowiązanie symboliczne:
EDYTOWAĆ:
Właśnie dodałem skrypt jako aplikację startową w ustawieniach użytkownika na moim komputerze Mac, zawsze działa, chociaż pozostawia terminal otwarty. Nic wielkiego dla mnie.
źródło