[FC4]quakeserver script starten bij boot

Pagina: 1
Acties:

  • marko77
  • Registratie: Februari 2002
  • Laatst online: 06-05-2025
Ik heb onlangs een fedora core 4 bak geinstalleerd om een quakeserver te kunnen runnen, nu ben ik aardig thuis in linux maar ik krijg het niet voor elkaar om een simpel script te runnen tijdens het booten.

De situatie is als volgt, het script is 1 regel om de quake server dedicated op te starten.
Deze roep ik aan vanuit rc.local tijdens het booten.

Ik wil de server niet runnen als root dus doe ik als volgt:

su quake -c /path/to/quake/runmyquakescript

echter dit geeft de error "su: /bin/bash: Permission denied"

Als ik het volgende probeer:
runuser quake -c /quake3/ctfsserver

krijg ik geen fout, maar de server wordt niet opgestart.

Beide commandos werken wel goed vanuit een ssh shell b.v.

Het lijkt me sterk dat het niet mogelijk is om een script onder een andere user te runnen, dus wat doe ik verkeerd?

Mijn rig


  • cool_zero
  • Registratie: Juni 2001
  • Laatst online: 25-10-2022
Het programma 'screen' is misschien handig om hiervoor te gebruiken.

Verwijderd

Je zou het ook dmv een chroot kunnen draaien.
Dit is een artikel waar je misschien wat aan hebt: http://www.ncaa-world.de/....php?showtopic=3183&st=15
http://tjw.org/etded/

Gaat over enemy territory maar lijkt me niet heel anders dan quake.

ps. heb je 'chown -R /path/van/quake quake'
en 'chgrp -R idemdito' al gedaan?

[ Voor 31% gewijzigd door Verwijderd op 17-08-2005 21:14 ]


  • marko77
  • Registratie: Februari 2002
  • Laatst online: 06-05-2025
screen is volgens mij niet bruikbaar, aangezien deze ook onder een andere user moet draaien en juist dat user switchen lukt niet bij het booten.

De quake dir is compleet geowned door de quake user.

Het chroot artikel is in principe iets wat wellicht zou werken, maar om nu alle libraries e.d. in de quake map te knallen vind ik toch iets te veel van het goede, dan kan ik net zo goed een cronjob in elkaar draaien die checkt of quake draait en die m opstart als ie niet draait.

apache e.d draaien toch ook onder andere users als root, dus het kan toch niet zó ingewikkeld zijn?

Mijn rig


  • Parasietje
  • Registratie: Juli 2004
  • Laatst online: 10-06-2024

Parasietje

linux-geek

Lijkt me een simpel permissie-probleem.

Je hebt dus de quake-user gemaakt en de hele directory geCHOWN'ed naar de quake-gebruiker? Daarna probeer je met sudo (of runuser, in FC4) om de quake-server op te starten. Je ziet niets gebeuren. Kijk eerst of je permissies goed staan, aangezien het je met root wel lukt.

WebDAV in Vista is horribly broken. Ik wil het fixen, maar ben nog steeds op zoek naar de tarball met de source...


  • marko77
  • Registratie: Februari 2002
  • Laatst online: 06-05-2025
het punt is juist dat het wel lukt als ik via ssh b.v. inlog,

echter bij het opstarten werkt het NIET.

blijkbaar zijn de rechten bij het opstarten dus anders dan bij een shell sessie, maar wat er anders is en hoe ik dit op kan lossen is mij nog steeds onduidelijk.

Mijn rig


Verwijderd

Als je inlogt worden de verschillende login-scripts (.login, .profile, .cshrc, .bash_profile, .bashrc, etc.). Deze worden niet gestart als je via rc.local of zo start.

Je kan proberen een wrapper te schrijven die het process van de quakeserver controleert en deze opstart als deze niet draait. Draai dit script als cron-job van de quake-user.

Bijvoorbeeld
Bash:
1
2
3
4
5
6
#!/bin/sh

if ! ps -ef | grep $quakeserver
then
    $start_quakeserver
fi

[ Voor 14% gewijzigd door Verwijderd op 18-08-2005 23:24 ]


  • deadinspace
  • Registratie: Juni 2001
  • Laatst online: 14-03 12:48

deadinspace

The what goes where now?

marko77 schreef op woensdag 17 augustus 2005 @ 09:59:
su quake -c /path/to/quake/runmyquakescript

echter dit geeft de error "su: /bin/bash: Permission denied"
Wat geeft
code:
1
ls -l /path/to/quake/runmyquakescript

?

Daarnaast zou ik iets als dit liever via cron (met de @reboot directive) doen dan via een system-wide startup script.

  • Flydude
  • Registratie: Mei 2003
  • Laatst online: 17-03 22:33

Flydude

Mighty pirate

deadinspace schreef op vrijdag 19 augustus 2005 @ 00:55:
Daarnaast zou ik iets als dit liever via cron (met de @reboot directive) doen dan via een system-wide startup script.
Even nieuwsgierig, hoor, maar hoezo? Alle andere servers (ssh, apache) worden toch ook via de start-up scripts geregeld?

Wat je nog kan proberen is om eens goed naar het startup script van bv. apache te kijken en een dergelijk script voor je quake server aanpassen. Dat script zet je dan ergens in /etc/init.d/ (waar precies is distro afhankelijk).

I am rubber, you are glue


  • marko77
  • Registratie: Februari 2002
  • Laatst online: 06-05-2025
Een init.d script is idd de beste optie en dat heb ik nu ook werkend gekregen, tevens draait ie onder een script die checked of de server gecrashed is en restart m als dat nodig is.

Voor de geïnteresseerden:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#!/bin/sh
#
#    This shell script takes care of starting and stopping
#               the q3 server.
#
# chkconfig: 345 99 03

# Source function library.
. /etc/rc.d/init.d/functions

#check of benodigde progs en scripts bestaan
[ -x /usr/local/games/quake3/quakeserver ] || exit 0
[ -x /usr/local/games/quake3/q3ded ] || exit 0

# See how we were called.
case "$1" in
  start)
    # Start daemons.
    echo -n "Starting GLF Fibre Arena server: "
    daemon runuser quake -c /usr/local/games/quake3/quakeserver
        echo
    touch /var/lock/subsys/q3
    ;;
  stop)
    # Stop daemons.
    echo -n "Shutting down auto restart script and quakeserver "
    #killproc quakeserver
        /quake3/killserver
    echo
    rm -f /var/lock/subsys/q3
    ;;
  status)
    status q3ded
    ;;
  restart)
    $0 stop
    $0 start
    ;;
  *)
    echo "Usage: quakectfs {start|stop|status|restart}"
    exit 1
esac

exit 0

let op de runuser line, die de daemon onder de quake user draait.
het killserver script bestaat slechts uit 2 regels die het restart script en de q3ded beide killt.

bij het starten roept het script quakeserver aan en die restart q3ded als ie crashed,
tevens wordt er ook een logje opgebouwd:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/bin/csh -f
#
#this script self-daemons unless you pass -fg
#
if ("$1" == "-fg") then
    shift
    cd /usr/local/games/quake3
    echo "Starting server at `date`" >> /quake3/q3log
    while (1)
       ./q3ded +set dedicated 2 +set fs_game threewave +exec default_server.cfg < /dev/null >& /dev/null
           sleep 2
       echo "Restarting server at `date`" >> /quake3/q3log
    end
else
    $0 -fg $* &
endif


;)

Mijn rig

Pagina: 1