Xeno
Ehemalige
Anmeldungsdatum: 6. April 2005
Beiträge: 2595
Wohnort: Schweiz
|
Liebe Community Ich habe meinen ersten realen (von "Hallo Welt" abgesehen) Script zusammengeschustert. Die Aufgabe des Scripts besteht darin, das Home-Verzeichnis auf eine andere Partition zu sichern, wenn der Script gestartet wird. Der Code: | #!/bin/bash
rsync -a -v --delete /home /media/michael/backup/home1404
echo "Das Backup des Home-Verzeichnisses von Ubuntu 14.04 LTS ist beendet."
sleep 50000
|
Es passiert das, was ich will, wenn der Script aufgerufen wird *jubilier*. Meine Fragen: 1) Ist der Code einigermassen korrekt und ungefährlich? 2) Gäbe es elegantere Arten das Terminal offen zu halten bis zum Abschluss des Vorgangs als "sleep 50000"? Welche? 3) Der Script liegt auf dem Desktop und wird von mir im Terminal aufgerufen mit Wäre es auch möglich, und wenn ja wie, den Script per Klick oder Doppelklick statt im Terminal zu starten? Unter 12.04 war das möglich, unter 14.04 ist dies nicht mehr ("einfach so") möglich. Lg X.
|
Prisma1
Anmeldungsdatum: 11. August 2012
Beiträge: 111
|
Script sieht gut aus - offen halten mittels:
read -p "Taste drücken zum Beenden" -n1 Doppelklickmöglichkeit schaffen mittels .desktop-Dateien. Diese in .local/share/applications ablegen, ausführbar machen und in die Seitenleiste ziehen.
|
Xeno
Ehemalige
(Themenstarter)
Anmeldungsdatum: 6. April 2005
Beiträge: 2595
Wohnort: Schweiz
|
Danke für die rasche Antwort! Prisma1 schrieb: Script sieht gut aus - offen halten mittels:
read -p "Taste drücken zum Beenden" -n1
Ja, das ist eleganter. Ganz perfekt ist es noch nicht, denn wenn man dann tatsächlich eine Taste drückt, bleibt das Terminal dennoch offen. Die Meinung wäre ja wohl gewesen, dass sich dann das Terminal schliesst. Ist aber natürlich nur ein Detail.
Doppelklickmöglichkeit schaffen mittels .desktop-Dateien. Diese in .local/share/applications ablegen, ausführbar machen und in die Seitenleiste ziehen.
Alles klar, da muss ich bei Gelegenheit einlesen. Lg X.
|
seahawk1986
Anmeldungsdatum: 27. Oktober 2006
Beiträge: 11267
Wohnort: München
|
Xeno schrieb: Danke für die rasche Antwort! Prisma1 schrieb: Script sieht gut aus - offen halten mittels:
read -p "Taste drücken zum Beenden" -n1
Ja, das ist eleganter. Ganz perfekt ist es noch nicht, denn wenn man dann tatsächlich eine Taste drückt, bleibt das Terminal dennoch offen. Die Meinung wäre ja wohl gewesen, dass sich dann das Terminal schliesst. Ist aber natürlich nur ein Detail.
Wenn du mal soweit bist, dass du eine .desktop Datei dafür erstellt hast, wird sich das Terminal auch selbst schließen - solange kannst du das so machen:
| #!/bin/bash
rsync -a -v --delete /home /media/michael/backup/home1404
echo "Das Backup des Home-Verzeichnisses von Ubuntu 14.04 LTS ist beendet."
read -p "Taste drücken zum Beenden" -n1
exit
|
|
Xeno
Ehemalige
(Themenstarter)
Anmeldungsdatum: 6. April 2005
Beiträge: 2595
Wohnort: Schweiz
|
seahawk1986 schrieb: Lieber seahawk Danke für Deine Antwort.
| #!/bin/bash
rsync -a -v --delete /home /media/michael/backup/home1404
echo "Das Backup des Home-Verzeichnisses von Ubuntu 14.04 LTS ist beendet."
read -p "Taste drücken zum Beenden" -n1
exit
|
"exit" bewirkt leider nichts. Ist überhaupt nicht tragisch. Lg X.
|
seahawk1986
Anmeldungsdatum: 27. Oktober 2006
Beiträge: 11267
Wohnort: München
|
Hallo,
du hast recht, funktioniert so nicht, weil damit nur das Skript beendet wird, aber nicht die Shell, die es ausführt. Man könnte den Aufruf des Skriptes aber z.B. so verknüpfen - dann wird die Shell beendet, wenn das Skript ohne Fehler durchgelaufen ist:
|
Xeno
Ehemalige
(Themenstarter)
Anmeldungsdatum: 6. April 2005
Beiträge: 2595
Wohnort: Schweiz
|
Liebe Helfer Ich habe es geschafft: Die Desktop-Dateien ist erstellt und auch schon in den Launcher integriert. Es funktioniert jetzt alles reibungslos. Bin ein wenig stolz 😠 Ich setzen dann auf "gelöst". Lg X.
|
Roland_Linux
Anmeldungsdatum: 6. Februar 2006
Beiträge: 2396
|
Hallo, du kannst das auch so machen: Im Dateimanager wählst du in den Einstellungen unter dem Reiter "Verhalten" aus, wie mit einer Textdatei beim Öffnen verfahren werden soll. Ich habe hier ausgewählt, dass ich jedes Mal gefragt werden möchte. Da ein Skript ja nichts anderes als eine Textdatei ist, werde ich beim Klick auf die Datei gefragt, ob ich die Datei öffnen oder ausführen möchte. Klicke ich auf ausführen, öffnet sich ein Terminal und das Skript wird ausgeführt. Mit einem "read pause" am Ende des Skripts vor "exit" wartet das Skript einen Tastendruck ab, bevor es sich beendet und (!) das Terminal geschlossen wird.
|
Kriev
Anmeldungsdatum: 12. Dezember 2010
Beiträge: 349
Wohnort: Unter dem Tisch
|
Das mini Script sieht gut aus. Ich würde dir aber ganz gerne noch einen oder zwei Tipps oder Anregungen geben wenn ich darf: Interessant wäre sicherlich das ganze zu logen in Logfiles und diese zu rotaten ⇒ Logdateien sleep beherrscht auch Stunden, Minuten etc. Du kannst per cron einen Regelmässigen Job definieren und so das Backup regelmässig und automatisch erledigen lassen (hier sind logfiles wichtig) Du kannst per notify den Status des Backups als OSD durchgeben (Start und ob das Skript erfolgreich beendet wurde oder nicht)
Und es würde noch tonnenweise mehr geben. Ich hab als Beispiel mal ein Init Skript geschrieben um einen Java Dienst zu steuern. Ich hab immer mehr Funktionen eingebaut... Es ist jetzt über 2000 Zeilen lang und ich habe Angst das ich das jemals debuggen muss 😉 Immer schön Kommentieren! ←- Sehr wichtig Cheers - Robin
|
Xeno
Ehemalige
(Themenstarter)
Anmeldungsdatum: 6. April 2005
Beiträge: 2595
Wohnort: Schweiz
|
Roland_Linux schrieb: Hallo, du kannst das auch so machen: Im Dateimanager wählst du in den Einstellungen unter dem Reiter "Verhalten" aus, wie mit einer Textdatei beim Öffnen verfahren werden soll. Ich habe hier ausgewählt, dass ich jedes Mal gefragt werden möchte. Da ein Skript ja nichts anderes als eine Textdatei ist, werde ich beim Klick auf die Datei gefragt, ob ich die Datei öffnen oder ausführen möchte. Klicke ich auf ausführen, öffnet sich ein Terminal und das Skript wird ausgeführt. Mit einem "read pause" am Ende des Skripts vor "exit" wartet das Skript einen Tastendruck ab, bevor es sich beendet und (!) das Terminal geschlossen wird.
Lieber Roland Danke für diesen super Tipp! Ich kannte Nautilus noch zu wenig, um das gleich selber zu wissen. Mit dieser Einstellung passiert, was ich will. Die Konfiguration einer Desktop-Datei, nur um dann ein Icon zum Klicken zu haben, habe ich zwar hingekriegt (worauf ich stolz bin), aber das hat für meine eigentlichen Zwecke (etwas Scripting lernen 😀 ) eigentlich fast mehr Nachteile als Vorteile. Man muss ja dann das ganze Prozedere immer wieder neu durchlaufen, wenn man im Skript ein selbst nur minimale Änderung macht. Im Moment gefällt es mir besser, dass ich den Script aufm Desktop starten kann. Ich habe bereits weitere Backup-Scripts geschrieben für besondere Verzeichnisse (etwa das Thunderbird-Profil). Funktioniert einwandfrei. Lg X.
|
Xeno
Ehemalige
(Themenstarter)
Anmeldungsdatum: 6. April 2005
Beiträge: 2595
Wohnort: Schweiz
|
Kriev schrieb: Das mini Script sieht gut aus.
Danke. Keine Angst, ich interpretiere es nicht falsch. Ich weiss, dass es nur ein Anfang war. Reizvoll war für mich, dass man diesen Script direkt "richtig" nutzen kann.
Ich würde dir aber ganz gerne noch einen oder zwei Tipps oder Anregungen geben wenn ich darf:
Sehr gerne!
Interessant wäre sicherlich das ganze zu logen in Logfiles und diese zu rotaten ⇒ Logdateien sleep beherrscht auch Stunden, Minuten etc. Du kannst per cron einen Regelmässigen Job definieren und so das Backup regelmässig und automatisch erledigen lassen (hier sind logfiles wichtig) Du kannst per notify den Status des Backups als OSD durchgeben (Start und ob das Skript erfolgreich beendet wurde oder nicht)
Und es würde noch tonnenweise mehr geben. Ich hab als Beispiel mal ein Init Skript geschrieben um einen Java Dienst zu steuern. Ich hab immer mehr Funktionen eingebaut... Es ist jetzt über 2000 Zeilen lang und ich habe Angst das ich das jemals debuggen muss 😉 Immer schön Kommentieren! ←- Sehr wichtig Cheers
Das sind super Ideen. Muss ich mich natürlich schrittweise einlesen. Lg X.
- Robin
|
Kriev
Anmeldungsdatum: 12. Dezember 2010
Beiträge: 349
Wohnort: Unter dem Tisch
|
Wie du gesagt hast, du hast erst damit angefangen, und jeder fängt mal klein an. Der Grund shell skripte zu schreiben ist eigentlich meist die Automatisierung von Arbeitabläufen welche man immer und immer wieder machen muss, bei deinem Beispiel ein Backupskript. Effizient ist es dann natürlich wenn es automatisch und zu regelmässige Zeiten geschieht. Denn wer wiess ob deine Platte plötzlich mal abraucht und du vielleicht das letzte Bachup vergesseb hast. Dann fehlen plötzlich die zuletzt bearbeiteten Dateien 😉 Cheers
- Kriev
|