Am 28. Januar 2016 um 20:52 schrieb Stefan U. Hegner <stefan@hegner-online.de>:
Am 28.01.2016 um 15:09 schrieb Jörg Schulz:
Auf jessie mit systemd werden die init.d/-Scripte von Hand evtl. gar nicht ausgeführt. ... dafür spricht ja meine Erfahrung. Wobei die /etc/rc.local ja beim Boot läuft.
Das "evtl." war wohl etwas missverständlich. Grundsätzlich gilt für eine Jessie Standardinstallation (mit systemd): wenn Du von Hand ein init.d-Script aufrufst, dann werden die start-/stop- Abschnitte in dem Script gar nicht ausgeführt, sondern ab ". /lib/lsb/initfunctions" auf systemd umgeleitet (systemctl start|stop|reload|... <service>). Was dann passieren soll musst/kannst Du in den systemd-Unit-Files konfigurieren.
Das wird bereits in ". /lib/lsb/init-functions" abgefangen. Versuch mal _SYSTEMCTL_SKIP_REDIRECT zu setzen. Siehe: /lib/lsb/init-functions.d/40-systemd Hmmm, damit tue ich mich gerade etwas schwer zu verstehen, was Du mir sagen willst. Du spielst vermutlich auf diesen Code-Schnippsel an:
# Redirect SysV init scripts when executed by the user if [ $PPID -ne 1 ] && [ -z "${init:-}" ] && [ -z "${_SYSTEMCTL_SKIP_REDIRECT:-}" ]; then case $(readlink -f "$0") in /etc/init.d/*) _use_systemctl=1 # Some services can't reload through the .service file, # but can through the init script. prog=${0##*/} service="${prog%.sh}.service" if [ "$(systemctl -p CanReload show $service 2>/dev/null)" = "CanReload=no" ] && [ "${1:-}" = "reload" ]; then _use_systemctl=0 fi ;; esac else export _SYSTEMCTL_SKIP_REDIRECT="true" fi
... bloß erwischt Du mich da jenseits meiner Fähigkeiten zu verstehen, was das genau macht, bzw. wo ich am sinnigsten Die Variable _SYSTEMCTL_SKIP_REDIRECT setze, wenn das ist, was ich will. Stefan.
Ja, das Schnipsel meine ich. :-) Setz mal in init.d/rc.local VOR das ". /lib/lsb/init-functions" z.B. ein "_SYSTEMCTL_SKIP_REDIRECT=no". Wenn Du jetzt von Hand "/etc/init.d/rc.local start" ausführst dann werden die start-/stop-Abschnitte wieder ausgeführt. Nur: das hilft Dir leider bei deinem ursprünglichen Problem nicht weiter. Wenn Du den Rechner herunterfährst gibst Du ja nicht von Hand "/etc/init.d/rc.local stop" ein und systemd macht das auch nicht. Die entsprechende Unit-Datei um den systemd dazu zu bringen ist /lib/systemd/system/rc-local.service. (rc.local.service ist ein symlink) Dort erkennt man, dass es auch nur ein ExecStart gibt. Was Du also brauchst ist ein "ExecStop" Und das gibt es auch :-) Du solltest aber besser nicht das Original /lib/systemd/system/rc-local.service verändern, sondern ein /etc/systemd/system/rc-local.service anlegen. Dieses überschreibt dann das Original kompett. Wenn Du nur was ändern möchtest (Du willst ja nur ein ExecStop hinzufügen) dann legst Du das Verzeichnis /etc/systemd/system/rc-local.service.d/ an und legst dort z.B. eine "my-rc-local-stop.conf" an mit: ----------------------- [Service] ExecStop=/etc/rc.local stop ----------------------- So bleibst das Original unangetastet und hast deine lokalen Änderungen unter /etc. Hab ich eben selbst getestet und funktioniert gut. Das _SYSTEMCTL_SKIP_REDIRECT brauchst Du dann natürlich nicht mehr :-) Grüße Jörg -- Schulz Gebäudeservice GmbH & Co. KG Dr.-Max-Ilgner-Straße 17 32339 Espelkamp Persönlich haftende Gesellschafterin: Gebäudereinigung Joachim Schulz Verwaltungsgesellschaft mbH Telefon: +49 5772 9100 0 Telefax: +49 5772 9100 11 Email: zentrale@sgbs.de Internet: www.sgbs.de Geschäftsführer: Joachim und Dirk Schulz, Norbert Kosica Handelsregister Bad Oeynhausen: HRA 5902, HRB 8591 UST-Id-Nr.: DE 125752702