Linux Systemdatei von eingelegter DVD auf den Server kopieren

  • Liebe Forumsmitglieder,


    ich habe versehentlich vermutlich den Linuxbefehl "service" aus dem Verzeichnis /usr/bin gelöscht bzw. mit einer Scriptdatei überschrieben.


    Ich würde die überschriebene Datei nun gerne von der im SCP eingelegten DVD der genutzten Linux-Distribution in das entsprechende Verzeichnis kopieren. Hierzu bräuchte ich bitte Eure Unterstützung, da ich nicht weiß, wie ich auf die Daten der eingelegten DVD vom Server aus zugreifen kann.


    Vielen Dank für Eure Hilfe.

  • ich habe versehentlich vermutlich den Linuxbefehl "service" aus dem Verzeichnis /usr/bin gelöscht bzw. mit einer Scriptdatei überschrieben.

    "Service" klingt stark nach Ubuntu. Nutzt du Ubuntu?


    In dem Fall kann ich in den Paketquellen kein /usr/bin/service, sondern nur ein /usr/sbin/service finden.

    Wenn das als originale Datei noch vorhanden ist, wirst du es hier mit einer Ambiguität zu tun haben.


    Zwei Dateien haben den gleichen Namen, aber dein /usr/bin/service wird zuerst ausgeführt.

    In dem Fall sollte es das Problem lösen, in dem du deine /usr/bin/service umbenennst.


    DVDs und CDs mountest du folgendermaßen:

    Code
    1. mkdir /mnt/dvd
    2. mount /dev/sr0 /mnt/dvd


    Die Installations-CDs sind meist aber nur abgespeckte Varianten und enthalten seinerseits nur ein Basisimage, alles weitere wird über die Paketquellen installiert.

    Insofern sehe ich über die Install DVD kein Erfolg.


    Wenn alle Stränge reißen, kannst du - unter Ubuntu - das Paket auch neu installieren: init-system-helpers heißt das Paket.

    Unter anderen Distributionen natürlich anders. Hier wäre natürlich interessant, welches Linux du benutzt.


    Unter https://packages.ubuntu.com/ kannst du auch selbst nach Paketinhalten recherchieren, sollten dir noch Dateien fehlen.

  • wirklich /usr/bin? Oder eher /usr/sbin?
    In sbin ist das ja ein "simples" shell script als Wrapper. Ggf. ist es einfacher, wenn Du das Script wieder reinkopierst.
    Habe zudem mal mein lokales auf 20.04 mit dem 18.04 verglichen - da tut sich nicht viel (1.51 vs 1.57).

    Welches OS in welcher Version hast Du denn installiert?
    (Und warum löscht man - aus Versehen - Dateien in den Bin-Verzeichnissen?!?)

  • Hallo H6G und banac,
    vielen Dank für eure schnelle Reaktion!


    Also, ich habe das Paket Debian Buster 10.9 installiert.


    Ich bin nach folgender Anleitung vorgegangen, um unoconv für unseren Moodle-Server auf dem Rootserver zu installieren:

    https://docs.moodle.org/311/en/mod/assign/feedback/editpdf/testunoconv/initd


    Da ich ein blutiger Anfänger bin, habe ich das Skript mit 'mv unoconvd /usr/bin/service' verschoben bzw. umbenannt.


    Als der zu erstellende Cronjob


    Code
    1. */5 * * * * /usr/bin/service unoconvd status > /dev/null || (/usr/bin/service unoconvd start && echo "Restarted crashed unoconv listener")


    nicht funktionierte und mit der Fehlermeldung: /bin/sh: 1: /usr/bin/service: not found abbrach, hatte ich befürchtet, dass ich den Befehl "service" in /usr/bin überschrieben hatte.


    Aufgrund eurer Hinweise habe ich herausgefunden, dass der Befehl tatsächlich im Ordner /usr/sbin liegt, was erklärt, dass


    Code
    1. service unoconvd status > /dev/null || (service unoconvd start && echo "Restarted crashed unoconv listener")

    auf der Konsolenebene funktioniert. :/

  • Update:


    Habe den Cronjob angepasst auf:


    Code
    1. */5 * * * * /usr/sbin/service unoconvd status > /dev/null || (/usr/sbin/service unoconvd start && echo "Restarted crashed unoconv listener")

    Und schon funktioniert es!!


    Danke Euch für die Hilfestellung.


    Zu meiner ursprünglichen Frage:


    Sollte ich tatsächlich mal einen Befehl aus einem Verzeichnis gelöscht haben, kann ich diesen mit folgendem Befehl wiederherstellen:


    Code
    1. sudo apt-get install --reinstall sysvinit-utils

    Dies habe ich nämlich getan, um den Befehl 'service' wiederherzustellen. (Was gar nicht nötig war, da er ja in dem Verzeichnis /usr/sbin/ die ganze Zeit noch vorhanden war! 8))

  • Zu meiner ursprünglichen Frage:

    Sollte ich tatsächlich mal einen Befehl aus einem Verzeichnis gelöscht haben, kann ich diesen mit folgendem Befehl wiederherstellen:

    Code
    1. sudo apt-get install --reinstall sysvinit-utils

    Generell in der Regel ja; im Falle von "service" nein, denn auch unter Debian Buster heißt das Paket init-system-helpers; dpkg -S hilft dabei, den Paketnamen zu identifizieren.

    Allerdings kann die Reinstallation eines Befehls mit Seiteneffekten behaftet sein, welche sich aus der Ausführung der De-/"Re-"Installationsscripte ergeben.

  • Ich bin nach folgender Anleitung vorgegangen, um unoconv für unseren Moodle-Server auf dem Rootserver zu installieren:

    https://docs.moodle.org/311/en…editpdf/testunoconv/initd

    Das bezieht sich auf den veralteten SysV Init Style (init.d) - neuere Debian Installationen verwenden dafür systemd - insofern fände ich https://docs.moodle.org/311/en…itpdf/testunoconv/systemd passender.


    Vielleicht ist das ein Weg für die nächste Moodle Installation.

    Ich weiß nämlich nicht, wie veraltet die Doku bereits ist.


    Da es jetzt funktioniert, würde ich es erstmal so lassen.



    habe ich das Skript mit 'mv unoconvd /usr/bin/service' verschoben bzw. umbenannt.

    Wenn das Ziel bereits existiert, beschwert sich mv in der Regel.

  • danke für den klasse Hinweis zu 'systemd'!


    Wenn ich dieses 'listener'-Script verwenden würde, könnte ich dann auf den Cronjob verzichten?

    Durchaus - der Cronjob sorgt ja nur dafür, dass das Ding gestartet wird, wenn es abgeschmiert ist.

    Das kann systemd als Daemon Manager auch. Da kannst du sogar einstellen wie und in welchem Interval und nach wie vielen Malen er einfach aufgibt.


    https://www.freedesktop.org/so…emd.service.html#Restart=

    Das ist die recht umfangreiche Doku dazu - hier jetzt der Restart Teil