kommandos beim start ausführen

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
Colttt
Beiträge: 2983
Registriert: 16.10.2008 23:25:34
Wohnort: Brandenburg
Kontaktdaten:

kommandos beim start ausführen

Beitrag von Colttt » 18.10.2017 16:25:24

Hallo,

viele wegen führen nach Rom, auch in Linux, nur welcher ist der beste zu empfehlenste?
Ich möchte 2 Kommandos beim Start des Servers absetzen, wie mach ich das am besten? eine systemd-unit schreiben? als cronjob it @reboot?
Es geht hier konkret um die beiden folgenden Befehle:

Code: Alles auswählen

echo lldp stop > /sys/kernel/debug/i40e/0000\:02\:00.0/command
echo lldp stop > /sys/kernel/debug/i40e/0000\:02\:00.1/command
Vielen dank vorab!
Debian-Nutzer :D

ZABBIX Certified Specialist

Benutzeravatar
hikaru
Moderator
Beiträge: 13559
Registriert: 09.04.2008 12:48:59

Re: kommandos beim start ausführen

Beitrag von hikaru » 18.10.2017 16:43:18

In der prä-Systemd-Ära machte man das gern über ein init-Script oder wenn einem die Aufgabe für ein eigenes Script zu banal erschien schrieb man die Befehle einfach in /etc/rc.local
Das geht auch heute noch, man muss aber dafür sorgen, dass Debianinitscripts installiert ist.

Es geht auch über Systemd-Units, aber das kann ich nicht aus dem Ärmel schütteln.

DeletedUserReAsG

Re: kommandos beim start ausführen

Beitrag von DeletedUserReAsG » 18.10.2017 16:43:58

State of teh art ist nun wohl systemd, aber letztlich hängt’s davon ab, wie’s dir am besten gefällt.

Colttt
Beiträge: 2983
Registriert: 16.10.2008 23:25:34
Wohnort: Brandenburg
Kontaktdaten:

Re: kommandos beim start ausführen

Beitrag von Colttt » 18.10.2017 20:50:32

Ok, und wie sieht das in systemd aus?, Früher hab ich sowas in rc.local gepackt
Debian-Nutzer :D

ZABBIX Certified Specialist

TomL

Re: kommandos beim start ausführen

Beitrag von TomL » 18.10.2017 21:21:03

Service-Unit anlegen:

Code: Alles auswählen

nano /etc/systemd/system/set-kernel-param.service

Code: Alles auswählen

[Unit]
Description=Kernel-Parameter für ?xyz? setzen
DefaultDependencies=no
After=basic.target

[Service]
Type=oneshot
ExecStart=/usr/bin/bash -c '/usr/bin/echo  lldp stop >  /sys/kernel/debug/i40e/0000\:02\:00.0/command'
ExecStart=/usr/bin/bash -c '/usr/bin/echo  lldp stop >  /sys/kernel/debug/i40e/0000\:02\:00.1/command'

[Install]
WantedBy=multi-user.target
Service-Unit direkt starten:

Code: Alles auswählen

systemctl start set-kernel-param.service
Auf Fehler prüfen:

Code: Alles auswählen

systemctl status set-kernel-param.service
Wenn fehlerfrei, Service-Unit für den Systemstart aktivieren:

Code: Alles auswählen

systemctl enable set-kernel-param.service
Alles als "root" durchführen. Möglich, dass das Timing "after basic.target" nicht passt und die Parameter zu spät gesetzt werden.... tja... dann muss man es an ein anderes Target hängen, welches früher angezogen wird. Sieht komplizierter aus, als es ist... aber die Möglichkeiten sind nicht mehr mit rc.local vergleichbar.

Benutzeravatar
smutbert
Moderator
Beiträge: 8320
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: kommandos beim start ausführen

Beitrag von smutbert » 18.10.2017 22:06:44

Das sysfs kann man auch mit Debiansysfsutils manipulieren. Instinktiv hätte ich also das installiert und in /etc/sysfs.conf so etwas wie

Code: Alles auswählen

kernel/debug/i40e/0000\:02\:00.0/command = "lldp stop"
kernel/debug/i40e/0000\:02\:00.1/command = "lldp stop"
eingetragen. (Ich vermute die \ sind nicht notwendig)

Colttt
Beiträge: 2983
Registriert: 16.10.2008 23:25:34
Wohnort: Brandenburg
Kontaktdaten:

Re: kommandos beim start ausführen

Beitrag von Colttt » 23.10.2017 16:16:51

na toll noch mehr möglichkeiten..welche ist nun am schönsten oder gar am richtigsten?
sysfsutils braucht halt nen paket aber hat ne schöne config datei

systemd ist überall dabei nur ist die Syntax noch nicht immer jedem klar.. beides hat vor und nachteile.. *grübel*
Debian-Nutzer :D

ZABBIX Certified Specialist

Benutzeravatar
smutbert
Moderator
Beiträge: 8320
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: kommandos beim start ausführen

Beitrag von smutbert » 23.10.2017 17:16:25

ich hab erst jetzt nach einer Suche (konnte weder mit lldp noch mit i40e etwas anfangen) gelesen, dass es hier um einen Netzwerktreiber geht, der in Form eines Kernelmoduls vorliegt.
Ich weiß nicht inwieweit man darauf zählen kann oder soll, dass das Modul früh (zum Beispiel im speziellen früh genug für sysfsutils) geladen wird.

Eine richtige(re) Vorgehensweise wäre aus meiner Sicht eine udev-Regel, die das erledigt, nachdem ein solches Gerät erkannt worden ist:

Code: Alles auswählen

ACTION=="add", SUBSYSTEM=="net", DRIVER=="i40e", RUN+="/bin/sh -c 'echo -n lldp stop > /sys%p/.../.../...'"
nur muss man bei dieser Variante irgendwie noch den richtigen Pfad im sysfs „erraten“ - ich würde einfach einmal zum Beispiel mit

Code: Alles auswählen

ACTION=="add", SUBSYSTEM=="net", DRIVER=="i40e", RUN+="/bin/sh -c 'echo /sys%p/ > /tmp/Pfad_im_sysfs'"
anfangen. Dann siehst du erstens ob die Regel funktioniert und wenn ja, also wenn »/tmp/Pfad_im_sysfs« angelegte wurde kannst du dich in dem Pfad der darin steht umsehen, wie du von dort aus zB nach ».../0000:02:00.1/command« findest – bei den vielen Abkürzungen (symlinks) im sysfs sollte das aber kein großes Problem sein.
So hättest du eine Regel, die auf allen Rechnern mit so einer Netzwerkkarte funktionieren sollte. Mit etwas mehr Geschick und eventuell der Hilfe von »udevadm« kommst du vielleicht auch ohne den echo-Befehl aus?

Bei der systemd-unit könntest du dem Abschnitt [Unit] so etwas wie

Code: Alles auswählen

ConditionPathExists=/sys/kernel/debug/i40e/0000\:02\:00.1/command
hinzufügen, damit der Befehl erst ausgeführt wird, wenn das Modul geladen, bzw. das Gerät erkannt wurde, allerdings kommt mir udev-Regel gefühlsmäßig richtiger vor.

DeletedUserReAsG

Re: kommandos beim start ausführen

Beitrag von DeletedUserReAsG » 23.10.2017 17:59:44

Colttt hat geschrieben: ↑ zum Beitrag ↑
23.10.2017 16:16:51
na toll noch mehr möglichkeiten..welche ist nun am schönsten oder gar am richtigsten?
Willkommen in der Welt freier Software, wo’s üblicherweise mehrere Wege gibt, einen Job zu erledigten, und man sich den, der einem selbst am symphatischsten ist, raussuchen kann.

Antworten