pegu
Anmeldungsdatum: 2. September 2020
Beiträge: 53
|
Hallo zusammen, in dem Beitrag https://forum.ubuntuusers.de/topic/unstoppable-copier-alternative-oder-batchbefeh/ habe ich wegen einer Backup Lösung gefragt. Das Grundprinzip arbeitet auch schon. Nun möchte ich das Script über cron starten. Zum Testen wollte ich mal alle Minute das Script aufrufen. Das Script selbst kopiert aus einer Ordner zwei Dateien in einen anderen. Im Terminal klappt das auch. Das Script liegt im Ordner Dokumente. Nur bei cron nicht. Wird sicher an mir liegen 😉 Das habe ich in cron hinterlegt: 1 * * * * home/sebastian/Dokumente/backup_linux.sh Denke der Fehler liegt am Aufruf des Scripts ... Aber wie muss der Ausdruck genau lauten? Herzlichen Dank für eure Unterstützung! Liebe Grüße pegu Moderiert von Cruiz: In ein hoffentlich passenderes Forum verschoben.
|
claus56
Anmeldungsdatum: 24. Dezember 2019
Beiträge: 166
Wohnort: Pfälzer Wald
|
Hi, soviel ich weiß darf kein .sh als extension stehen - nur filename ohne extension.
Gruß Claus
|
pegu
(Themenstarter)
Anmeldungsdatum: 2. September 2020
Beiträge: 53
|
Hallo Claus, hat leider nichts gebracht. Im Wiki steht bei Cron aber der Dateityp auch (Codebeispiel direkt unter dem Hinweis mit der Auswahl des Editors): 5 9-20 * * * /home/BENUTZERNAME/script/script1.sh > /dev/null https://wiki.ubuntuusers.de/Cron/ Grüße pegu
|
phanthomasX
Anmeldungsdatum: 26. Dezember 2008
Beiträge: 99
|
Hallo, dann bleiben noch die "Klassiker" Ist das Skript ausführbar gemacht wurden? (chmod ) vielleicht das Skript mit sh am Anfang starten? beim Pfad fehlte außerdem ein "/" am Anfang ... also "/home" und nicht "home" ☺
|
homer65
Anmeldungsdatum: 8. November 2005
Beiträge: 549
Wohnort: bochum, germany
|
Versuch doch mal:
1 * * * * /home/sebastian/Dokumente/backup_linux.sh >> /home/sebastian/cron.txt
Beachte den / vor home.
|
woko1754
Anmeldungsdatum: 12. November 2008
Beiträge: 801
Wohnort: Lübeck
|
Wenn das manuell aufgerufen funktioniert, in Cron aber nicht, dann sieh mal hier: Cron unter "Häufige Fehler" nach. Cron muss der Pfad zur Bash mitgegeben werden.
|
ChickenLipsRfun2eat
Anmeldungsdatum: 6. Dezember 2009
Beiträge: 12067
|
pegu schrieb: Das habe ich in cron hinterlegt: 1 * * * * home/sebastian/Dokumente/backup_linux.sh
Dann mach da mal ein / davor. Ansonsten sind wir seit 16.04 bei systemd angekommen. Da gibt es systemd/Timer Units für solche Fälle.
|
pegu
(Themenstarter)
Anmeldungsdatum: 2. September 2020
Beiträge: 53
|
Hallo zusammen, ich Blindfisch .... 😳 das / fehlt ... Hat aber nichts geholfen ... phanthomasX
Ist das Skript ausführbar gemacht wurden? (chmod)
Ja, das Skript ist ausführbar. Kann es jederzeit im Terminal starten. phanthomasX
vielleicht das Skript mit sh am Anfang starten?
Verstehe leider nicht, was du meinst ... homer65
Versuch doch mal: 1 * * * * /home/sebastian/Dokumente/backup_linux.sh >> /home/sebastian/cron.txt
Soll der hintere Teil eine TXT Datei erzeugen? Wenn ja, dort finde ich leider keine vor. woko1754
Cron muss der Pfad zur Bash mitgegeben werden.
Wie müsste das aussehen? ChickenLipsRfun2eat
Ansonsten sind wir seit 16.04 bei systemd angekommen. Da gibt es systemd/Timer Units für solche Fälle.
Die Wikis dazu klingen für mich ziemlich mächtig und kompliziert. Spannend finde ich den Befehl Persistent=true Damit ließe sich ein Punkt erledigen: Was ist, wenn der PC zum Zeitpunkt nicht an war → wird nachgeholt. Was ich aber noch nicht verstanden habe, ist WIE das Skript dann gestartet wird .. Grüße pegu
|
ChickenLipsRfun2eat
Anmeldungsdatum: 6. Dezember 2009
Beiträge: 12067
|
Mal als Minibeispiel: Du erstellst dir eine systemd/Service Unit und diese wird nicht(!) per systemctl enable aktiviert. Diese Service-Unit läuft mit dem angegebenen Benutzer, etc. Weitere Möglichkeiten im Wiki. Zu dieser Service-Unit erstellst du dir eine Timer-Unit, die als Unit deinen Service hat. Den Timer aktivierst du mit systemctl enable DasMussLaufen.timer . Ist an sich nicht schwer und wie du schon bemerkt hast, deckt es gleichzeitig cron und anacron ab. Allein die Darstellungsmöglichkeiten der Zeiten sind aber bereits deutlich mächtiger. | # /etc/systemd/system/DasMussLaufen.service
[Unit]
Description=Das muss laufen!
[Service]
User=benutzer
ExecStart=/bin/bash -c '/home/benutzer/scripte/dasscript.sh muss laufen'
[Install]
WantedBy=multi-user.target
|
| # /etc/systemd/system/DasMussLaufen.timer
[Unit]
Description=Timer, damit es läuft
[Timer]
OnCalendar=07:00
Unit=DasMussLaufen.service
[Install]
WantedBy=timers.target
|
|
pegu
(Themenstarter)
Anmeldungsdatum: 2. September 2020
Beiträge: 53
|
Hallo ChickenLipsRfun2eat, vielen Dank für die Antwort. Habe ich es richtig verstanden: Mit dem Befehl sudo systemctl edit --force --full NAME_DER_UNIT_DATEI.TYP lege ich mir erstmal beide Units an. Danach werden sie editiert. Die Service-Unit wird gestartet, sobald ich mich einlogge. User=benutzer Und benutzer ersetze ich mit meinem Login Namen. Die Timer-Unit wird automatisch, nach dem erstmaligen aktivieren, mit jedem Systemstart gestartet? Grüße pegu
|
ChickenLipsRfun2eat
Anmeldungsdatum: 6. Dezember 2009
Beiträge: 12067
|
Ja. Wenn die Unit deinen Benutzer betrifft (und nur den), dann kannst du auch systemctl --user verwenden. Das funktioniert dann ohne sudo und beschränkt sich auf deinen Nutzer. Ein einmaliges aktivieren (enable) reicht. Da werden entsprechend Symlinks gesetzt, damit das beim Start ausgeführt wird.
|
pegu
(Themenstarter)
Anmeldungsdatum: 2. September 2020
Beiträge: 53
|
Ich nochmals ... Die erste Unit backup_linux.service konnte ich erstellen. Nun habe ich die .timer Unit erstellen wollen. Hierzu habe ich den Befehl genommen: sudo systemctl edit --force --full backup_linux_timer Ich hatte nun erwartet, dass die Datei backup_linux_timer.timer erstellt wird. Wurde aber eine backup_linux_timer.service Was mache ich falsch? Grüße pegu P.S. wie kann ich Units löschen?
|
ChickenLipsRfun2eat
Anmeldungsdatum: 6. Dezember 2009
Beiträge: 12067
|
pegu schrieb: Hierzu habe ich den Befehl genommen:
Du musst glaube ich nochmal die Wiki-Artikel lesen 😉 Wenn du keinen Typ angibst, wird automatisch angenommen, es handelt sich um einen Service. systemctl status mpd ist also gleichbedeutend mit systemctl status mpd.service . Willst du einen Timer haben, musst du das explizit erwähnen, also systemctl status mpd.timer . P.S. wie kann ich Units löschen?
systemctl disable --now name.service . Danach kannst du die Datei aus /etc/systemd/{entsprechendes Verzeichnis}/name.service, respektive ~/.config/systemd/user/name.service löschen. Sind ja nur Textdateien.
|
pegu
(Themenstarter)
Anmeldungsdatum: 2. September 2020
Beiträge: 53
|
Danke für den Hinweis. Ich habe nochmals gelesen und finde nur einen Artikel, in dem geschrieben wird, wie eine Unit erstellt wird. https://wiki.ubuntuusers.de/systemd/Units/ Neue Unit anlegen Mit dem Befehl sudo systemctl edit --force --full NAME_DER_UNIT_DATEI wird eine neue Unit-Datei im Verzeichnis /etc/systemd/system angelegt. Leider finde ich nicht den Hinweis, dass hier eine Unit vom Typ Service erstellt wird. Wo findet sich dieser Hinweis?
|
ChickenLipsRfun2eat
Anmeldungsdatum: 6. Dezember 2009
Beiträge: 12067
|
In dem von dir verlinkten Artikel wird generell nichts weggelassen: Typen von Units¶
Es existieren verschiedene Typen von Units, die von systemd je nach Endung des Dateinamens unterschiedlich behandelt werden
Dort könnte man noch dazuschreiben, dass man bei ServiceUnits die Endung weglassen kann, aber ob das zielführend ist, weiß ich nicht. Ich muss auch zugeben, dass ich die hiesigen systemd-Artikel nicht auswendig kenne 😉 Gerade bei systemd war Ubuntu ja recht spät dran mit dem Wechsel (und hat da wieder ein eigenes Kombipräparat verwendet), so dass ich das vorher aus anderer Quelle gelernt habe. Ich dachte, dass es kenntlich genug ist, da du selbst folgendes geschrieben hattest: pegu schrieb: Mit dem Befehl sudo systemctl edit --force --full NAME_DER_UNIT_DATEI.TYP
Eventuell könnte man das hiesige Wiki verbessern, indem man entweder komplett .TYP dranschreibt — oder es als Teil des Namens einfach komplett weglässt. Da bist du als neu Lernender der bessere Ratgeber — und könntest die Artikel entsprechend abändern, dass sie besser verständlich sind. Es gibt auch zu jedem Artikel eine Diskussion (Link oben rechts, wo die Revisionen sind), falls du dich nicht traust selbst etwas zu machen. Ich persönlich würde auf das weglassen komplett verzichten. Es schadet nie, wenn man .service dranschreibt 😉
|