Script som startar/stannar processer i Linux

Trädvy Permalänk
Medlem
Plats
Skåne
Registrerad
Feb 2002

Script som startar/stannar processer i Linux

Hej..
Någon som vet ett script som kan starta/stänga ner processer (mha PID) under Linux?
Tex.. om jag har vsftpd på min linux server... och har en hemsida på samma dator..
Så skulle jag vilja stänga av/starta ftpservern via hemsidan..
Skulle detta gå?

Eller är det omöjligt i teorin?

Mvh //Magnus

#1: Intel i7-2600K | 8GB RAM | 780 GTX Ti | 8x Samsung EVO raid-10 LSI 9271-8i
#2: Dell XPS 1330
http://www.excellent-servers.se - http://www.excellent-hosting.se

Trädvy Permalänk
Medlem
Plats
Malmö
Registrerad
Jul 2001

Nja inget svårt, de mest en fråga om rättigheter.

i PHP kan man använda system() för att köra olika kommando.

Trädvy Permalänk
Medlem
Plats
Skåne
Registrerad
Feb 2002

Du skulle inte vilja utveckla det där?
Ska läsa lite på php.net om funktionen..

Men du får gärna skriva hur man använder det..

Mvh //Magnus

#1: Intel i7-2600K | 8GB RAM | 780 GTX Ti | 8x Samsung EVO raid-10 LSI 9271-8i
#2: Dell XPS 1330
http://www.excellent-servers.se - http://www.excellent-hosting.se

Trädvy Permalänk
Medlem
Plats
din root :>
Registrerad
Feb 2004

använd 'ps PID' för att döda en process.

Trädvy Permalänk
Medlem
Plats
Svedala
Registrerad
Apr 2002
Citat:

Ursprungligen inskrivet av nystan
använd 'ps PID' för att döda en process.

Jag är fullständigt övertygad om att 'kill' är mycket bättre för endamålet.

Trädvy Permalänk
Medlem
Plats
Bollnäs
Registrerad
Maj 2002
Citat:

Ursprungligen inskrivet av nillon
Jag är fullständigt övertygad om att 'kill' är mycket bättre för endamålet.

Jag är fullständigt, otroligt, komplett och helt fascinerande övertygad om att jag håller med

Trädvy Permalänk
Medlem
Plats
På en pizza
Registrerad
Okt 2004

kan inte webmin göra något sånt.

8D

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Feb 2003

system("kill PID");

? fungerar för mig...

Dock har jag safe_mode nu så jag måste köra med popen();

Exempel:

function pidkill($pid) { $handle = popen("kill " . $pid, "r"); usleep(100000); $read = fread($handle, 2096); return $read; } // döda ngt $svar = pidkill(1059); echo $svar;

// Richard

Internet är coolt.

Trädvy Permalänk
Medlem
Plats
Skåne
Registrerad
Feb 2002

Hur skulle jag skriva om jag skulle vilja starta en process då?

//Magnus

#1: Intel i7-2600K | 8GB RAM | 780 GTX Ti | 8x Samsung EVO raid-10 LSI 9271-8i
#2: Dell XPS 1330
http://www.excellent-servers.se - http://www.excellent-hosting.se

Trädvy Permalänk
Medlem
Plats
Malmö
Registrerad
Jul 2001

Men apache/php kommer inte få starta/döda en process (eller jo, fast den kommer köras som nobody)

bättre att scripta en tjänst som sköter processerna, detta är dock en mer applikations-utvecklings grej. jag gjorde en likande för ett tag sen dock för att styra en proftpd.

Trädvy Permalänk
Medlem
Plats
din root :>
Registrerad
Feb 2004
Citat:

Ursprungligen inskrivet av nillon
Jag är fullständigt övertygad om att 'kill' är mycket bättre för endamålet.

Ojdå Självklart menar jag "kill PID"

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Feb 2003
Citat:

Ursprungligen inskrivet av maDa
Men apache/php kommer inte få starta/döda en process (eller jo, fast den kommer köras som nobody)

bättre att scripta en tjänst som sköter processerna, detta är dock en mer applikations-utvecklings grej. jag gjorde en likande för ett tag sen dock för att styra en proftpd.

Om man startar processen med apache kommer väl processen köras som www-data?
Och då har apache även rättighet att döda den väl? Eller har jag helt fel nu :/

Men om processen är startad av root så går det nog inte att döda med ett php script...
Och om en process körs av "nobody" ... då k an väl vem som hellst döda den?

Sen angående starta en process:

function shell($str) { $handle = popen($str, "r"); usleep(100000); $read = fread($handle, 2096); return $read; } // Kör komanndo $svar = shell("ls /home"); echo $svar;

Exemplet kommer förhoppningsvis att lista mapparna i /home
Sen är det bara ersätta shell("ls /home"); med ett eget kommando till funktionen... ex:

// döda apache? $svar = shell("apache2 stop");

//Richard

Internet är coolt.

Trädvy Permalänk
Medlem
Plats
Jönköping
Registrerad
Jan 2002
Citat:

Ursprungligen inskrivet av Unreality_88
Om man startar processen med apache kommer väl processen köras som www-data?
Och då har apache även rättighet att döda den väl? Eller har jag helt fel nu :/

Visst, det torde gå att starta processer som apache-användaren, men det är ju knappast något du kommer att ha nytta av, då du inte kommer att få binda till portar under 1024 i vilket fall.

W

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Feb 2003
Citat:

Ursprungligen inskrivet av WorldSpawn
Visst, det torde gå att starta processer som apache-användaren, men det är ju knappast något du kommer att ha nytta av, då du inte kommer att få binda till portar under 1024 i vilket fall.

W

Varför kommer man inte få det ? Förklara gärna
Hur annars ska man kunna starta en process som en annan användare GENOM apache/php ?

Är ju en annan sak kanske om man loggar in som root och kör

./phplibdir/php -f /var/www/mittscript.php

eftersom php scriptet inte då kommer köras som apache (ingen koppling till apache alls) och istället som användaren root?
Kan den då binda portar över 1024?
// Richard

Internet är coolt.

Trädvy Permalänk
Medlem
Plats
Jönköping
Registrerad
Jan 2002
Citat:

Ursprungligen inskrivet av Unreality_88
Varför kommer man inte få det ? Förklara gärna

Därför att endast root får det. Alla deamons som ligger på portar under 1024 startar alltså med rootbehörighet, vilken de sedan kan avsäga sig själva, när de har bindat till porten och gjort de övriga saker som kräver högre behörighet. Typ. Rätta mig om jag har fel här, någon.

Ett alternativ är ju att starta processerna som någon annan användare, och binda dom till portar högre än 1024, och sen istället använda iptables-regler för att knyta den höga porten till den låga. Typ Apache på 8080, och en iptables-regel som redirectar 8080 till 80. Känns som en kludge.. :-/

W

Trädvy Permalänk
Medlem
Plats
Mölndal
Registrerad
Jul 2005
Citat:

Ursprungligen inskrivet av Unreality_88
Om man startar processen med apache kommer väl processen köras som www-data?
Och då har apache även rättighet att döda den väl? Eller har jag helt fel nu :/

Men om processen är startad av root så går det nog inte att döda med ett php script...
Och om en process körs av "nobody" ... då k an väl vem som hellst döda den?

En användare (inklusive nobody) kan bara döda sina egna processer, bara root kan döda andras processer.

Kriga mot min brute: http://gunnard.se.mybrute.com om du vågar :D

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Aug 2002

Ett tips är att använda sudo för detta.

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Feb 2003

Ok, låter vettigt allting

Internet är coolt.

Trädvy Permalänk
Medlem
Plats
Skåne
Registrerad
Feb 2002

Hur skulle sudo fungera i min lösning?

//Magnus

#1: Intel i7-2600K | 8GB RAM | 780 GTX Ti | 8x Samsung EVO raid-10 LSI 9271-8i
#2: Dell XPS 1330
http://www.excellent-servers.se - http://www.excellent-hosting.se