Permalänk
Medlem

Egen service kommando i UNIX

Tja, undrar vad det är för kommando som man skriver för att köra en service i bakgrunden dvs så att den inte upptar skalet och tvingar en att öppna en ny skal. Jag undrar också hur man tar ihjäl den på säkert sätt om man skulle vilja konfigurera applikationen som servicen tillhör. Tack på förhand.

Permalänk
Medlem

./mitt _program &

kommer att starta programmet och köra det i bagrunden, stdout kommer dock att komma i konsolen,
komandot fg plockar fram programmet(fg=forground), ctrl + z pausar programmet, vilket du sedan kan skicka tillbaka till bakgrunden genom kommandot "bg" om du kör flera processer i bakgrunden behöver du ange vilken av dem du menar när du skriver fg, ex fg 2.
du kan lista processerna med kommandot jobs.

dö processen kan du göra genom att plocka fram den med fg och sedan trycka ctrl + c.

om du vill konfigurera det som en deamon(dvs att du kan ge den kommandona start,stop,restart), så är det enklaste att kolla på hur skriptet för te.x gpm är skriven.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av mattoys

./mitt _program &

kommer att starta programmet och köra det i bagrunden, stdout kommer dock att komma i konsolen,
komandot fg plockar fram programmet(fg=forground), ctrl + z pausar programmet, vilket du sedan kan skicka tillbaka till bakgrunden genom kommandot "bg" om du kör flera processer i bakgrunden behöver du ange vilken av dem du menar när du skriver fg, ex fg 2.
du kan lista processerna med kommandot jobs.

dö processen kan du göra genom att plocka fram den med fg och sedan trycka ctrl + c.

om du vill konfigurera det som en deamon(dvs att du kan ge den kommandona start,stop,restart), så är det enklaste att kolla på hur skriptet för te.x gpm är skriven.

Ok tack för det snabba svaret men jag händer inte riktigt med på det sista kolla på GPM säger du. Har du nån konkret exempel på hur man skapar en deamon så som du beskriver, är väl inte nån high tech på UNIX och har heller aldrig skapat en deamon så det vore najsigt om du har möjlighet att visa mig genom exempel. Tack på förhand.

Permalänk
Medlem

#include <stdio.h> #include <stdlib.h> #include <unistd.h> int main(){ int fork_ret=fork(); if(fork_ret<0) exit(1); else if(fork_ret>0) exit(0); for(;;){ printf("I am a daemon\n"); sleep(1); } }

Permalänk
Medlem

Du kan mycket enkelt sno ihop ett script. Om du har en vanlig Linux-distribution så kolla i /etc/init.d/ för exempel. Om du kör Slackware, Arch eller någon annan distribution med BSD init så ser scripten en smula annorlunda ut och ligger i /etc/rc.d/.

Håkan

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av mattoys

./mitt _program &

kommer att starta programmet och köra det i bagrunden, stdout kommer dock att komma i konsolen,
komandot fg plockar fram programmet(fg=forground), ctrl + z pausar programmet, vilket du sedan kan skicka tillbaka till bakgrunden genom kommandot "bg" om du kör flera processer i bakgrunden behöver du ange vilken av dem du menar när du skriver fg, ex fg 2.
du kan lista processerna med kommandot jobs.

dö processen kan du göra genom att plocka fram den med fg och sedan trycka ctrl + c.

om du vill konfigurera det som en deamon(dvs att du kan ge den kommandona start,stop,restart), så är det enklaste att kolla på hur skriptet för te.x gpm är skriven.

Om jag har tagit fram ett program med fg och sen vill ha bort det. Då kan jag ju inte skriva kommandot bg för programmet är ju i förgrunden just då, hur gör man? Går det göra från ett annat terminal fönster?

Permalänk
Citat:

Ursprungligen inskrivet av nystan
Om jag har tagit fram ett program med fg och sen vill ha bort det. Då kan jag ju inte skriva kommandot bg för programmet är ju i förgrunden just då, hur gör man? Går det göra från ett annat terminal fönster?

ctrl +z för att pausa och sedan bg <job> för att återuppta det i bakgrunden.

Visa signatur

"to conquer others is to have power, to conquer yourself is to know the way"