Ik ben al een tijdje bezig met het inrichten van een Linux-server. Daarop moet natuurlijk ook een koetje komen te grazen. Hiervoor heb ik een aparte gebruiker aangemaakt. Hoe krijg ik het voor elkaar dat de koe begint als het systeem start en "netjes" stopt als het systeem down gaat, zonder dat ik er verder omkijken naar heb? Vergelijkbaar dus met de -install optie onder Windows.
Ik heb gewoon in mijn rc.local de regel
nohup /dnetcdir/dnetc &
Als je het systeem stopt (? wat is dat?? dat kan natuurlijk niet.. behalve voor hardware upgrades!
) dan wordt dnetc ook netjes afgesloten. dat gaat gewoon automatisch..
nohup /dnetcdir/dnetc &
Als je het systeem stopt (? wat is dat?? dat kan natuurlijk niet.. behalve voor hardware upgrades!
Bedankt! Ik zat ook al aan rc.local te denken. Maar met welke rechten graast die koe nu? Als root? Ik wil 'm liefst gewoon als aparte gebruiker draaien. Moet ik dan iets met de permissies doen? (Iets met Effective User ID ofzo?)
En o ja: die server draait (nog) niet 24/7. Dat komt nog komende winter, als we ADSL krijgen. Dan gaat ook m'n 486SX 25Mhz (!) weer meedoen. (Totdat-ie z'n laatste adem uitblaast.)
En o ja: die server draait (nog) niet 24/7. Dat komt nog komende winter, als we ADSL krijgen. Dan gaat ook m'n 486SX 25Mhz (!) weer meedoen. (Totdat-ie z'n laatste adem uitblaast.)
Met die regel van mij draait ie inderdaad als root (ik ben er nog niet achter hoe je het als andere user kan draaien). En ik gebruik die nohup eigenlijk omdat als ik hem met de hand start ik wil dat ie doordraait als ik mijn Xterm sluit. nohup had iets iets te maken met dat het niet zomaar afgesloten kon worden.
Als je je systeem afsluit dan stuurt ie volgens mij gewoon een TERM signaal naar alle processen en dus ook naar dnetc, en die reageert daar volgens mij netjes op en saved zijn blokies dan nog (correct me if i'm wrong, want ik zet hem nooit uit).
Als je je systeem afsluit dan stuurt ie volgens mij gewoon een TERM signaal naar alle processen en dus ook naar dnetc, en die reageert daar volgens mij netjes op en saved zijn blokies dan nog (correct me if i'm wrong, want ik zet hem nooit uit).
Hmm, genoeg ideeën om weer eens even te experimenteren vanavond. Als ik iets moois bedacht heb, laat ik het weten.
Ja maar... dat is ook zo als je gewoon dnetc -hide/quiet in rc.local zet...En ik gebruik die nohup eigenlijk omdat als ik hem met de hand start ik wil dat ie doordraait als ik mijn Xterm sluit. nohup had iets iets te maken met dat het niet zomaar afgesloten kon worden.
En inderdaad is het zo dat dnetc netjes wordt afgesloten, hoe je 'm ook gestart hebt.
Als andere user draaien:
chown andereuser.group dnetc
chmod +s dnetc
(en dan moet je er natuurlijk wel even voor zorgen dat die user lees-/schrijfrechten heeft in de directory waar het .ini-bestand en de buffers staan)
Hilander: sorry hoor, maar rc.local is meer Slackware style. RedHat gebruikt Sysvinit met runlevels enzo..
Je kan trouwens vanuit je rc.local je moo client opstarten als een andere userid met zoiets:
/bin/su hans -c /home/hans/dnetc
Werkt als een dolle stier
Je kan trouwens vanuit je rc.local je moo client opstarten als een andere userid met zoiets:
/bin/su hans -c /home/hans/dnetc
Werkt als een dolle stier
Om te beginnen heb ik een aparte user, "dnetc", aangemaakt. In de home-directory van deze user is de programmatuur geinstalleerd. De client moet met de rechten van deze user zijn werk doen. Waarom? Dat is een aparte discussie, maar in het kort ben ik van mening dat je elke taak op een Unix-box met zo m'n mogelijk rechten moet uitvoeren. Dat komt de veiligheid ten goede en vermindert de foutkans.
Ok, terug naar de koe. Het is de bedoeling dat deze automatisch gestart en gestopt wordt als het systeem resp. up en down gaat.
Hieronder volgen de twee methoden die ik op mijn systeem (RedHat 6.2) getest heb.
Methode 1: start de client vanuit rc.local:
Regel toevoegen aan rc.local:
* Waarom in een shell? - Anders kreeg ik een foutmelding over rechten op een of ander configuratiebestand van bash.
* Waarom niet direct dnetc opstarten, maar via een omweg? - In dnetcd start ik dnetc op met de parameter -quiet. Als ik die parameter aan de regel hierboven meegeef, denkt su dat het een eigen parameter is (en herkent deze niet).
En zo ziet het bestand /home/dnetc/dnetcd eruit:
Methode 2: toevoegen aan het standaard initialisatie-proces (zoals aangedragen door Black Goeroe in dit topic: http://gathering.tweakers.net/Forum8/HTML/001793.html ):
In dit geval heb ik in de directory /etc/rc.d/init.d het script van httpd gecopieerd en aangepast.
Bedankt voor de suggesties van iedereen en wie op- of aanvullingen heeft mag het zeggen.
Ok, terug naar de koe. Het is de bedoeling dat deze automatisch gestart en gestopt wordt als het systeem resp. up en down gaat.
Hieronder volgen de twee methoden die ik op mijn systeem (RedHat 6.2) getest heb.
Methode 1: start de client vanuit rc.local:
Regel toevoegen aan rc.local:
Met deze regel wordt het script dnetcd in de /home/dnetc opgestart in een /bin/sh shell met de rechten van user dnetc./bin/su -s /bin/sh -c /home/dnetc/dnetcd dnetc
* Waarom in een shell? - Anders kreeg ik een foutmelding over rechten op een of ander configuratiebestand van bash.
* Waarom niet direct dnetc opstarten, maar via een omweg? - In dnetcd start ik dnetc op met de parameter -quiet. Als ik die parameter aan de regel hierboven meegeef, denkt su dat het een eigen parameter is (en herkent deze niet).
En zo ziet het bestand /home/dnetc/dnetcd eruit:
(Niet vergeten de permissies goed te zetten!)/home/dnetc/dnetc -quiet
Methode 2: toevoegen aan het standaard initialisatie-proces (zoals aangedragen door Black Goeroe in dit topic: http://gathering.tweakers.net/Forum8/HTML/001793.html ):
In dit geval heb ik in de directory /etc/rc.d/init.d het script van httpd gecopieerd en aangepast.
Gesaved onder de naam "dnetc", geef vervolgens het commando "chkconfig dnetc on". Je kunt het nu testen (dnetc start, dnetc stop, etc.) en bij het rebooten zie je dat de koe door het systeem zelf van stal wordt gehaald.#!/bin/sh
#
# Startup script voor de Distributed Net koe
#
# chkconfig: 345 85 15
# description: De koe van Distributed Net graast RC5-blokjes
# processname: dnetc
# pidfile: /var/run/dnetc.pid
# Source function library.
. /etc/rc.d/init.d/functions
# See how we were called.
case "$1" in
start)
echo -n "Haal de koe van stal: "
daemon --user dnetc /home/dnetc/dnetc -quiet
echo
;;
stop)
echo -n "Zet de koe op stal: "
killproc dnetc
echo
rm -f /var/run/dnetc.pid
;;
status)
status dnetc
;;
restart)
$0 stop
$0 start
;;
reload)
echo -n "Geef de koe een schop: "
killproc dnetc -HUP
echo
;;
*)
echo "Usage: $0 {start|stop|restart|reload|status}"
exit 1
esac
exit 0
Bedankt voor de suggesties van iedereen en wie op- of aanvullingen heeft mag het zeggen.
Pagina: 1