Dicas que me são ou foram uteis
Objetivo simples e direto de compartilhar experiências!
quinta-feira, 20 de janeiro de 2011
zipar e remover diretorios por data
for dir in `ls | grep "2010-11-" | grep -v "\.gz"` ; do nice -n 19 tar -Ppzcvf $dir.tar.gz $dir ; sleep 1 ; echo "rm -rfv $dir" ; nice -n 19 rm -rfv $dir ; done
baixar / subir informix
# Para baixar o informix:
cdr stop
onmode -yulck
----------------------------------------------------
# Para subir informix:
oninit -v
Aparecerá:
verbose output compete mode 5
----------------------------------------------------
# Para confirmar se subiu corretamente, digite:
onstat -
status informix
online
----------------------------------------------------
Para obter informações do informix:
onstat -g osi
cdr stop
onmode -yulck
----------------------------------------------------
# Para subir informix:
oninit -v
Aparecerá:
verbose output compete mode 5
----------------------------------------------------
# Para confirmar se subiu corretamente, digite:
onstat -
status informix
online
----------------------------------------------------
Para obter informações do informix:
onstat -g osi
Apresentando a versão do linux
Percebemos que alguns casos, não sabemos exatamente qual a versão do Linux que está instalada, pois por alguma motivo o arquivo /etc/issue ou mesmo o /etc/redhat-release foi alterado manualmente.
Com o comando abaixo, podemos verificar várias informações sobre a versão que está instalada, confirmando suspeitas ou mesmo gerando uma certeza de versão.
lsb_release –a
Informaçoes:
LSB Version: :core-3.1-amd64:core-3.1-ia32:core-3.1-noarch:graphics-3.1-amd64:graphics-3.1-ia32:graphics-3.1-noarch
Distributor ID: RedHatEnterpriseServer
Description: Red Hat Enterprise Linux Server release 5.5 (Tikanga)
Release: 5.5
Codename: Tikanga
Com o comando abaixo, podemos verificar várias informações sobre a versão que está instalada, confirmando suspeitas ou mesmo gerando uma certeza de versão.
lsb_release –a
Informaçoes:
LSB Version: :core-3.1-amd64:core-3.1-ia32:core-3.1-noarch:graphics-3.1-amd64:graphics-3.1-ia32:graphics-3.1-noarch
Distributor ID: RedHatEnterpriseServer
Description: Red Hat Enterprise Linux Server release 5.5 (Tikanga)
Release: 5.5
Codename: Tikanga
Links Simbólicos e Físicos
Segue uma dica, sobre como verificar se tem algum link simbólico ou hard-link, apontando para o arquivo em questão.
Listagem 11. Localizando links físicos para o mesmo arquivo
ian@attic4:~$ find lpi104-6 -samefile lpi104-6/file1
lpi104-6/subdir/file3sub
lpi104-6/file3
lpi104-6/file1
ian@attic4:~$ ls -i lpi104-6/file1
1680103 lpi104-6/file1
ian@attic4:~$ find lpi104-6 -inum 1680103
lpi104-6/subdir/file3sub
lpi104-6/file3
lpi104-6/file1
Para verificar quais arquivos são vinculados simbolicamente a um determinado arquivo, você poderá usar o comando find e a opção -lname com um nome de arquivo, como ilustrado na Listagem 12. Os links podem usar um caminho relativo ou absoluto, portanto, é preciso usar um asterisco à esquerda no nome para localizar todas as correspondências.
Listagem 12. Localizando arquivos simbólicos para um arquivo ou diretório
ian@attic4:~$ find lpi104-6 research/lpi104-6 -lname "*file1"
lpi104-6/file6
lpi104-6/file5
lpi104-6/file4
research/lpi104-6/file4
Listagem 11. Localizando links físicos para o mesmo arquivo
ian@attic4:~$ find lpi104-6 -samefile lpi104-6/file1
lpi104-6/subdir/file3sub
lpi104-6/file3
lpi104-6/file1
ian@attic4:~$ ls -i lpi104-6/file1
1680103 lpi104-6/file1
ian@attic4:~$ find lpi104-6 -inum 1680103
lpi104-6/subdir/file3sub
lpi104-6/file3
lpi104-6/file1
Para verificar quais arquivos são vinculados simbolicamente a um determinado arquivo, você poderá usar o comando find e a opção -lname com um nome de arquivo, como ilustrado na Listagem 12. Os links podem usar um caminho relativo ou absoluto, portanto, é preciso usar um asterisco à esquerda no nome para localizar todas as correspondências.
Listagem 12. Localizando arquivos simbólicos para um arquivo ou diretório
ian@attic4:~$ find lpi104-6 research/lpi104-6 -lname "*file1"
lpi104-6/file6
lpi104-6/file5
lpi104-6/file4
research/lpi104-6/file4
Calculando quantidade de memória necessária MySQL - Linux
Objetivo Calcular quantidade de memória necessária para o MySQL no Linux
Pré requisitos Acesso root a maquina.
Segue abaixo o link para calcular o número de memória necessária para utilização do MySQL . O cálculo é baseado nas seguintes informações:
mem total mysql = key_buffer + max_connections * (join_buffer + record_buffer + sort_buffer + thread_stack + tmp_table_size)
Note que o tamanho total de memória depende diretamente do multiplicador de conexões abertas (max_connections)
LINK : http://www.omh.cc/mycnf/
Outras informações:
my.cnf de exemplo, copie o cole-o no link acima:
[client]
port = 3306
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
port = 3306
basedir = /usr
tmpdir = /tmp
language = /usr/share/mysql/english
skip-external-locking
skip-name-resolve
key_buffer = 25M
max_allowed_packet = 50M
thread_stack = 128K
thread_cache_size = 8
max_connections = 120
query_cache_limit = 1M
query_cache_size = 20M
[mysqldump]
quick
quote-names
max_allowed_packet = 50M
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
Pré requisitos Acesso root a maquina.
Segue abaixo o link para calcular o número de memória necessária para utilização do MySQL . O cálculo é baseado nas seguintes informações:
mem total mysql = key_buffer + max_connections * (join_buffer + record_buffer + sort_buffer + thread_stack + tmp_table_size)
Note que o tamanho total de memória depende diretamente do multiplicador de conexões abertas (max_connections)
LINK : http://www.omh.cc/mycnf/
Outras informações:
my.cnf de exemplo, copie o cole-o no link acima:
[client]
port = 3306
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
port = 3306
basedir = /usr
tmpdir = /tmp
language = /usr/share/mysql/english
skip-external-locking
skip-name-resolve
key_buffer = 25M
max_allowed_packet = 50M
thread_stack = 128K
thread_cache_size = 8
max_connections = 120
query_cache_limit = 1M
query_cache_size = 20M
[mysqldump]
quick
quote-names
max_allowed_packet = 50M
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
O que fazer quando receber a mensagem: "/bin/rm: Argument_list_too_long" ?
Para quem está tentando limpar um diretório e recebe este erro:
# rm -f *
-bash: /bin/rm: Argument list too long
Há tres modos de resolver isto, um é usando o for na linha de comando :
for i in *; do rm -f $i; done
Ou usando o famoso canivete suiço do mundo Unix, o find :
find . -name '*' -print0 | xargs -0 rm
Outra solução, que achei mais inteligente é feita utilizando o xargs:
$ ls | xargs -n10 -i rm {}
# rm -f *
-bash: /bin/rm: Argument list too long
Há tres modos de resolver isto, um é usando o for na linha de comando :
for i in *; do rm -f $i; done
Ou usando o famoso canivete suiço do mundo Unix, o find :
find . -name '*' -print0 | xargs -0 rm
Outra solução, que achei mais inteligente é feita utilizando o xargs:
$ ls | xargs -n10 -i rm {}
Instalação e configuração de um servidor de NTP (stratum 1)
Objetivo Instalar e configurar um servidor de NTP (stratum 1)
Pré requisitos Acesso root a maquina.
Há vários serviços de NTP espalhados pelo mundo, e que são sincronizados através de uma reação química, e para cada estimulo que esta reação sofre, é decrementado 1 milésimo de segundo, para a primeira máquina que recebe estes dados é dado o nome de STRATUM 1, para a segunda máquina STRATUM 2, e assim por diante.
A Drogaraia, quer que uma máquina deles não sincronize com nenhum STRATUM, eles mesmos gostariam de ter este controle.
Pois bem, segue a forma de se criar um servidor de NTP na rede local (STRATUM 1).
1. Abra o arquivo /etc/ntp.conf e inclua as linhas:
server 127.127.1.1
fudge 127.127.1.1 stratum 10
2. Abra o arquivo /etc/rc.config.d/netdaemons, e altere as linhas:
export NTPDATE_SERVER=
export XNTPD=
Para:
export NTPDATE_SERVER=127.127.1.1
export XNTPD=1
3. Inicie o serviço de NTP
# /sbin/init.d/xntpd start
4. Visualizando as informações do NTP
# ntpq -p
5. Sincronizando o host1, com o servidor de NTP
# ntpdate
Pré requisitos Acesso root a maquina.
Há vários serviços de NTP espalhados pelo mundo, e que são sincronizados através de uma reação química, e para cada estimulo que esta reação sofre, é decrementado 1 milésimo de segundo, para a primeira máquina que recebe estes dados é dado o nome de STRATUM 1, para a segunda máquina STRATUM 2, e assim por diante.
A Drogaraia, quer que uma máquina deles não sincronize com nenhum STRATUM, eles mesmos gostariam de ter este controle.
Pois bem, segue a forma de se criar um servidor de NTP na rede local (STRATUM 1).
1. Abra o arquivo /etc/ntp.conf e inclua as linhas:
server 127.127.1.1
fudge 127.127.1.1 stratum 10
2. Abra o arquivo /etc/rc.config.d/netdaemons, e altere as linhas:
export NTPDATE_SERVER=
export XNTPD=
Para:
export NTPDATE_SERVER=127.127.1.1
export XNTPD=1
3. Inicie o serviço de NTP
# /sbin/init.d/xntpd start
4. Visualizando as informações do NTP
# ntpq -p
5. Sincronizando o host1, com o servidor de NTP
# ntpdate
Migrar usuário de HPUX para Linux
Objetivo: Migrar usuário de HPUX para Linux
Informação: As senhas no Linux são salvas em /etc/shadow e no HPUX elas ficam em /etc/passwd.
Uma maneira simples de migrar os usuários do HPUX para Linux é:
1º - Copia-se os usuários e grupos do HPUX
cat /etc/passwd
(selecione e copie todas as linhas referentes aos usuários que deseja levar para o Linux)
cat /etc/group
(selecione e copie todos os grupos “não padrão” para levar para o Linux)
2º - Adicione estas informações no Linux
Obs.: faça um backup do /etc/shadow e do /etc/passwd por segurança - ( cp /etc/passwd /etc/passwd.BKP e cp /etc/shadow /etc/shadow.BKP)
Utilize o comando vipw (proporciona acesso ao passwd não permitindo a escrita ao mesmo tempo por mais de um usuário ) – Nunca use o “vi” para editar o passwd é bem arriscado.
vipw (com ele aberto, insira os usuário copiados do passwd do HPUX e saia salvando. Quando perguntar se deseja editar o shadow, coloque não (n) )
3º - Adicione os grupos copiados do HPUX ao /etc/group
# vi /etc/group
4º - Utilize o utilitário “pwconv” para converter o formato de senhas no passwd para o formato do Linux com as senhas no shadow
# pwconv
Veja com um cat /etc/shadow que os usuários apareceram com a senha criptografada normalmente.
5º - Ajustar o “home” e “Shell” dos usuários migrados
Crie um arquivo contendo as informações que você copiou inicialmente do HPUX (consideraremos aqui no exemplo o arquivo chamado arquivo-users-hpux.txt)
# vi arquivo-users-hpux.txt
Criando o home
for i in $(cat arquivo-users-hpux.txt | cut –d: -f1 ); do mkdir /home/$i; chown –R $i:users /home/$i; chmod –R 770 /home/$i; done
Ajustando os shells (padrão linux = /bin/bash):
for I in $( cat arquivo-users-hpux.txt | cut –d: -f1); do usermod –s “/bin/bash” $i; done
Vale lembrar que se deve checar também se os usuários estão em seus respectivos grupos
Checando os IDs dos usuários:
for i in $( cat arquivo-users-hpux.txt | cut –d: -f1); do id $i; done
Informação: As senhas no Linux são salvas em /etc/shadow e no HPUX elas ficam em /etc/passwd.
Uma maneira simples de migrar os usuários do HPUX para Linux é:
1º - Copia-se os usuários e grupos do HPUX
cat /etc/passwd
(selecione e copie todas as linhas referentes aos usuários que deseja levar para o Linux)
cat /etc/group
(selecione e copie todos os grupos “não padrão” para levar para o Linux)
2º - Adicione estas informações no Linux
Obs.: faça um backup do /etc/shadow e do /etc/passwd por segurança - ( cp /etc/passwd /etc/passwd.BKP e cp /etc/shadow /etc/shadow.BKP)
Utilize o comando vipw (proporciona acesso ao passwd não permitindo a escrita ao mesmo tempo por mais de um usuário ) – Nunca use o “vi” para editar o passwd é bem arriscado.
vipw (com ele aberto, insira os usuário copiados do passwd do HPUX e saia salvando. Quando perguntar se deseja editar o shadow, coloque não (n) )
3º - Adicione os grupos copiados do HPUX ao /etc/group
# vi /etc/group
4º - Utilize o utilitário “pwconv” para converter o formato de senhas no passwd para o formato do Linux com as senhas no shadow
# pwconv
Veja com um cat /etc/shadow que os usuários apareceram com a senha criptografada normalmente.
5º - Ajustar o “home” e “Shell” dos usuários migrados
Crie um arquivo contendo as informações que você copiou inicialmente do HPUX (consideraremos aqui no exemplo o arquivo chamado arquivo-users-hpux.txt)
# vi arquivo-users-hpux.txt
Criando o home
for i in $(cat arquivo-users-hpux.txt | cut –d: -f1 ); do mkdir /home/$i; chown –R $i:users /home/$i; chmod –R 770 /home/$i; done
Ajustando os shells (padrão linux = /bin/bash):
for I in $( cat arquivo-users-hpux.txt | cut –d: -f1); do usermod –s “/bin/bash” $i; done
Vale lembrar que se deve checar também se os usuários estão em seus respectivos grupos
Checando os IDs dos usuários:
for i in $( cat arquivo-users-hpux.txt | cut –d: -f1); do id $i; done
Manutenção de volumes HPUX
Objetivo Manutenção de volumes no HPUX.
Pré requisitos Acesso root a maquina.
Para verificar as LUNS que o SO enxerga com seus respectivos WWN e device files (/dev/dsk/cXtYdZ)
# powermt display dev=all |more
Para verificar as controladoras de fc no HPUX
# ioscan –fnC fc
Para verificar os WWN das controladoras do servidor
# fcmsutil /dev/fcXX
(este especial file vira do resultado do comando ioscan –fnC fc)
Para verificar espaço livre no VG
#vgdisplay –v nome do vg
Para adicionar um disco no VG (Nota :se o disco a ser acrescentado for maior do que o primeiro disco que criou o VG, o novo disco terá somente o tamanho do primeiro disco do VG disponível para ser utilizado. Daí o porque deve se analisar o tamanho da LUN a ser criada. E melhor que seja do tamanho dos discos que fazem parte do VG em questão)
# vgextend /dev/vgXX /dev/dsk/cXdYtZ
Para criar um lvol com distribute (formatação física)
# lvcreate –L tamanho em MB –D y –s g –n nome do lv /dev/vgXX
Para criar um lvol sem distribute (formatação física)
# lvcreate –L tamanho em MB –n nome do lv /dev/vgXX
Na CRIACAO/FORMATACAO de um file system (formatação lógica)
# newfs –F vxfs –o large files /dev/rvgXX/lv_XX
(aqui tem o r de caracter mesmo)
Na EXTENCAO de um file system já existente, SEM a perda dos dados (extensão/formatação física)
# lvextend –L novo tamanho em MB /dev/vgXX/lv_XX
Na EXTENÇÃO de um file system já existente, SEM a perda dos dados (extensão/formatação lógica)
# extendfs –F vxfs /dev/vgXX/lv_XX
Pré requisitos Acesso root a maquina.
Para verificar as LUNS que o SO enxerga com seus respectivos WWN e device files (/dev/dsk/cXtYdZ)
# powermt display dev=all |more
Para verificar as controladoras de fc no HPUX
# ioscan –fnC fc
Para verificar os WWN das controladoras do servidor
# fcmsutil /dev/fcXX
(este especial file vira do resultado do comando ioscan –fnC fc)
Para verificar espaço livre no VG
#vgdisplay –v nome do vg
Para adicionar um disco no VG (Nota :se o disco a ser acrescentado for maior do que o primeiro disco que criou o VG, o novo disco terá somente o tamanho do primeiro disco do VG disponível para ser utilizado. Daí o porque deve se analisar o tamanho da LUN a ser criada. E melhor que seja do tamanho dos discos que fazem parte do VG em questão)
# vgextend /dev/vgXX /dev/dsk/cXdYtZ
Para criar um lvol com distribute (formatação física)
# lvcreate –L tamanho em MB –D y –s g –n nome do lv /dev/vgXX
Para criar um lvol sem distribute (formatação física)
# lvcreate –L tamanho em MB –n nome do lv /dev/vgXX
Na CRIACAO/FORMATACAO de um file system (formatação lógica)
# newfs –F vxfs –o large files /dev/rvgXX/lv_XX
(aqui tem o r de caracter mesmo)
Na EXTENCAO de um file system já existente, SEM a perda dos dados (extensão/formatação física)
# lvextend –L novo tamanho em MB /dev/vgXX/lv_XX
Na EXTENÇÃO de um file system já existente, SEM a perda dos dados (extensão/formatação lógica)
# extendfs –F vxfs /dev/vgXX/lv_XX
Identificando LUN´s do Storage EVA, no HPUX (2 formas)
Para identificarmos as LUN´s de um EVA no HPUX, segue um comando simples porém eficaz.
Exemplo: Tentando identificar o WWID da LUN que está o disco 272.
# scsimgr get_attr -D /dev/rdisk/disk272 -a wwid
Serão então apresentadas as seguintes informações:
SCSI ATTRIBUTES FOR LUN : /dev/rdisk/disk272
name = wwid
current = 0x600508b400103b8e00010000011c0000
default =
saved =
Reparem que o ítem “current”, é o WWID da LUN do disco 272.
Também no CD do HP StorageWorks Storage System Scripting Utility CD (SSSU) , desde a versão 8 é distribuído um script chamado evainfo.
Executando o script em questão, são apresentadas informações mais completas sobre os discos.
# evainfo -aP
Resultado:
Devicefile Array WWNN Capacity Controller/Port/Mode
/dev/rdisk/disk20 5001-4380-04C7-2D90 6005-08B4-000F-3EED-0000-5000-003A-0000 204800MB Ctl-A/FP-2/Optimized
/dev/rdisk/disk21 5001-4380-04C7-2D90 6005-08B4-000F-3EED-0000-5000-0042-0000 204800MB Ctl-A/FP-1/Optimized
/dev/rdisk/disk22 5001-4380-04C7-2D90 6005-08B4-000F-3EED-0000-5000-004A-0000 20480MB Ctl-A/FP-1/Optimized
/dev/rdisk/disk23 5001-4380-04C7-2D90 6005-08B4-000F-3EED-0000-5000-004E-0000 71680MB Ctl-A/FP-2/Optimized
/dev/rdisk/disk24 5001-4380-04C7-2D90 6005-08B4-000F-3EED-0000-5000-0052-0000 10240MB Ctl-A/FP-1/Optimized
/dev/rdisk/disk25 5001-4380-04C7-2D90 6005-08B4-000F-3EED-0000-5000-0056-0000 10240MB Ctl-A/FP-1/Optimized
/dev/rdisk/disk26 5001-4380-04C7-2D90 6005-08B4-000F-3EED-0000-5000-005A-0000 20480MB Ctl-A/FP-1/Optimized
/dev/rdisk/disk27 5001-4380-04C7-2D90 6005-08B4-000F-3EED-0000-5000-005E-0000 245760MB Ctl-A/FP-1/Optimized
Exemplo: Tentando identificar o WWID da LUN que está o disco 272.
# scsimgr get_attr -D /dev/rdisk/disk272 -a wwid
Serão então apresentadas as seguintes informações:
SCSI ATTRIBUTES FOR LUN : /dev/rdisk/disk272
name = wwid
current = 0x600508b400103b8e00010000011c0000
default =
saved =
Reparem que o ítem “current”, é o WWID da LUN do disco 272.
Também no CD do HP StorageWorks Storage System Scripting Utility CD (SSSU) , desde a versão 8 é distribuído um script chamado evainfo.
Executando o script em questão, são apresentadas informações mais completas sobre os discos.
# evainfo -aP
Resultado:
Devicefile Array WWNN Capacity Controller/Port/Mode
/dev/rdisk/disk20 5001-4380-04C7-2D90 6005-08B4-000F-3EED-0000-5000-003A-0000 204800MB Ctl-A/FP-2/Optimized
/dev/rdisk/disk21 5001-4380-04C7-2D90 6005-08B4-000F-3EED-0000-5000-0042-0000 204800MB Ctl-A/FP-1/Optimized
/dev/rdisk/disk22 5001-4380-04C7-2D90 6005-08B4-000F-3EED-0000-5000-004A-0000 20480MB Ctl-A/FP-1/Optimized
/dev/rdisk/disk23 5001-4380-04C7-2D90 6005-08B4-000F-3EED-0000-5000-004E-0000 71680MB Ctl-A/FP-2/Optimized
/dev/rdisk/disk24 5001-4380-04C7-2D90 6005-08B4-000F-3EED-0000-5000-0052-0000 10240MB Ctl-A/FP-1/Optimized
/dev/rdisk/disk25 5001-4380-04C7-2D90 6005-08B4-000F-3EED-0000-5000-0056-0000 10240MB Ctl-A/FP-1/Optimized
/dev/rdisk/disk26 5001-4380-04C7-2D90 6005-08B4-000F-3EED-0000-5000-005A-0000 20480MB Ctl-A/FP-1/Optimized
/dev/rdisk/disk27 5001-4380-04C7-2D90 6005-08B4-000F-3EED-0000-5000-005E-0000 245760MB Ctl-A/FP-1/Optimized
Obtendo serial HPUX
Obtendo o serial no HPUX
Execute o seguinte comando na console:
echo "sel dev 1;info;wait;il"cstm grep "System Serial Number"
ou
echo "sel dev 1;info;wait;il"cstm
Algumas das saídas do comando são
System Information for (atenas)
HPUX Model Number......: rp4440
HPUX Model String......: 9000/800/rp4440
Original Product Number: A9950A
Current Product Number.: A9950A
System Serial Number...: USE4615KPS
Hversion...............: 0x8940
Sversion...............: 0x491
Software Capabilities..: 0x100000f0
Execute o seguinte comando na console:
echo "sel dev 1;info;wait;il"cstm grep "System Serial Number"
ou
echo "sel dev 1;info;wait;il"cstm
Algumas das saídas do comando são
System Information for (atenas)
HPUX Model Number......: rp4440
HPUX Model String......: 9000/800/rp4440
Original Product Number: A9950A
Current Product Number.: A9950A
System Serial Number...: USE4615KPS
Hversion...............: 0x8940
Sversion...............: 0x491
Software Capabilities..: 0x100000f0
Assinar:
Postagens (Atom)