Autostarta shell-program

28 jun 2007 kl. 01.39 skrev Peter:

Hej Kalle,

Jag har en fråga som jag inte vet om du har svaret på men min begränsade mac-erfarenhet leder mig till att fråga dig.
Jag vill att OS X ska starta ett program när OS X startar så jag slipper skriva in startkommandot varje gång. Detta är ett shell program, det har inget som helst GUI. Windows versionen av samma program har GUI.

Programmet heter Synergy och är otroligt smidigt för mig som har en pc och en mac bredvid varandra både hemma och på jobbet. Det låter dig styra båda burkarna med en uppsättning mus/kb utan KVM hårdvara.
Tacksam om du har något tips.

Visst har jag det.

Det finns två sätt att göra det på; hardcore, eller mer macigt. Jag börjar med hardcoresättet:

I och med att det är ett shellprogram, eller en demon, som ska köras så kan datorn med fördel konfigureras för att köra igång programmet tillsammans med alla övriga dolda tjänster som rullar på maskinen (fildelning, webbdelning osv). Till det här används ett program som heter launchd som är som en startmotor för tjänster på systemet. Men för att använda den motorn så behöver den lite instruktioner.

Först och främst behövs en xml-fil med en beskrivning av programmet som ska startas. Det man säger i den filen är vad programmet heter, om det är beroende av några andra program och när i datorns startprocess som det ska köras igång.

StartupParameters.plist:

<?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>Description</key>
<string>Synergy Client</string>
<key>OrderPreference</key>
<string>None</string>
<key>Provides</key>
<array>
<string>Synergy</string>
</array>
<key>Requires</key>
<array>
<string>Network</string>
</array>
</dict>
</plist>

Sen behöver vi ett shellscript som skickar kommandot att starta Synergy. Ett sånt fanns färdigt på Synergys sajt, så jag har kopierat det rakt av i princip. Den förändring jag gjort är sökvägen till själva programmet, och den förändring som du måste göra är att lägga in ditt IP eller domännamnet för servern i koden. Det här scriptet heter synergy.sh (nedan).

#!/bin/sh
. /etc/rc.common

### Byt ut synergy-server med ditt IP eller domännamn
run=(/Library/StartupItems/Synergy/synergyc -n $(hostname -s) -1 -f synergy-server)

KeepAlive ()
{
proc=${1##*/}

while [ -x ”$1” ]
do
if ! ps axco command | grep -q ”^${proc}\$”
then
”$@”
fi

sleep 3
done
}

StartService ()
{
ConsoleMessage ”Starting Synergy”
KeepAlive ”${run[@]}” &
}

StopService ()
{
return 0
}

RestartService ()
{
return 0
}

RunService ”$1”

För att de här filerna ska kunna köras måste systemet veta om att de är körbara filer, så man sätter en x-flagga på dem. Det gör du i Terminalen genom att först skriva

chmod 755

göra ett mellanslag och sedan dra in filen synergy.sh i terminalfönstret. Du kommer då att få sökvägen till filen utskriven. Tryck då bara enter. Upprepa samma sak med filen synergyc.

Ta sedan hela mappen och lägg den i /Bibliotek/StartupItems (du kommer att behöva skriva in lösenordet för att få skriva till den mappen) och prova att starta om datorn för att se att det fungerar. Det här innebär att Synergy kommer att köras oavsett vem som är inloggad, eller om någon är inloggad över huvudtaget.

Den mer maciga vägen är att göra ett applescript som körs när man loggar in.

Börja med att öppna Manusredigeraren som ligger i Program -> Applescript. Där skriver du in:

do shell script "/Library/StartupItems/Synergy/synergyc -n $(hostname -s) -1 -f synergy-server"

Byt ut ”synergy-server” mot din servers IP eller domännamn.

Sen sparar du scriptet som ett körbart program genom Arkiv -> Spara där du väljer ”Program” på rullgardinsmenyn, och ser till att inga kryssrutor är ikryssade. Prova att det fungerar genom att dubbelklicka på programsymbolen du just sparat.

Lägg sedan det scriptet på ett valfritt ställe där du inte slänger det av misstag. Sen startar du Systeminställningar -> Konton -> Startobjekt och drar in scriptet dit. Kryssa i kryssrutan framför programnamnet.

Mer info om Synergy och autostart hittar du på deras sajt.

Och mer om hur man göra startup-script till OSX på Apples sajt.

Hoppas det löser sig.

Kalle

Prenumerera på kommentarer till artikeln via RSS

Skriv en kommentar