Filen /etc/udev/rules.d/70-persistent-net.rules
genereres automatisk på et Linux-system med udev, hvis det ikke eksisterer, under start på nytt. Men jeg vil vite hvordan du lager denne reglerfilen (med en kommando) uten å starte serveren på nytt.
Jeg googlet rundt en stund og fant ut at regelfilen er generert av dette skriptet:
/lib/udev/write_net_rules
Det er imidlertid umulig å kjøre dette skriptet fra kommandolinjen, siden (antar jeg) det vil bli startet av udev, med noen miljøvariabler satt riktig. Å starte den manuelt skriver ut feilmeldingen «mangler $ INTERFACE». Selv om jeg setter env-variabelen INTERFACE = eth0 før skriptet startes, blir det fortsatt skrevet ut feil «mangler gyldig samsvar». For ikke å nevne at jeg har to grensesnitt (eth0
og eth1
), og jeg vil at regelfilen skal genereres for begge.
Jeg tenkte også å utløse udev-hendelser som dette, og håpet at det vil starte skriptet fra udev selv, men ingenting endres:
udevadm trigger --type=devices --action=change
Så, vet noen hvordan regenererer du de vedvarende nettreglene i fil /etc/udev/rules.d/70-persistent-net.rules
uten omstart?
Kommentarer
Svar
Ifølge mennesket side --action=change
er standardverdien for udevadm
.
-c, --action=ACTION Type of event to be triggered. The default value is change.
Derfor bør du prøve --action=add
i stedet. Det skal hjelpe:
/sbin/udevadm trigger --type=devices --action=add
Kommentarer
- intel_rapl: ingen gyldige rapl-domener funnet i pakke 0
Svar
I Ubuntu Server 16.04LTS eksisterer ikke 70-persistent-net.rules.
alt jeg gjorde var å kjøre:
ln -s /dev/null /etc/udev/rules.d/80-net-setup-link.rules
Opprett deretter filen ved hjelp av
sudo vi /etc/systemd/network/10-internet.link
og legg til følgende
[Match] Path=pci-0000:(your device mac address) [Link] Name=eth0 (or whatever you want to name it)
:wq
for å lagre filen
Start deretter på nytt og juster filen / etc / nettverk / grensesnitt. Start deretter på nytt.
Kommentarer
- Spørsmålet er " Hvordan regenererer du 70-persistent-net.rules uten omstart? " Svaret ditt inneholder to omstart. Hvordan er dette svaret på spørsmålet?
Svar
Jeg hadde det samme problemet, men jeg la merke til at jeg kunne fortsatt se grensesnittene i ip addr
liste. Jeg brukte følgende (som rot):
# ip addr # to get my mac addresses # export INTERFACE=eth0; export MATCHADDR="xx:xx:xx:xx:xx:xx"; /lib/udev/write_net_rules # replace the 00"s with the real mac addr
Gjenta for hvert grensesnitt. Dette ble brukt til å «gjenopprette» filen min. (Merk: en påkallelse vil liste opp alle grensesnittene + legge til navn for å matche en, så jeg anbefaler deg å kikke på utdatafilen etter en påkallelse)
Det er definitivt forskjeller mellom OS-er og nåværende UDEV-implementeringer og støtteskript For å merke seg brukte jeg CentOS 6.8 da jeg gjorde dette.
Kreditt – Jeg refererte mest til dette nettstedet. Det er en kommentar noen tråder ned som snakker om å endre skriptet, men jeg foretrakk å bruke miljøvariabler som det var renere: https://access.redhat.com/discussions/1240213
Kommentarer
- Crap – vent. Jeg ' beklager, det var kommandoen som ikke fungerte. Jeg må oppdatere svaret med trinnet jeg gjorde
- Ok, jeg ' har oppdatert hvordan jeg faktisk fikset meg. Håper det fungerer hvis det gjelder din situasjon.
70-persistent-net.rules
eller/lib/udev/write_net_rules
skript. Derfor kan jeg ' t sjekke, men antagelig er$INTERFACE
variabelen satt i selve skriptet. Mest sannsynlig blir det bestått som et argument. Kan du vise oss innholdet i skriptet?$INTERFACE
variabel. Det er mye flere variabler som bare brukes, aldri erklært. Det ' s fordi det kalles av udev, og udev setter alle env-variabler før det kjører skriptet ved oppstart.