calculo do modulo 10 em shellscript

07 March, 2005
function modulo10()
{
cont_char=$(echo -n "$1" | wc -c)
cont_multiplicador=1

while [ $cont_char -ne 0 ]; do
char=$(echo $1 | cut -c $cont_char)
if [ $(($cont_multiplicador % 2)) == 1 ]; then
char_produto=$((char * 2))
else
char_produto=$((char * 1))
fi

if [ $char_produto -ge 10 ]; then
produto=$(($produto + $(echo $char_produto | cut -c 1) + $(echo $char_produto | cut -c 2)))
else
produto=$(($produto + $char_produto))
fi
cont_char=$(($cont_char - 1))
cont_multiplicador=$(($cont_multiplicador + 1))
done
if [ $(($produto % 10)) -eq 0 ]; then
echo "0"
else
echo $((10 - $(($produto % 10))))
fi
}

Niveis de execução de sistemas linux

07 March, 2005

O linux é capaz de operar em vários estados diferentes de sistema, cada um dos quais definido pelo conjunto de serviços disponibilizados ao usuário quando o respectivo estado está no controle do sistema. Oito desses niveis de execução estão disponiveis, embora tipicamente, apenas sete sejam de interesse do usuário. Por exemplo, os niveis de execução relevantes estão listados abaixo:

0 – Halt
1 – Modo monousuário
2 – Vazio (pode ser definido pelo usuário)
3 – Modo multiusuário sem janelas
4 – Vazio (pode ser definido pelo usuário)
5 – Modo multiusuário completo (com janelas)
6 – Reboot

- O nivel de execução default do sistema é configurado no arquivo /etc/inittab.
- O nivel de execução default do CentOS é o 3.
- Os niveis de execução 2 e 4 são usados, tipicamente, para configurações customizadas, as quais envolvem serviços que não são necessários nos niveis de execução 3 e 5 padrão.
- As designações de nivel de execução do CentOS ficam armazenadas em /etc/rc.d/ e cada nivel de execução possui sua própria pasta, e é numerada de acordo. Por exemplo, a pasta do nivel de execução 3 chama-se rc3.d.
- Se os serviços serão iniciados ou terminados, e em que ordem, dentro de cada nivel de execução, isso é determinado examinado os três primeiros caracteres de cada link simbolico começa com um S, este serviço será iniciado neste nivel de execução. Se começar com um K, ele será terminado. O inteiro de dois digitos que se segue ao primeiro caractere determina a ordem na qual este serviço será iniciado ou terminado. Quanto maior o numero, mais tarde seu destino será tratado.

transformar link padrão UUID em dispositivo no wheezy

07 March, 2005

Passei por um problema aqui com o novo Debian com comando df e outros que identificam o sistema de arquivos com um link simbólico
tipo UUID como /dev/disk/by-uuid/132a49f9-790a-49fb-3112-383e93187bf8 e isso é muito chato: a saída do comando é mais amplo e ilegível, difícil de decorar e o dispositivo atual não é mais identificado em alguns scripts.

a solução que encontrei foi criar o script abaixo e colocar ele em /etc/initramfs-tools/scripts/local-premount/rootdevice com o conteúdo:

 

#!/bin/sh
# transformar o link padrao do
# (UUID) no dispositivo normal.
set -e
[ "$1" = prereqs ] && exit 0
REALROOT=`readlink -f ${ROOT}`
[ "${REALROOT}" ] && echo "ROOT=${REALROOT}" >> /conf/param.conf
exit 0

 

colocar ele como executável:
chmod +x /etc/initramfs-tools/scripts/local-premount/rootdevice

e depois atualizar o initramfs:
update-initramfs -u

pronto tudo fica como era antes ;)…

Home