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-Key: 6086807085

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

Printed on: April 28, 2024 at 09:04 o'clock

Member: godlie
godlie Feb 22, 2023 at 14:25:23 (UTC)
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
Mitglied: 6017814589
Solution 6017814589 Feb 22, 2023 updated at 17:36:38 (UTC)
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
Member: Paul123
Paul123 Feb 27, 2023 at 16:22:31 (UTC)
Goto Top
Danke, das hat funktioniert!