[Linux] Server in achtergrond wegstoppen

Pagina: 1
Acties:
  • 123 views sinds 30-01-2008
  • Reageer

  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 20-02 12:27
Ik draai al een tijd enkele HLDS servers (Half-Life servers met als mod Counter-Strike). Deze start ik in een Screen, wat daarna mooi in de achtergrond draait. Tot zover geen probleem.

Nu wil ik echter alle server's onder een aparte gebruiker laten draaien zodat ik later (heb ik begrepen) kan zien hoeveel een gebruiker gebruikt aan data, en dus hoeveel de server aan data gebruikt.

Nu heb ik na een paar uur klooien eindelijk sudo op een veilige manier aan de praat. Iets met de regel: sudo -b -u user command.

Die -b is om het proces naar de achtergrond te stoppen. Ook eindig ik mijn command met & of && (welke was het ook alweer?), en het lijkt goed te gaan. Ik zie de server starten, een keer enter en m'n prompt is weer terug. Alleen zodra de server iets te melden heeft, is het net zo'n irritante popup, en verteld die dat rustig heen door alles wat je op de prompt aan het typen ben. Dat is erg vervelend, en ook niet netjes.

Hoe kan ik dit oplossen? Ik dacht, nou, als het niet gewoon los kan (minder bronnen in gebruik) dan maar met screen. Maar nee, dat gaat ook niet, ik krijg dan:
code:
1
2
sudo -u apache screen
Cannot open your terminal '/dev/pts/325' - please check.


Ik denk dat dat komt doordat in dit geval user apache geen shell acces heeft. Maar het liefst gebruik ik gewoon helemaal geen screen, en stop ik heel dat proces diep weg :)

Bedankt alvast!

Ondernemer in tech (oud LOQED.com, nu UpToMore.com)


  • DR
  • Registratie: December 2000
  • Niet online

DR

nohup?

  • M4RTiN
  • Registratie: Augustus 2000
  • Laatst online: 24-11-2024
Hey Corrado, zit jij ook op www.corrado-forum.nl of op mijn eigen website www.corrado-database.nl ??

greetz

  • Noodels
  • Registratie: Februari 2004
  • Niet online
Ik start mijn cs server dmv.

code:
1
2
3
4
5
#!/bin/bash
LD_LIBRARY_PATH=/data/hlds:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
cd /data/hlds
su username -c 'screen -A -m -d -S csserver1 ./hlds_run -game cstrike +maxplayers 13 +map fy_iceworld +port 27015 +ip 192.168.2.14'


En dan kan je "screenen" onder de username

(sorry voor de lange code)

  • Jelmer
  • Registratie: Maart 2000
  • Laatst online: 08:12

  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 20-02 12:27
nee die had ik niet gezien, ik wil eigenlijk ook eerst zonder screen proberen, ik bedoel: dat scheelt toch weer geheugen en cpu tijd, al is het heel weinig? Verder begrijp ik uit dat topic dat screen dan toch onder een andere username gaat draaien ofzo, dat geeft misschien nog problemen...

Dat met SU heb ik al geprobeerd, helemaal aan het begin, daar was wat mee, ik ga even kijken wat dat ook alweer was


edit:
Ik herinner het me alweer! Su vraagt dan om een password als je niet als root bent ingelogd.

Straks gaat een PHP script dit aanroepen, en die is geen root.

Ik had wel ergens in de man gelezen dat er net als voor sudo een bestandje bestaat in de /etc directory om mensen zonder passwd te laten inloggen (?) maar op google kwam ik zo goed als niets hierover tegen, het was ook niet bruikbaar.

SU zou ik dan prima kunnen gebruiken. Dan draait de server in z'n eigen shell toch :)

edit2:
Ik zit nu te kijken naar dat nohup.
nohup - run a command immune to hangups, with output to a non-tty
immune to hangups? Is dat als je console hangt ofzo (nog nooit gehad maar ok?) ik check het nu verder uit..

Okee, de info page:
NAME
nohup - run a command immune to hangups, with output to a
non-tty

SYNOPSIS
nohup COMMAND [ARG]...
nohup OPTION

DESCRIPTION
File: sh-utils.info, Node: nohup invocation, Next: su invocation, Prev: nice\
invocation, Up: Modified command invocation

`nohup': Run a command immune to hangups
========================================

`nohup' runs the given COMMAND with hangup signals ignored, so that
the command can continue running in the background after you log out.
Synopsis:

nohup COMMAND [ARG]...

`nohup' increases the scheduling priority of COMMAND by 5, so it has
a slightly smaller chance to run. If standard output is a terminal, it
and standard error are redirected so that they are appended to the file
`nohup.out'; if that cannot be written to, they are appended to the
file `$HOME/nohup.out'. If that cannot be written to, the command is
not run.

If `nohup' creates either `nohup.out' or `$HOME/nohup.out', it
creates it with no "group" or "other" access permissions. It does not
change the permissions if the output file already existed.

`nohup' does not automatically put the command it runs in the
background; you must do that explicitly, by ending the command line
with an `&'.

The only options are `--help' and `--version'. *Note Common
options::.
Ik moet dus nog steeds eindigen met een &. Ik weet dan ook niet of dit gaat werken, lijkt een beetje dezelfde manier...? Verder staat er dat alle output in een bestand wordt geschreven. M'n log files zijn al best groot, als ik alle server console's ook nogeens ga loggen, dan worden het enorme log's!

Iemand nog een oplossing om SU te laten werken zonder password? Ik neem aan dat als ik dan m'n console sluit de server ook gewoon blijft draaien? Ik zit daar namelijk net aan te denken: Als ik een server handmatig start, ipv per php script, en ik dan de console afsluit, kill ik dan ook de server die onder een andere user loopt (want die loopt wel in mijn console?)

edit, laatste:
@ noodels:
Je kunt al je + command's ook in autoexec.cfg plaatsen, onder elkaar, zonder +, dat zal je wel weten, maakt je regel alvast wat korter ;)

[ Voor 90% gewijzigd door pierre-oord op 30-03-2004 19:15 ]

Ondernemer in tech (oud LOQED.com, nu UpToMore.com)


  • Jelmer
  • Registratie: Maart 2000
  • Laatst online: 08:12
nohup was voor 'vroeger' toen je nog via een 9600 baud modem inbelde op je unix server ;)
Maar het enige wat het doet is je proces in de achtergrond forken en de output loggen. Met screen kun je ook daadwerkelijk de stdin weer terug krijgen.

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

je kunt natuurlijk het process backgrounden en dan de output wegstoppen door deze te pipen naar /dev/null
code:
1
command 1>&2 2>/dev/null
:)

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


  • Mac_Cain13
  • Registratie: Juni 2003
  • Laatst online: 27-01 22:51
Pipen zoals Spider.007 aangeeft zou het moeten doen. Je kan ook nog pipen naar een file zodat je de output later nog eens door kan kijken.
Maar je zei dat je hem gaat aanroepen vanuit PHP met een scriptje enz. Volgens mij zie je dan niets meer van die output en kan je het ook gewoon laten lopen :) Dus in PHP gewoon die 'sudo blaat' doen en dan zie je niets meer van die output terug volgens mij.

  • TrailBlazer
  • Registratie: Oktober 2000
  • Laatst online: 07-02 09:48

TrailBlazer

Karnemelk FTW

kan je het niet gewoon vanuit init met een runvl laten doen of ben je geen wortel op die server. Denk het niet eigenlijk. Maar dan is het weer vaag dat je uberhaupt een server mag starten

  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 20-02 12:27
Die hele server is van mij, maar ik wil niet met de init script's gaan werken. Alles moet per php straks kunnen. Ik ga wel gewoon dat /dev/null doen, ff proberen, had ik al eerder bedacht maar "leek me niet zo netjes"

Ondernemer in tech (oud LOQED.com, nu UpToMore.com)


  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

pierre-oord schreef op 30 maart 2004 @ 20:09:
Die hele server is van mij, maar ik wil niet met de init script's gaan werken. Alles moet per php straks kunnen. Ik ga wel gewoon dat /dev/null doen, ff proberen, had ik al eerder bedacht maar "leek me niet zo netjes"
Op zich is het vrij netjes; je gebruikt een goede manier om het ding te backgrounden, en nu heb je last van de stderr van het ding. Daar kun je netjes vanaf komen door dit weg te pipen :P

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 20-02 12:27
Misschien doe ik het straks nog even proberen nu ff druk bezig. Maar dat weg pipen voelt net alsof je een een afvoergootje onder je server zet :P

Ondernemer in tech (oud LOQED.com, nu UpToMore.com)


Verwijderd

pierre-oord schreef op 30 maart 2004 @ 19:06:
Ik had wel ergens in de man gelezen dat er net als voor sudo een bestandje bestaat in de /etc directory om mensen zonder passwd te laten inloggen (?) maar op google kwam ik zo goed als niets hierover tegen, het was ook niet bruikbaar.
sudoers heet die file, en daar kan je precies mee doen wat je wil (en meer).

voorbeeld:

%mijngroep ALL=NOPASSWD: /usr/bin/whoami

  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 20-02 12:27
Verwijderd schreef op 30 maart 2004 @ 21:33:
[...]


sudoers heet die file, en daar kan je precies mee doen wat je wil (en meer).

voorbeeld:

%mijngroep ALL=NOPASSWD: /usr/bin/whoami
Dat is die van sudo, ik bedoel er een van su. Die van sudo gebruik ik nu ook :)

Ondernemer in tech (oud LOQED.com, nu UpToMore.com)


  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 20-02 12:27
Spider.007 schreef op 30 maart 2004 @ 19:29:
je kunt natuurlijk het process backgrounden en dan de output wegstoppen door deze te pipen naar /dev/null
code:
1
command 1>&2 2>/dev/null
:)
Ik bekijk dit net nog even, maar kan iemand misschien een uitleg geven wat dit commando doet in mensentaal?

Zo'n > piped het weg weet ik, maar wat al die 1-en en 2-en doen vraag ik mij af...

Ondernemer in tech (oud LOQED.com, nu UpToMore.com)


  • Tony Vroon
  • Registratie: Juni 1999
  • Laatst online: 13-06-2020

Tony Vroon

Werkt nu ergens anders

1 is stdout, 2 is stderr.

"Wie is deesen figuur, hier ten topic aangheduidt als 'hij', wiens mededelinghe soo eenen consternatie weet te ontluycken :? " -- dion_b


  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 20-02 12:27
aha ( :? ) wat het verschill tussen die is weet ik ook niet, magoe...

Ik heb het geprobeerd, maar die regel werkt niet. Wat wél werkt ik zoals ik deed (en ik vroeger in dos ook zo gebruikte) gewoon simpel "> /dev/null" (nou ja, in dos was dan >null)

Misschien komt dat omdat ik al de -b optie meegeef aan sudo, en dat die dit al doet ofzo? Het werkt iig wel zo, of is dit niet netjes?

Ondernemer in tech (oud LOQED.com, nu UpToMore.com)

Pagina: 1