Bem, para alterar o indicador de led no VT console , você pode usar setleds
. Então, se você estiver em um VT, basta digitar
setleds
e você receberá seu status atual de líderes. Se você não quiser ativar o numlock, apenas acenda, você pode digitar:
setleds -L +num
É mais complicado em X e essa é a maneira "mais simples" de experimentá-lo. Por favor, note que o X geralmente é executado como root, assim você terá que verificar as permissões no X-windows tty ou executá-lo com privilégios de root. Geralmente X é tty7. /dev/console
deve funcionar sendo o console do sistema e por isso todos os VTs devem ser afetados.
sudo su -c 'setleds -L +num < /dev/tty7'
Acho que isso também funcionará:
sudo su -c 'setleds -L +num < /dev/console'
aqui está a lista de opções de luz
[{+|-}num] [{+|-}caps] [{+|-}scroll]
Se você não tem setleds
em seu sistema, meu palpite é que você pode obtê-lo deste pacote emerge sys-apps/kbd
.
Se você é mais de pessoa que gosta de codificar as coisas aqui está um link para o exemplo código para alterar leds no X . Eu não testei isso, mas apenas olhando o código parecia ok.
E aqui está um script de shell para fazer o que você queria originalmente. Ter bonés ou outros leds como indicadores de HDD.
#!/bin/bash
# Check interval seconds
CHECKINTERVAL=0.1
# console
CONSOLE=/dev/console
#indicator to use [caps, num, scroll]
INDICATOR=caps
getVmstat() {
cat /proc/vmstat|egrep "pgpgin|pgpgout"
}
#turn led on
function led_on()
{
setleds -L +${INDICATOR} < ${CONSOLE}
}
#turn led off
function led_off()
{
setleds -L -${INDICATOR} < ${CONSOLE}
}
# initialise variables
NEW=$(getVmstat)
OLD=$(getVmstat)
##
while [ 1 ] ; do
sleep $CHECKINTERVAL # slowdown a bit
# get status
NEW=$(getVmstat)
#compare state
if [ "$NEW" = "$OLD" ]; then
led_off ## no change, led off
else
led_on ## change, led on
fi
OLD=$NEW
done