paul123
Goto Top

Zahl auslesen und verarbeiten sed CPUAffinity

Hallo,

Ich habe ein Shellscript:

Zeile=$(egrep processor /proc/cpuinfo | cut -d":" -f2 | tail -1)  

echo "Der Server hat $Zeile Cores"  

echo "Welches Cores wollen Sie zusammenfassen? Beispiel: 35,37,39 oder 0-4"  
read -e ant

echo "Die Core(s) $ant werden zusammengefasst und ausschließlich für den beispiel.service reserviert"  

CPUAffinity='CPUAffinity=$ant'  

sed -i '/StandardOutput=journal/ a '$CPUAffinity'' servicedatei  

Soweit so gut. Die definierten Cores werden mit Komma oder Bindestrich in die Config des Services eingetragen.

Ich möchte jetzt, dass automatisch die anderen Cores (auch wieder mit Komma oder Bindestrich getrennt) in eine andere Datei schreiben.

Beispiel:

20 Cores
Core 2,3,17 werden reserviert.

heißt in die andere Datei müssen "0,1,4,5,6,7,8,9,10,11,12,13,14,15,16,18,19,20" eingetragen werden.

Oder:

20 Cores
Core 10-20 werden reserviert.
heißt in die andere Datei müssen 0-10 eingetragen werden.

Oder:

20 Cores
Core 5-15 werden reserviert.
heißt in die andere Datei müssen "0,1,2,3,4,16,17,18,19,20" eingetragen werden.

kann man das zb mit sed abbilden?
Kann sed sowas?

Content-ID: 6086807085

Url: https://administrator.de/contentid/6086807085

Ausgedruckt am: 21.11.2024 um 16:11 Uhr

godlie
godlie 22.02.2023 um 15:25:23 Uhr
Goto Top
Hallo,

das ist eig. nicht so schwierig schau dir diesbezüglich mal http://linux.die.net/man/1/seq an:

% seq 12 14
12
13
14

grüße
6017814589
Lösung 6017814589 22.02.2023 aktualisiert um 18:36:38 Uhr
Goto Top
z.B.
CPUS=$(seq 0 $(($(grep -c ^processor /proc/cpuinfo)-1)))
RESERVED=2,3,4
DIFF=$(echo -n "$CPUS" | grep -Ev "^$(echo $RESERVED | tr ',' '|')$" | tr "\n" "," | sed -e 's/,$//')  
echo $DIFF
Paul123
Paul123 27.02.2023 um 17:22:31 Uhr
Goto Top
Danke, das hat funktioniert!