Filen /etc/udev/rules.d/70-persistent-net.rules
genereras automatiskt på ett Linux-system med udev, om det inte finns under starta om. Men jag skulle vilja veta hur man skapar den här reglerfilen (med ett kommando) utan att starta om servern.
Jag googlade ett tag och fann att reglerfilen genereras av det här skriptet:
/lib/udev/write_net_rules
Det är dock omöjligt att köra det här skriptet från kommandoraden, eftersom (jag antar) det vill startas av udev, med vissa miljövariabler korrekt inställda. När du startar det skrivs ut felmeddelandet ”saknar $ INTERFACE”. Även om jag ställer in env-variabeln INTERFACE = eth0 innan manuset startade skrivs det fortfarande ut fel ”saknar giltig matchning”. För att inte nämna att jag har två gränssnitt (eth0
och eth1
) och jag vill att reglerfilen ska skapas för båda.
Jag tänkte också utlösa utev-händelser som denna, hoppas att det kommer att starta skriptet från udev själv, men ingenting ändras:
udevadm trigger --type=devices --action=change
Så, vet någon hur man återskapar de ihållande nätreglerna i filen /etc/udev/rules.d/70-persistent-net.rules
utan omstart?
Kommentarer
Svar
Enligt människan sida --action=change
är standardvärdet för udevadm
.
-c, --action=ACTION Type of event to be triggered. The default value is change.
Testa därför bättre --action=add
istället. Det skulle hjälpa:
/sbin/udevadm trigger --type=devices --action=add
Kommentarer
- intel_rapl: inga giltiga rapl-domäner hittades i paket 0
Svar
I Ubuntu Server 16.04LTS existerar inte 70-persistent-net.rules.
allt jag gjorde var att köra:
ln -s /dev/null /etc/udev/rules.d/80-net-setup-link.rules
Skapa sedan filen med
sudo vi /etc/systemd/network/10-internet.link
och lägg till följande
[Match] Path=pci-0000:(your device mac address) [Link] Name=eth0 (or whatever you want to name it)
:wq
för att spara filen
starta om och justera filen / etc / nätverk / gränssnitt. Starta sedan om igen.
Kommentarer
- Frågan är " Hur återskapar man 70-persistent-net.rules utan omstart? " Ditt svar innehåller två omstarter. Hur är detta ett svar på frågan?
Svar
Jag hade samma problem, men jag märkte att jag kunde fortfarande se gränssnitten i ip addr
-lista. Jag använde följande (som root):
# 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
Upprepa för varje gränssnitt. Detta användes för att ”återställa” min fil. (Obs: en anrop kommer att lista alla gränssnitt + lägg till namn för att matcha ett, så jag rekommenderar att du tittar på utdatafilen efter en anrop)
Det finns definitivt skillnader mellan OS: s och nuvarande UDEV-implementeringar och supportskript För att notera, jag använde CentOS 6.8 när jag gjorde detta framgångsrikt.
Kredit – Jag hänvisade mest till den här webbplatsen. Det finns en kommentar några trådar ner som talar om att ändra skriptet, men jag föredrog att använda miljövariabler som det var renare: https://access.redhat.com/discussions/1240213
Kommentarer
- Skit – vänta. Jag ' ledsen, det var kommandot som inte fungerade. Jag måste uppdatera svaret med det steg jag gjorde
- Ok, jag ' har uppdaterat hur jag faktiskt fixade min. Hoppas det fungerar om det gäller din situation.
70-persistent-net.rules
eller/lib/udev/write_net_rules
skript. Därför kan jag ' t kontrollera, men förmodligen är$INTERFACE
variabeln inställd i själva skriptet. Troligtvis skickas det som ett argument. Kan du visa innehållet i skriptet?$INTERFACE
variabel. Det finns mycket fler variabler som helt enkelt används, aldrig deklareras. Det ' beror på att det anropas av udev och udev ställer in alla env-variabler innan det körs skriptet vid start.