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

mit (ana)cron Meldungen am Monitor ausgeben

A

Anonymous

Gast
Hallo,
ich habe ein script, mit dem ich mit dem Befehl rsync täglich ein Backup meines Homeverzeichnisses mache. Dieses script starte ich täglich mit anacron.
Ich möchte jetzt, dass beim Start des Scipt eine Meldung auf dem Monitor ausgegeben wird, so das der User (meine Frau) informiert wird, dass er den PC nicht ausschalten soll, bis das Backup abgeschlossen ist.

Dazu öffne ich im script mit dem Befehl kdialog eine Mesagebox.
Wenn ich das Script manuell ausführe ist alles i.O.
sobald das script mit anacron ausgeführt wird, läuft zwar das Backup durch, jedoch wird die Meldung nicht ausgegeben, da alles im Hintergrund läuft.
Wie bringe ich das script jetzt dazu, die Meldung trotzdem auf dem Monitor auszugeben?


Code:
#!/bin/bash
kdialog --msgbox "ACHTUNG Datensicherung läuft. PC bitte NICHT ausschalten!"&

# Datensicherung
rsync $para --exclude=*.bak --exclude=*~ /home/zucki /media/USB-HD320/bkp/inc-bkp/home-bkp/
rsync $para --exclude=*.bak --exclude=*~ /etc /media/USB-HD320/bkp/inc-bkp/etc-bkp/

# Monitorhinweis, das die Datensicherung abgeschlossen ist
kdialog --msgbox "Datensicherung abgeschlossen"
 

abgdf

Guru
Dieses Problem ist eines der verbliebenen Linux-Mysterien :D.

Ich glaube, es hängt damit zusammen, daß der X-Server etwas dagegen hat, wenn ein fremder Prozeß, der von at oder cron gestartet wurde, auf ihn zugreifen will ("man xhost").

Kann auch sein, daß diesem Prozeß die "$DISPLAY"-Variable fehlt.

Ich hab's bisher noch nicht hingekriegt :(.

Gruß
 
OP
A

Anonymous

Gast
abgdf schrieb:
Dieses Problem ist eines der verbliebenen Linux-Mysterien :D.
Man regelt das normalerweise auch etwas anders, sonst müsste man dem Script erst beibringen überhaupt erst einmal herauszubekommen ob ein x-Server überhaupt läuft, wer auf dem X-Server einen Windowsmanager gestartet hat und wie man dafür Rechte bekommt.

Besser vielleicht:
Das Backup normal über cron starten und dabei eine Flag-Datei unter /var/run anlegen in der nur die Prezess-ID des Backupscriptes hinterlegt ist. Ist das Backup fertig, dann wird diese Flag-Datei gelöscht.

Aus KDE oder GNOME heraus wird per autostart ein Script gestartet das beim Start und anschließend regelmäßig alle paar Minuten schaut ob es diese Flag-Datei also zB /var/run/my-backup.pid gibt. Wenn ja dann wird die Meldung ausgegeben und anschließen geprüft ob die Datei jetzt verschwunden ist um die 2. Meldung zu bringen.

Wer Programmiertechnisch etwas versierter ist, kann auch ein herunterfahren des Rechners solange verhindern, wie es diese Datei gibt. Ich würde da zB um nicht in die Start/Stop-Scripte eingreifen zu müssen einfach für die Laufzeit des Backupscriptes allen normalen Usern das Recht wegnehmen den Rechner herunterzufahren. Ist das Backup durch bekommen sie das Recht wieder. Als Root ist die Kiste dann immer noch voll administrierbar, und die normalen User müssen nur wissen, dass es manchmal nicht möglich ist, den Rechner auszuschalten, dann sollen sie es eben später noch mal versuchen.

robi
 

abgdf

Guru
Bei mir klappt's jetzt doch mit "at", wenn ich bei kdialog noch den Inhalt von
Code:
echo $DISPLAY
mitgebe, also bei mir:
Code:
kdialog --msgbox "ACHTUNG Datensicherung läuft. PC bitte NICHT ausschalten!" --display ":0.0" &
Siehe auch

http://forums.opensuse.org/archives/sf-archives/archives-programming-scripting/345519-cron-kdialog-cannot-connect-x-server-2.html

(ruhig mal von Anfang an lesen).
Wichtig scheint mir auch "--passivepopup", oder soll das Fenster ewig offen bleiben, selbst wenn cron schon fertig ist und man den PC also ruhig ausschalten könnte:
Windows 95 schrieb:
Sie können den Computer jetzt ausschalten.
Viele Grüße
 
Setzt aber voraus, dass da auch was auf :0 läuft, und :0 das richtige ist, und man auch noch die Authorisation (~/.Xauthority -Datei) hat, bzw. mit $XAUTHORITY angegeben hat.
 
Oben