Anzeige:
Ergebnis 1 bis 12 von 12

Thema: /etc/init.d/halt.local und Systemd ?

  1. #1
    Registrierter Benutzer
    Registriert seit
    May 2004
    Beiträge
    1.567

    /etc/init.d/halt.local und Systemd ?

    Ist das korrekt, das nun beim Shutdown die /etc/init.d/halt.local bei Verwendung von systemd (Standard bei openSUSE 12.3) nicht mehr abgearbeitet wird?
    Wird bei mir nämlich seit dem Upgrade von 12.2 auf 12.3 ignoriert
    Und wenn ja, gibt es da nun einen Ersatz dafür oder muß man nun direkt einen eigenen Service kreieren und aktivieren?

  2. #2
    Rain_maker
    Gast
    Unter 12.1 gab es noch das hier:

    Code:
    Fatboy:~> cat /lib/systemd/system/halt-local.service 
    #  This file is part of systemd.
    #
    #  systemd is free software; you can redistribute it and/or modify it
    #  under the terms of the GNU General Public License as published by
    #  the Free Software Foundation; either version 2 of the License, or
    #  (at your option) any later version.
    
    [Unit]
    Description=/etc/init.d/halt.local Compatibility
    ConditionFileIsExecutable=/etc/init.d/halt.local
    DefaultDependencies=no
    After=shutdown.target
    Before=final.target
    
    [Service]
    Type=oneshot
    ExecStart=/etc/init.d/halt.local
    TimeoutSec=0
    StandardOutput=tty
    RemainAfterExit=yes
    Man sollte das aber -falls auf 12.3 wirklich nicht mehr vorhanden- nicht nach /lib/systemd/system sondern nach /etc/systemd/system kopieren und ggf. noch mit

    Code:
    systemctl enable halt-local.service
    aktivieren.

    Greetz,

    RM

  3. #3
    Registrierter Benutzer
    Registriert seit
    May 2004
    Beiträge
    1.567
    Genau das ist nun nicht mehr vorhanden, allerdings weigert er sich wegen fehlender [INSTALL] Sektion die mit systemctl enable einfach so zu aktivieren.

  4. #4
    Rain_maker
    Gast
    Genaue Fehlermeldung?

    So in etwa vielleicht?

    Code:
    systemctl enable halt-local.service 
    Warning: unit files do not carry install information. No operation executed.
    Unter 12.1 gibt es diese hier, funktioniert aber trotzdem.

  5. #5
    Registrierter Benutzer
    Registriert seit
    May 2004
    Beiträge
    1.567
    Da kommt bei der 12.3 mehr als nur eine bloße Warnung:
    # systemctl enable halt-local.service
    The unit files have no [Install] section. They are not meant to be enabled
    using systemctl.
    Possible reasons for having this kind of units are:
    1) A unit may be statically enabled by being symlinked from another unit's
    .wants/ or .requires/ directory.
    2) A unit's purpose may be to act as a helper for some other unit which has
    a requirement dependency on it.
    3) A unit may be started when needed via activation (socket, path, timer,
    D-Bus, udev, scripted systemctl call, ...).
    und danach ist es eben nicht aktiviert, nunja sieht so aus als müßte ich mich mal ernsthafter mit systemd auseinandersetzen

  6. #6
    Rain_maker
    Gast
    Zitat Zitat von f_m Beitrag anzeigen
    und danach ist es eben nicht aktiviert,
    Kann es auch nicht sein, weil es da nichts zu aktivieren gibt. Das Ding wird einmal ausgeführt und fertig, deshalb ist es auch mit keinem "target" direkt verknüpft.

    Die Meldung auf 12.3 ist für mich nur eine ausführlichere Warnung als auf 12.1, die auch noch erklärt, warum es da nichts zu aktivieren gibt.

    Code:
    systemctl status halt-local.service
    halt-local.service - /etc/init.d/halt.local Compatibility
              Loaded: loaded (/lib/systemd/system/halt-local.service; static)
              Active: inactive (dead)
              CGroup: name=systemd:/system/halt-local.service
    Man könnte sich noch den Spaß machen und das hier am Ende hineinschreiben

    Code:
    [Install]
    WantedBy=shutdown.target
    und dann

    Code:
    # systemctl enable halt-local.service 
    ln -s '/lib/systemd/system/halt-local.service' '/etc/systemd/system/shutdown.target.wants/halt-local.service'
    lässt sich das auch aktivieren.

    Was sagt eigentlich

    Code:
    ls -l /etc/init.d/halt.local
    ?

  7. #7
    Registrierter Benutzer
    Registriert seit
    May 2004
    Beiträge
    1.567
    Läuft nun,
    das Problem war denk ich zuerst, daß ich in die /etc/halt.local bloß den Namen eines externen Scripts schrieb das er anscheinend dann nicht ausführte, warum ist mir nicht ganz klar. Nachdem ich die Vefehle dann direkt in die halt.local schrieb lief es.

  8. #8
    Registrierter Benutzer
    Registriert seit
    May 2004
    Beiträge
    1.567
    Nachdem ich nun bemerkt habe, daß die neue openSUSE auch kein Startscript mehr standardmäßig berücksichtigt stell ich das hier auch gleich rein, falls es wer braucht
    Code:
    #  This file is part of systemd.
    #
    #  systemd is free software; you can redistribute it and/or modify it
    #  under the terms of the GNU General Public License as published by
    #  the Free Software Foundation; either version 2 of the License, or
    #  (at your option) any later version.
    
    [Unit]
    Description=/etc/init.d/after.local Compatibility
    ConditionFileIsExecutable=/etc/init.d/after.local
    
    [Service]
    Type=oneshot
    ExecStart=/etc/init.d/after.local
    TimeoutSec=0
    StandardOutput=tty
    RemainAfterExit=yes
    SysVStartPriority=99
    
    [Install]
    WantedBy=multi-user.target
    Hinweis: after.local ist der Ersatz für die altbekannte rc.local

    Die Dateien /etc/init.d/after.local bzw. halt.local sind ja bei openSUSE 12.3 noch vorhanden aber die Dienste damit diese auch abgearbeitet werden muß man sich nun selbst schnitzen,
    vlt. sollt ich mal nen Bugreport machen :P

  9. #9
    Rain_maker
    Gast
    Nachtrag:

    Die "vermissten" services existieren auch unter openSUSE 12.3, allerdings liegen sie -genau so wie die ganzen Dateien von systemd- an anderer Stelle.

    Alt:

    Code:
    /lib/systemd/system/
    Dieses Verzeichnis existiert zwar noch, allerdings nur aus Kompatibilitätsgründen mit (älteren) Anwendungen, die ihre service-Dateien dann eben noch in diesem "legacy"-Verzeichnis ablegen können.

    Neu:

    Code:
    /usr/lib/systemd/system/
    Siehe:

    Code:
    ls -l /usr/lib/systemd/system/*local.service
    -rw-r--r-- 1 root root 571 22. Apr 12:09 /usr/lib/systemd/system/halt-local.service
    lrwxrwxrwx 1 root root  16  3. Mai 10:54 /usr/lib/systemd/system/local.service -> rc-local.service
    -rw-r--r-- 1 root root 614 22. Apr 12:09 /usr/lib/systemd/system/rc-local.service
    rpm -qf /usr/lib/systemd/system/*local.service
    systemd-195-13.25.1.i586
    systemd-195-13.25.1.i586
    systemd-195-13.25.1.i586
    Einzig das Problem, daß ein Aufruf eines weiteren Scripts in /etc/init.d/halt.local meist (nicht immer) nicht (mehr rechtzeitig, da der Shutdown mit systemd zu schnell ist?) ausgeführt wird, kann ich hier reproduzieren, aber auch da kann man nachhelfen.

    1. Service Datei /etc/systemd/system/before-halt-local.service anlegen

    Code:
    #  This file is part of systemd.
    #
    #  systemd is free software; you can redistribute it and/or modify it
    #  under the terms of the GNU Lesser General Public License as published by
    #  the Free Software Foundation; either version 2.1 of the License, or
    #  (at your option) any later version.
    
    [Unit]
    Description=/etc/init.d/before.halt.local
    ConditionFileIsExecutable=/etc/init.d/before.halt.local
    DefaultDependencies=no
    Before=shutdown.target reboot.target
    
    [Service]
    Type=oneshot
    ExecStart=/etc/init.d/before.halt.local
    TimeoutSec=0
    StandardOutput=tty
    RemainAfterExit=yes
    
    [Install]
    WantedBy=reboot.target shutdown.target
    Die fett markierte Linie macht eigentlich genau das, was da steht.

    "Dieser Service wird vor dem Shutdown/Reboot ausgeführt."

    Das kann -je nachdem, wieviel und was da drin steht- logischerweise das Herunterfahren verlängern, aber nichts ist umsonst, sogar der Tod kostet das Leben.

    Die letzte Linie ("WantedBy") sorgt dafür, daß der Service beim Herunterfahren/Neustarten ausgeführt wird.

    2.Script /etc/init.d/before.halt.local anlegen, gewünschten Kram reinschreiben und ausführbar machen.

    3. Service aktivieren
    Code:
    # systemctl enable before-halt-local.service 
    ln -s '/etc/systemd/system/before-halt-local.service' '/etc/systemd/system/reboot.target.wants/before-halt-local.service'
    ln -s '/etc/systemd/system/before-halt-local.service' '/etc/systemd/system/shutdown.target.wants/before-halt-local.service'
    Ét voilà.

    Greetz,

    RM
    Geändert von Rain_maker (20.05.13 um 15:25 Uhr) Grund: Typo

  10. #10
    Registrierter Benutzer
    Registriert seit
    Sep 2002
    Ort
    Berlin
    Beiträge
    707
    Hallo Rain_maker,

    hallo Leute,

    habe nach Deiner/der obigen Anleitung den "before-halt-local.service" angelegt und aktiviert.
    Ich möchte eigentlich nur auf meinem openSUSE 13.2 Notebook einen nfs4-share umounten, weil ohne der shutdown bzw. ein reboot quälend langsam abläuft.
    So steht in in der before.halt.local lediglich:
    Code:
    #!/bin/bash
    #
    
    umount [server]:/
    Trotzdem funktioniert das nicht. (ausführbar habe ich's gemacht)

    hast Du eine Idee? - oder irgendjemand?

    gruß
    prostetnik

    P.S.
    :-(Mann, ist das kompliziert einen einzigen Befehl automatisch abzusetzen - sitze nun schon seit Stunden daran - bis ich mitbekommen habe dass die System-Level nicht mehr "in sind")
    intel Ivy i5 +ASRock B75 Pro3-M + 32 GB + openSUSE Leap 15.3

  11. #11
    Registrierter Benutzer
    Registriert seit
    Sep 2002
    Ort
    Berlin
    Beiträge
    707
    ...habe eben bemerkt, dass der Befehl auch *nicht* reicht.
    wenn ich ihn vor dem schutdown per hand eingebe, funktioniert es ebenfalls nicht richtig.

    Jetzt verstehe ich garnichts mehr!


    edit: habe das *nicht* vergessen
    Geändert von prostetnik (25.06.16 um 12:27 Uhr)
    intel Ivy i5 +ASRock B75 Pro3-M + 32 GB + openSUSE Leap 15.3

  12. #12
    Registrierter Benutzer
    Registriert seit
    Dec 2003
    Ort
    Dettenhausen
    Beiträge
    22.062
    Bei umount solltest Du den lokalen mountpoint als Option übergeben...
    Ich bin root - ich darf das.

Ähnliche Themen

  1. Neues Suse 12.2 und Virtualbox Headless beim Boot mit systemd?
    Von smartysmart34 im Forum System installieren und konfigurieren
    Antworten: 10
    Letzter Beitrag: 28.11.12, 21:19
  2. systemd: verstecktes Mounten
    Von bärnd im Forum System installieren und konfigurieren
    Antworten: 1
    Letzter Beitrag: 07.03.12, 14:17
  3. SuSI 12.1 - Start mit systemd
    Von pibi im Forum System installieren und konfigurieren
    Antworten: 8
    Letzter Beitrag: 04.01.12, 07:51
  4. Suse 12.1 start mit systemd, was ist Unterschied zu systemV?
    Von timmbo im Forum System installieren und konfigurieren
    Antworten: 4
    Letzter Beitrag: 14.12.11, 21:32
  5. OpenSUSE 11.4 und systemd
    Von roadracer im Forum System installieren und konfigurieren
    Antworten: 0
    Letzter Beitrag: 14.04.11, 15:41

Lesezeichen

Berechtigungen

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