Köra script som systemtjänster

I framför allt webtjänster skapar man ofta små script eller program som ska utföra saker med viss regelbundenhet. Den enkla lösningen är att använda Cron i *nix eller Schemalägga i Windows. En annan, i många fall mycket bättre, lösning är att köra scriptet/programmet som en systemtjänst.

I Windows skapar man en tjänst (service) med ett särskilt program som tar hand om hela processen med att köra och övervaka scriptet/programmet.

Det finns idag en uppsjö av sådana program, jag vill dock i första hand rekommendera gratisprogrammet NSSM. Att skapa en tjänst är mycket enkelt och programmet finns för både 32 och 64 bit Windows 2000 och senare versioner.

Om man hellre vill jobba med GUI så är AlwaysUp en av de bästa lösningarna jag stött på. Kostar en del men är värd pengarna. En annan bra lösning jag jobbat med är FireDaemon, finns både som gratis- och betalprogram och har mer funktionalitet än AlwaysUp.

I *nix världen kallas systemtjänsterna för daemons och här finns 2 alternativ jag tycker att är särskilt intressanta.

Vill man bara ha ett script att köra som en daemon, utan några som helst finesser, kan man starta scriptet vid kommandprompten (tex bash) med:

nohup php myscript.php &

”&” flyttar processen i bakgrunden och ”nohup” tilåter processen att fortsätta trots att terminalfönstret stängs. För att avsluta processen använder man ”kill [processid]”.

Ett, i mitt tycke, mycket bättre alternativ är att använda Upstart som ersätter System-V init daemonen och som tillåter att i princip vad som helst kan startas som en daemon.

Allt som behövs är att skapa en speciell config fil för det script/program man vill köra som en daemon och placera filen i ”/etc/init” mappen, sedan kan man administrera daemonen via:

sudo service mydaemon start|stop|status

Upstart finns redan färdigt installerat i många av de större distributionerna.

För Mac gäller Launchd som skapats av Apple. Launchd kan, förutom att skapa daemoner, även användas för schemaläggning mm.

Det är alltså rätt enkelt att skapa systemtjänster oavsett vilken plattform man jobbar med. Däremot finns en del speciella krav på designen av scriptet/programmet då körmiljön för en systemtjänst inte är likadan som för ett GUI.

Annonser
Tagged with: , , , , , , ,
Publicerat i Operativsystem, Programmering
Erik Schütten

Hej! Jag heter och är bosatt på Åland, bekvämt mittemellan Sverige och Finland.

Jag har jobbat med IT i drygt 30 år och är bla delägare i ett internationellt mjukvaruföretag där jag ansvarar för den tekniska driften och -utvecklingen (Vice President of Technology).

Behöver du kvalificerad hjälp med din IT verksamhet? Fråga Erik! Du når mig via erik@scab.ax. Mer info om mina tjäntser hittar du på www.scab.ax.

Linkedin Twitter Facebook Google+ RSS

Ange din e-postadress för att följa denna blogg och få meddelanden om nya inlägg via e-post.

QR-code
About Erik Schütten
Senior IT expert with 30 years of experience in designing, implementing and managing IT systems and staff. Follow Erik Schütten on Google+, Twitter and Facebook