Anzeige:
Ergebnis 1 bis 5 von 5

Thema: [Shell] Datei mit Datum als Endung versehen

  1. #1
    Registrierter Benutzer
    Registriert seit
    20.06.2003
    Beiträge
    32

    Question [Shell] Datei mit Datum als Endung versehen

    Hallo,

    ich will eine Datei umbenennen, und sie z.B. von test in test-15.03.2003 umbenennen. Aus zwecken der Sicherung. Wie kann ich das mit nem Shellscript machen. Meine Idee war folgende:
    Code:
    date > $datum
    mv /test/test /test/test.$date
    Leider tut sich da garnix. Nicht mal ne Fehlermeldung kommt... Woran kann das liegen bzw. was ist hier falsch???

    Und da fällt mir nochwas ein. Kann ich ein Script schreiben, dass beim nächsten Reboot eine Datei löscht? Also dass ich das Script aufrufe, es dann beim rebooten eine Datei XY löscht und dann wieder weg ist, bis ich es das nächste mal aufrufe?

    Ich hoffe auf Umfangreiche Antworten!
    MfG
    Bellerophon

  2. #2
    Registrierter Benutzer Avatar von phate
    Registriert seit
    14.02.2003
    Beiträge
    149
    Hi Bellerophon,

    ich will eine Datei umbenennen, und sie z.B. von test in test-15.03.2003 umbenennen.
    Code:
    date > $datum
    mv /test/test /test/test.$date
    Das von Dir geschriebene kann aus mehreren Gründen nicht funktionierten. Um die Ausgabe eines Befehls (STDOUT) in eine Variable zu leiten musst Du dies über die berühmten Backticks ` oder über das Einschliessen des Befehls in $() tun. Was Du realisierst ist eine Umleitung in eine durch eine Variable angegebene Datei. Und wenn Du dann mit dieser Variable arbeiten willst, dann würde ich diese auch richtig referenzieren. Speichern der Ausgabe in $datum und späteres Verwenden von $date hilft nicht wirklich.

    Richtig ist das Ganze dann so
    Code:
    DATUM=`date +%d.%m.%Y`
    bzw.
    DATUM=$(date +%d.%m.%Y)
    
    mv /test/test /test/test.$DATUM
    So ein paar Grundlagen zum Thema Shell-Scripting könnten nicht schaden, schau Dir mal die Signatur von fork an (zu sehen in folgendem Thread), da sind ein paar ganz brauchbare Links zur Thematik dabei.

    http://www.mrunix.de/forums/showthre...594#post142594

    Und da fällt mir nochwas ein. Kann ich ein Script schreiben, dass beim nächsten Reboot eine Datei löscht? Also dass ich das Script aufrufe, es dann beim rebooten eine Datei XY löscht und dann wieder weg ist, bis ich es das nächste mal aufrufe?
    Spezifiziere Dein Problem mal genau. Willst Du die Aktionen beim Auslösen eines Reboots oder beim Hochfahren nach einem Reboot ausführen? Soll das Skript nur zum Löschen von Dateien dienen oder willst Du Funktionalitäten kombinieren?

  3. #3
    Registrierter Benutzer
    Registriert seit
    20.06.2003
    Beiträge
    32
    Also... erstmal danke für die schnelle Hilfe.

    Und wenn Du dann mit dieser Variable arbeiten willst, dann würde ich diese auch richtig referenzieren. Speichern der Ausgabe in $datum und späteres Verwenden von $date hilft nicht wirklich.
    Ich hab den Fehler im Script selber nicht gemacht. War nur ein Fehler beim Eintippen...
    Spezifiziere Dein Problem mal genau. Willst Du die Aktionen beim Auslösen eines Reboots oder beim Hochfahren nach einem Reboot ausführen? Soll das Skript nur zum Löschen von Dateien dienen oder willst Du Funktionalitäten kombinieren?
    Also, dann erklär ich das mal. Ich hab eine Logdatei, die aus mehreren Einträgen aus anderen Logdateien zusammen gesetzt wird. Wenn ich diese leeren will, lösche ich sie bis jetzt immer. Nach dem löschen muss ich neu booten, da sonst das Programm, dass die Logeinträge sammelt und in diese Logdatei schreibt nicht mehr weiter macht (gott weiß warum, selbst wenn ich die Datei leer neu erstelle passiert nix).
    Nun kamen mir zwei Ideen.

    1) Dass ich die alten Logdateien mit nem Datumsende versehe und so speichern kann
    2) Dass ich das Löschen der Datei erst vor dem Reboot mache, damit ich nicht im laufenden betrieb booten muss, sondern dann, wenn der Rechner eh neu gestartet werden soll.

    Geht sowas???

    So ein paar Grundlagen zum Thema Shell-Scripting könnten nicht schaden, [...]
    Jaja, ich weiß... aber wie das so ist, hab ich noch keine Zeit gehabt mich ausgiebig mit dem Thema zu beschäftigen... Bis jetzt hab ich die Scripte immer zusammen bekommen...

    Also nochmal vielen Dank für den ersten Tipp!
    Bellerophon

  4. #4
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Original geschrieben von Bellerophon
    Also, dann erklär ich das mal. Ich hab eine Logdatei, die aus mehreren Einträgen aus anderen Logdateien zusammen gesetzt wird. Wenn ich diese leeren will, lösche ich sie bis jetzt immer. Nach dem löschen muss ich neu booten, da sonst das Programm, dass die Logeinträge sammelt und in diese Logdatei schreibt nicht mehr weiter macht (gott weiß warum, selbst wenn ich die Datei leer neu erstelle passiert nix).
    Wenn du eine Datei löschst, die ein Prozess geöffnet hat, löschst du nur den Eintrag aus dem Verzeichnis. Die Datei selbst wird erst gelöscht, wenn der letzte Prozess, der sie offen hatte, sie geschlossen hat.

    Du brauchst ja nicht den Rechner neu zu starten, sondern im schlimmsten Falle nur den Logger.
    syslogd schliesst glaub ich sogar bei einem SIGHUP die Datei und öffnet sie neu.

    Wahrscheinlich ist es am vernünftigsten, das Programm logrotate einzusetzten und entsprechend zu konfigurieren.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  5. #5
    Registrierter Benutzer Avatar von phate
    Registriert seit
    14.02.2003
    Beiträge
    149
    Nix gegen die Perlerei, aber hier mal ein kleines Besipiel wie Du auch mit PHP auf der Konsole dein Datum formatieren kannst.
    Nix für ungut, aber
    1) hat das gepostete mal garnix mit perl zu tun, und
    2) will er nen shell-skript schreiben. da auf die weise php ins spiel zu bringen wenns schon nen programm gibt, das gewünschtes tut (date) .... naja, von hinten durch die Brust ins Auge is da wohl noch nix gegen

    gruss,

    phate

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •