PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Über ein Script ein Programm Starten und wieder Beenden ?



remmizflar
03.08.06, 22:05
Hallo,


ich hab folgendes Problem.

Ich hab ein Programm was sich nur mit Hilfe eines Skriptes starten läßt.
Was auch soweit funktioniert. Das Problem aber ist wenn ich das Script mit Kill beende läuft das Programm weiter welches ich mit Hilfe des Skriptes gestartet wurde. Nun die Frage wie kann ich es machen das wenn ich das Script Kille das Programm sich mit beendet ?

Das start Script.


#!/bin/sh
# setup the libraries, local dir first!
export LD_LIBRARY_PATH=".:bin:$LD_LIBRARY_PATH"
./srcds_amd -game dod +maxplayers 24 +map dod_jagd



ohne das setzen der export LD_LIBRARY_PATH kann ich srcds_amd nicht starten da bekomme ich folgenden Fehler.



./srcds_amd -game dod +maxplayers 24 +map dod_jagd
Failed to open bin/dedicated_amd.so (tier0_i486.so: cannot open shared object file: No such file or directory)


Glib ist installiert :)

Gruß Ralf

delmonico
03.08.06, 22:20
killall srcds_amd?

remmizflar
03.08.06, 22:30
würde gehen :) aber das problem es laufen bis zu 3 von diesen Anwendungen
aber nur die eine darf beendet werden

zyrusthc
03.08.06, 22:50
würde gehen :) aber das problem es laufen bis zu 3 von diesen Anwendungen
aber nur die eine darf beendet werden

Hallo

Was spricht gegen screen ?

Gruss Oli

drfish
04.08.06, 07:45
Exportiere die Umgebungsvariable LD_LIBRARY_PATH im .bashrc oder was auch immer Du verwendest. Dann brauchst Du den Skript nicht mehr.

jeppo
04.08.06, 07:51
programm starten
./srcds_amd -game dod +maxplayers 24 +map dod_jagd & echo \$! > srcds.pid

programm killn mit
kill $(cat srcds.pid)

das ganze in ein start stop script basteln fertig

remmizflar
04.08.06, 14:41
danke :) ich werde das mal so implementieren

das mit der Umgebungs variable funktoniert.
Aber leider nach einem Neustart nicht mehr

export LD_LIBRARY_PATH=".:bin:$LD_LIBRARY_PATH"

wie kann ich unter SUSE 10.1 die Variable für immer und jede Bash setzen ?
gruß ralf

WishMaster@NND
05.08.06, 01:40
Für jede BASH? Was soll das heißen?
Um die Variable beim Einloggen automatisch zu aktivieren, musst du die entsprechende Zeile einfach nur in die /home/Dein_Benutzer/.bashrc eintragen.
Wie drfish bereits sagte.

drfish
05.08.06, 07:50
programm starten
./srcds_amd -game dod +maxplayers 24 +map dod_jagd & echo \$! > srcds.pid

programm killn mit
kill $(cat srcds.pid)

das ganze in ein start stop script basteln fertig

Du kannst vor dem Ausführen der Binary die Umg.Variable setzen, etwa so:


LD_LIBRARY_PATH=".:bin:$LD_LIBRARY_PATH" ./srcds_amd -game dod +maxplayers 24 +map dod_jagd & echo \$! > srcds.pid

traffic
05.08.06, 08:38
wie kann ich unter SUSE 10.1 die Variable für immer und jede Bash setzen ?
Wenn es für einen Benutzer gelten soll:

$HOME/.bashrc

Wenn es für alle Benutzer gelten soll:

/etc/profile.local

@drfish: Das hier:

LD_LIBRARY_PATH=".:bin:$LD_LIBRARY_PATH"
ist unsicher, siehe:

http://it-support-servicestatus.web.cern.ch/it-support-servicestatus/ServiceChangeArchive/PATH-060607.htm
http://www.faqs.org/faqs/unix-faq/faq/part2/section-13.html

Hinweis: Was dort über PATH gesagt wird, gilt gleichermaßen für LD_LIBRARY_PATH (bei LD_LIBRARY_PATH sind current directory attacks sogar noch fieser, weil kaum jemand weiß, was man damit alles anstellen kann).