• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Problem mit Bash script

steven

Newbie
hallo ich habe ein Problem!

Ich habe folgendes Bash Skript.
Ich lasse dieses Script über ein Cronjob aufrufen.
Aber der cron führt das nicht aus . könnt ihr vielleicht kurz den Code anschauen, vielleicht hab ich ja was falsch gemacht.
Code:
#!/bin/bash

if [ -e /usr/user/dirwork/aktiveScripte/restart.txt ] ; then kill -9 `cat
/space/mrtg/cfg/mrtg.pid` ; /etc/rc.d/rc3.d/S18mrtg ;
 rm /usr/ergin/dirwork/aktiveScripte/restart.txt
fi


im crontab -e ist folgendes eingetragen:

Code:
*/2 * * * * /usr/user/dirwork/exeScripte/restartMRTG
Ich bin als root angemeldet.

gruss Steven
 

regexer

Advanced Hacker
steven schrieb:
Aber der cron führt das nicht aus.
Frage: Hast du eine Mail bekommen? Wenn das Script irgendeine Fehlerausgabe macht (z.B. "Datei nicht gefunden") kommt das per mail an den entsprechenden user.
 
OP
S

steven

Newbie
hallo hab folgende e-mail erhalten

Code:
usr/user/dirwork/exeScripte/restartMRTG: line 4: /space/mrtg/cfg/mrtg.pid: Permission denied
kill: usage: kill [-s sigspec | -n signum | -sigspec] [pid | job]... or kill -l [sigspec]
 
A

Anonymous

Gast
vermute mal stark das ist das cat ohne Pfad
mach mal /bin/cat draus, und gleich beim rm auch noch, und versuche es mal so


robi
 

regexer

Advanced Hacker
steven schrieb:
Code:
usr/user/dirwork/exeScripte/restartMRTG: line 4: /space/mrtg/cfg/mrtg.pid: Permission denied
kill: usage: kill [-s sigspec | -n signum | -sigspec] [pid | job]... or kill -l [sigspec]
Da haben es wir doch schon!
Sobald du mit cat auf /space/mrtg/cfg/mrtg.pid zugreifen willst, kommt ein "Permission denied" also "Zugriff verweigert". Hast du Leserechte auf die Datei?
Die Fehlermeldung mit dem kill ist ein Folgefehler, da der kill als parameter mindestens eine PID braucht. Diese wurde aber (durch den fehlerhaften cat) nicht angegeben. Deswegen die usage-Ausgabe.
 
OP
S

steven

Newbie
hallo,danke für die hilfe

ich habe root-Rechte. Ich habe auf die Datei alle Rechte..
Ich habe auch schon vor dem deamon start ein sh

Code:
sh /etc/rc.d/rc3.d/S18mrtg ;

Wenn ich die einzelnen Befehle in der Shell ausführe funktionieren sie auch.
Nur wenn ich das über cron laufen lasse und der code in dem bash script steht. funkt es nicht..
 
Kannste das Script denn manuell ausführen, das heißt in der Konsole direkt????
Was gibt die Konsole denn aus???
Haste mal versucht die datei manuell zu öffnen??
Klappt das und was gibt die Datei aus???
 

regexer

Advanced Hacker
steven schrieb:
ich habe root-Rechte. Ich habe auf die Datei alle Rechte..
Sicher? Was ist denn genau die Zeile 4 aus restartMRTG? Das ist doch die mit dem cat, oder?
Ich habe auch schon vor dem deamon start ein sh
Naja, das sollte keine Rolle spielen, solange die #!-Zeile stimmt und der entsprechende User die Rechte zum Ausführen der Datei besitzt.
 

TeXpert

Guru
jengelh schrieb:
Immer schön Gänsefüßchen verwenden!
Code:
kill -9 "`cat somepid.txt`"

warum? die Begründung interessiert mich jetzt

wenn in der pid nur
Code:
12345
drinsteht passt das IMHO auch so Beispiel:
Code:
$ nedit &
[1] 7589
$ echo 7589 > pid
$ ps ax | grep 7589
 7589 pts/5    S      0:00 nedit
 7599 pts/5    R+     0:00 grep 7589
$ kill -9 $(cat pid)
$ ps ax | grep 7589
 7602 pts/5    R+     0:00 grep 7589
[1]+  Getötet                 nedit
 

regexer

Advanced Hacker
jengelh schrieb:
Immer schön Gänsefüßchen verwenden!
Code:
kill -9 "`cat somepid.txt`"
Falls in der Textdatei genau eine PID steht, würde es sowohl mit als auch ohne Gänsefüßchen funktionieren. Wenn in der Textdatei zwei PIDs stehen würden, wären Gänsefüßchen sogar grob falsch:
Code:
~> sleep 100 &
[1] 8343
~> sleep 100 &
[2] 8344
~> echo 8343 > somepid.txt
~> echo 8344 >> somepid.txt
~> kill -9 "`cat somepid.txt`"
-bash: kill: 8343
8344: no such pid
~> kill -9 `cat somepid.txt`
[1]-  Getötet                 sleep 100
[2]+  Getötet                 sleep 100
~>
 
Oben