Script aus dem cron bleibt in der Prozessliste stehen

10/09/2007 - 14:28 von Knut Rauscher | Report spam
Hallo,

ich hoffe ich liegen hier mit meinem Anliegen richtig.
Ich starten tàglich aus dem cron folgende Aufruf:

0 21 * * * root su - -c '/usr/local/sbin/restart.sh 2>&1 | mail -s "Backup Database" root'

Alles wird sauber ausgeführt nur bekomme ich keine E-Mail, sondern die
Prozesse bleiben wie folgt in der Prozessliste stehen:

,-
| crond
| \_ crond
| \_ su - -c /usr/local/sbin/restart.sh 2>&1 | mail -s "Backup Database" root
| \_ -bash -c /usr/local/sbin/restart.sh 2>&1 | mail -s "Backup Database" root
| \_ mail -s Backup Database root
`-

Am nàchsten Tag bekomme ich dann den E-Mail vom Vortag und zwar genau
dann, wenn wieder der o.g Aufruf aus dem cron erneut startet. Danach
bleiben die Prozesse wie oben erneut in der Prozessliste stehen. So geht
das Spiel dann immer weiter. Ich weiß nicht warum die Prozesse stehen
bleiben und erst wenn der cron erneut das gleiche Script startet die
alten sich sauber beenden.

Starte ich restart.sh auf der Shell Manuell, funktioniert für mich alles
einwandfrei. Wie kann ich so etwas am besten Debuggen oder wo dran kann
es liegen?

Schöne Grüße

sendet Knut
 

Lesen sie die antworten

#1 Klaus Zerwes
10/09/2007 - 15:04 | Warnen spam
Knut Rauscher wrote:
Hallo,

ich hoffe ich liegen hier mit meinem Anliegen richtig.
Ich starten tàglich aus dem cron folgende Aufruf:

0 21 * * * root su - -c '/usr/local/sbin/restart.sh 2>&1 | mail -s "Backup Database" root'




Warum sich das Leben unnötig Schwer machen ;-)

1. Dein Cron - Job wird eh als root ausgeführt - ergo spar dir das su - -c

2. zum Thema Mail:
man 5 crontab

"In addition to LOGNAME, HOME, and SHELL, cron(8) will look at MAILTO if
it has any reason to send mail as a result of running commands in
``this'' crontab. If MAILTO is defined (and non-empty), mail is sent
to the user so named. If MAILTO is defined but empty (MAILTO=""), no
mail will be sent. Otherwise mail is sent to the owner of the crontab."

0 21 * * * root /usr/local/sbin/restart.sh
sollte reichen


Was genau bei der Verschachtelung schiefgeht ... ?


Alles wird sauber ausgeführt nur bekomme ich keine E-Mail, sondern die
Prozesse bleiben wie folgt in der Prozessliste stehen:

,-
| crond
| \_ crond
| \_ su - -c /usr/local/sbin/restart.sh 2>&1 | mail -s "Backup Database" root
| \_ -bash -c /usr/local/sbin/restart.sh 2>&1 | mail -s "Backup Database" root
| \_ mail -s Backup Database root
`-

Am nàchsten Tag bekomme ich dann den E-Mail vom Vortag und zwar genau
dann, wenn wieder der o.g Aufruf aus dem cron erneut startet. Danach
bleiben die Prozesse wie oben erneut in der Prozessliste stehen. So geht
das Spiel dann immer weiter. Ich weiß nicht warum die Prozesse stehen
bleiben und erst wenn der cron erneut das gleiche Script startet die
alten sich sauber beenden.

Starte ich restart.sh auf der Shell Manuell, funktioniert für mich alles
einwandfrei. Wie kann ich so etwas am besten Debuggen oder wo dran kann
es liegen?

Schöne Grüße

sendet Knut




Klaus

Klaus Zerwes
http://zero-sys.net

Ähnliche fragen