स्टार्टअप पर रैम डिस्क को माउंट करना, लेकिन स्वचालित रूप से अनमाउंट होना प्रतीत होता है


1

मैंने एक सरल स्क्रिप्ट लिखी है जो राम डिस्क की गणना करती है:

%> cat /System/Library/LaunchDaemons/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>Ramdisk</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/local/bin/setup_run_shm</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>UserName</key>
    <string>root</string>
</dict>
</plist>

लेकिन जब मैंने लॉग इन किया, तो डिस्क चली गई। ऐसा लगता है कि डिस्क अनमाउंट है। मुझे सच में यकीन नहीं है कि क्यों। इसके अनुसार /tmp/log.1 कोई त्रुटि नहीं है।

P.S ने setup_run_shm स्क्रिप्ट संलग्न की:

%> cat /usr/local/bin/setup_run_shm
#!/bin/bash

exec &> /tmp/log.1
date
set -x

size=$(( 1024*1024*8 ))
path=/run/shm/
name="SHM"

if mount | grep -q '/run/shm'; then
    echo RAM disk already exist.
    echo 'Eject the disk and try again. (e.g hdiutil eject /dev/diskX)'
    exit
fi

disk=$(hdiutil attach -nomount ram://"$size")
echo Attached RAM disk $disk

newfs_hfs -v "$name" $disk
echo Formatted RAM disk with name $name

mount -t hfs $disk "$path"
echo Mounted ram disk of size $size to $path

जवाबों:


1

वास्तव में यह निश्चित नहीं है कि क्या यह वास्तव में आपके प्रश्न का उत्तर है, लेकिन यह Applescript मेरे लिए काम करता है, App के रूप में चलता है।

set RAMDisk to "RAM_Disk" as text
tell application "Finder"
    if not {exists disk RAMDisk} then
        set VolumeName to RAMDisk
        set SizeInMB to 1024
        set NumSectors to ((2 * 1024 * SizeInMB))
        set DeviceName to do shell script "hdid -nomount ram://" & NumSectors
        do shell script "diskutil eraseVolume 'HFS+' '" & VolumeName & "' " & DeviceName
        do shell script "SetFile -a V /Volumes/" & VolumeName       
    end if  
end tell

इसे चलाने के लिए डेवलपर कमांड लाइन टूल की आवश्यकता है, लेकिन यह & amp पूछेगा; यदि मौजूद नहीं है तो ऑटो-इंस्टाल करें।


इसे बूट पर शुरू किया जाना चाहिए। मेरी स्क्रिप्ट काम करती है, लेकिन यकीन नहीं होता कि यह क्यों वापस आई है ...।
daisy

आह ... लॉगिन पर आपके उद्देश्यों के लिए बहुत देर हो चुकी है? क्षमा करें, केवल एक विचार था।
Tetsujin
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.