Screen Befehl User zwueisen

Starli

New Member
Hallo zusammen.
Ich möchte mir ein kleines Startscript zurecht tippen.

Ich möchte mir z.B. die Datei "start.sh" anlegen.
Beispiel:
Code:
cd /home/srcds
./srcds_run -game cstrike -maxplayers 24 +map de_dust2 -tickrate 100 -pingboost 3 -port 27015
cd /home/teamspeak3
./ts3server_linux_amd64 restart
cd

Allerdings soll z.B. der SRCDS auch unter dem User "srcds" laufen und der Teamspeak unter dem User "teamspeak3"
Ist das irgendwie zu bewältigen, hab diesbezüglich leider nicht viel gefunden.

MfG
 
Am einfachsten wären wohl 2 Scripte. Das eine führst Du dann als User "srcds" und das andere als User "teamspeak3" aus.

Du kannst die Scripte dann aber auch noch von 2 auf eine Zeile reduzieren, indem du direkt den vollen Pfad angibst.

Code:
/home/srcds/srcds_run -game cstrike -maxplayers 24 +map de_dust2 -tickrate 100 -pingboost 3 -port 27015

Code:
/home/teamspeak3/ts3server_linux_amd64 restart
 
Hey,

genau das möchte ich ja vermeiden das ich mich erst in die User einloggen muss und die Dienste einzelnd zu starten.
Hier geht es ebend mehr oder weniger um meine vergesslichkeit einzelner Dienste :P

Zu der Zeilenreduzierung:
Danke, daran habe ich garnicht mehr gedacht :)
 
Häh? Wieso erstellst du nicht einfach 2 Startscripte und lässt diese per Cronjob durch die User ausführen? Seh da das Problem gerade nicht oder bin ich doof? Ja, ich bin doof, ich weiss :D
 
Ich bin nicht so sehr mit Cronjobs vertraut.
Aber nach meinem Wissen werden diese doch zu einem festgelegten Zeitraum ausgeführt oder?

Ich wüsste nicht wie man dem Cronjob sagt das er nach dem reboot das Script einmalig ausführt.
 
Geht bei mir bisher leider nicht. (habe natürlich nach edit der Crontab-Datei rebootet)
OS: Debian 5

/etc/contab:

Code:
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

...
...
...
...
...
...

@reboot srcds /home/srcds/start.sh
@reboot teamspeak /home/teamspeak/start.sh
@reboot teamspeak3 /home/teamspeak3/start.sh


SRCDS:
Code:
screen -A -m -d -S /home/srcds/srcds_run -game cstrike -maxplayers 24 +map de_dust2 -tickrate 100 -pingboost 3  -port 27015

Teamspeak:
Code:
/home/teamspeak/ts2 restart

Teamspeak3:
Code:
screen -A -m -d -S /home/teamspeak/ts3server_linux_amd64 restart

PS: "Teamspeak" ist TS2, dieser benötigt kein Screen, Teamspeak3 ist noch Beta und geht nicht automatisch in den Hintergrund - deswegen wird Screen benötigt.
 
Ich habe zwar keine Lösung zu deinem Problem, aber wegen Teamspeak³ und direkten Pfad ausführen (ohne cd) das haut nicht hin.
Ich habe selbst auf nem Root nen TS³-Server laufen, und man muss wirklich bevor man den Server ausführen kann per "cd" ins Verzeichnis der Serverdatei wechseln.
Zum Cronjob für TS³ habe ich es so gemacht:
(User heißt ts3)
Code:
crontab -e -u ts3
@reboot cd /opt/ts3/teamspeak3-server_linux-x86/ && ./ts3server_linux_x86 inifile=ts3server.ini &
Screen brauche ich nicht, dafür habe ich das "&" hinter dem .ini
 
Und schau Dir mal die Man-Page für screen an ("man screen"). Dann wirst Du feststellen, dass die Optionen, die Du in den Skripten angegeben hast, so nicht funktionieren können (Es müsste am ehesten "screen -A -d -m" (in der Reihenfolge)).

PS: Das Booten ist unnötig!
man cron said:
Additionally, cron checks each minute to see if its spool
directory's modtime (or the modtime on /etc/crontab) has
changed, and if it has, cron will then examine the modtime
on all crontabs and reload those which have changed. Thus
cron need not be restarted whenever a crontab file is mod*
ified. Note that the crontab(1) command updates the mod*
time of the spool directory whenever it changes a crontab.
 
Back
Top