#!/bin/bash MAXCPUS=12 # find cpus CPUS=`ls -d /sys/devices/system/cpu/cpu[1-9]*` NR=`echo $CPUS | wc -w` let x=0 for cpu in $CPUS; do file=$cpu/online CPUONLINE[$x]=$file ENB[$x]=`cat $file` CPU[$x]=`basename $cpu` let x=$x+1 done let MAXCNT=$x MSKCNT=$MAXCNT if [ $MAXCNT -gt $MAXCPUS ]; then MSKCNT=$MAXCPUS fi let MSKCNT=2**$MSKCNT hotplug() { MSK=$1 ECHO="$MSK" CMD="" x=0 while [ $MSK -gt 0 ]; do let bit=$MSK'&'1 if [ $bit -eq 1 ]; then if [ ${ENB[$x]} -eq 1 ]; then cmd="disabling" ENB[$x]=0 num=0 else cmd="enabling" ENB[$x]=1 num=1 fi CMD="$CMD echo $num > ${CPUONLINE[$x]};" ECHO="$ECHO $cmd ${CPU[$x]}" fi let x=$x+1 let MSK=$MSK'>>'1 done echo $ECHO eval $CMD } let MSKCNT=$MSKCNT-1 for i in `seq $MSKCNT`; do hotplug $i done for i in `seq $MSKCNT`; do hotplug $i done exit 0