Code: Select all
#!/bin/sh
RSYNC_IS_RUNNING=`ps -ef | grep -v grep | grep -ic rsync`
#echo $RSYNC_IS_RUNNING
if [ $RSYNC_IS_RUNNING = 0 ]
then
rsync -vaz --delete --force --bwlimit=800 --exclude=.* --partial -e "ssh -pxxxxx" /xxx/xxxx/ xxxxx@xxxxx.xxxxxxx.xx:/xxx/xxxx > /dev/null
fiNach ein wenig herumprobieren, hab ich schnell herausgefunden, dass der Wert von RSYNC_IS_RUNNING nicht "0" sondern "3" ist (an der Stelle des auskommentierten echos). Logisch also, dass er den Block mit dem rsync-Kommando gar nicht erst betritt.
Führe ich den Befehl in den Backticks aber direkt auf der Shell aus (als root, Script läuft ebenfalls als root) erhalte ich wie erwartet "0" und nicht "3".
Dachte erst an ein Problem mit den Backticks (falsches Zeichen o.ä.) - aber in anderen Scripts funktionieren die auf der gleichen Maschine einwandfrei. Zudem ein
Code: Select all
RSYNC_IS_RUNNING=$(ps -ef | grep -v grep | grep -ic rsync)Was übersehe ich hier? Was könnte ich noch ausprobieren?