quarta-feira, 31 de março de 2010

Comandos que Tratam Arquivos

cat

Cria, exibe e concatena arquivos

SINTAXE:

cat [arquivo entrada] [>> ou >] [arquivo saida]

DESCRIÇÃO

Arquivo de entrada nome do arquivo de entrada. Se não for especificado, os dados de entrada serão lidos da entrada padrão.

>

redireciona a saida padrão para o arquivo de saida

>>

inclui dados no final do arquivo
Arquivo de Saida arquivo que recebera os dados

COMENTARIOS:

Quando a entrada esta sendo feita no teclado, para se encerrar o arquivo deve-se teclar <CTRL><D>. Quando não forem especificadas as opções “>”, “>>” e “arquivo de saida”, o arquivo de entrada sera exibido na tela.

EXEMPLOS:

- Criar um arquivo:

isis:~ # cat > poema
batatinha quando nasce
espalha ramas pelo chao
^D
isis:~ #

- Para dar continuidade ao arquivo:

isis:~ # cat >> poema
a menina quando dorme
poe a mao no coracao
^D
isis:~ #

- Para visualizar o arquivo:

isis:~ # cat poema
batatinha quando nasce
espalha ramas pelo chao
a menina quando dorme
poe a mao no coracao
isis:~ #

- Para concatenar arquivos:

isis:~ # cat arq1 arq2 > arq3

isis:~ #

terça-feira, 30 de março de 2010

Comandos que Manipulam Diretorios – Parte 2

 

pwd

Exibe o percurso absoluto para o diretorio corrente.

SINTAXE:

pwd

COMENTARIO:

A resposta que se obtem quando se executa esse comando dependera da localização do diretorio corrente.

EXEMPLO:

isis:~ # pwd
/root
isis:~ #

isis:~ # cd /ontapeDir/
isis:/ontapeDir # cd Nocturne/
isis:/ontapeDir/Nocturne # cd Tue/
isis:/ontapeDir/Nocturne/Tue # pwd
/ontapeDir/Nocturne/Tue
isis:/ontapeDir/Nocturne/Tue #

cd

Permite mudar-se para outro diretorio.

SINTAXE:

cd [diretorio]

DESCRIÇÃO:

diretorio nome do diretorio para o qual o usuario deseja mudar-se. Aqui pode ser utilizado “..” que mudara para o diretorio pai do diretorio corrente.
Se o nome do diretorio for omitido o sistema executa o retorno  ao diretorio $HOME.

EXEMPLOS:

informix@isis:~> cd /usr/local/bin
informix@isis:/usr/local/bin>

informix@isis:/usr/local/bin> cd ../../lib
informix@isis:/usr/lib>

informix@isis:/usr/lib> cd
informix@isis:~> pwd
/usr/informix
informix@isis:~>

mkdir

permite criar diretorios.

SINTAXE:

mkdir nomedir

DESCRIÇÃO:

nomedir nome do diretorio a ser criado

COMENTARIOS:

O argumento “nomedir” pode ser tanto um caminho relativo como absoluto. As entradas “.” e “..” do diretorio são criadas automaticamente.

EXEMPLOS:

informix@isis:~> mkdir blog

informix@isis:~> mkdir /tmp/informix

rmdir

Permite remover um diretorio vazio

SINTAXE:

rmdir nomedir

DESCRIÇÃO:

nomedir nome do diretorio a ser removido

COMENTARIOS:

O comando rmdir remove somente diretorios que estejam vazios (diretorios que contenham somente as entradas “.” e “..”).

EXEMPLOS:

informix@isis:~> rmdir blog

informix@isis:~> rmdir /tmp/informix

segunda-feira, 29 de março de 2010

Comandos que Manipulam Diretorios

ls

Lista o conteudo de diretorios e as informações do arquivo. Por default a listagem é fornececida em ordem alfabetica.

SINTAXE:

ls [ –l –a –C –d –f –F –g –i –n –o –p –r –R –s –t –u –x ] pathname

DESCRIÇÃO:

-l listagem em formato longo. Fornece o tipo do arquivo os flags de proteção, o nº de links, o dono, grupo, tamanho do arquivo em bytes, e data da ultima modificação.
-a lista todas as entradas do diretorio, inclusive a entrada “.”, em colunas e em ordem alfabetica.
-C Classifica a listagem em multicolunas, este é o Default quando não é usado um argumento, e a saida é dada no terminal.
-d se o arquivo é um diretorio, lista somente a entrada “.”, ao usar com –g ou com –l, obtem-se dados do diretorio.
-f igual a opção –a, exceto que a listagem é fornecida obedecendo a ordem em que os arquivos se encontram no diretorio.
-F inclui na listagem uma “/” apos o arquivo diretorio e um “*” apos o arquivo executavel.
-g listagem igual a opção –l, exceto que o dono do arquivo não é impresso.
-i lista o numero i-node para cada arquivo na 1ª coluna.
-n igual a opção –l, exceto que é impresso a identificação do usuario e do grupo ao inves do nome do usuario e nome do grupo.
-o igual a opção –l, exceto que o grupo não é impresso.
-p coloca uma “/” apos o nome de cada arquivo, se for um diretorio.
-r inverte a ordem do sort na listagem.
-R lista todos os diretorios de forma recursiva.
-s fornece o tamanho de cada entrada no diretorio
-t classifica a listagem do diretorio pelo tempo da ultima modificação do arquivo, ao inves do nome.
-u utiliza para o sort da listagem, o tempo do ultimo acesso ao inves do tempo da ultima modificação. Esta opção não tem efeito se não for usada com –t ou –l.
-x classifica a saida no formato horizontal em multicolunas.

EXEMPLOS:

- listagem do diretorio corrente

isis:~ # ls
.bash_history  .exrc  .gnupg  .kbd  .ssh  .viminfo  acha  bin  inst-sys  mbox  vpd.properties
isis:~ #

- listagem dos arquivos do diretorio usr inclusive as entradas “.” e “..”

isis:~ # ls -a /usr
.  ..  X11R6  bin  games  include  informix  lib  lib64  local  sbin  share  src  tmp  x86_64-suse-linux
isis:~ #

- listagem colunada do diretorio corrente, com indicação dos arquivos diretorios e arquivos executaveis

isis:~ # ls -CF
.bash_history  .exrc  .gnupg/  .kbd/  .ssh/  .viminfo  acha*  bin/  inst-sys/  mbox  vpd.properties
isis:~ #

- listagem longa do diretorio corrente

isis:~ # ls -l
total 5978
-rw------- 1 root root    8784 Mar 24 15:16 .bash_history
-rw-r--r-- 1 root root    1332 Nov 23  2005 .exrc
drwx------ 2 root root     176 Sep 28 02:59 .gnupg
drwxr-xr-x 2 root root      80 Sep 25  2009 .kbd
drwx------ 2 root root     160 Jan 28 12:25 .ssh
-rw------- 1 root root   13947 Mar 24 08:33 .viminfo
-rwxr--r-- 1 root root      34 Mar 17 14:32 acha
drwxr-xr-x 2 root root      48 Dec  3  2008 bin
drwxr-xr-x 5 root root     208 Sep 25  2009 inst-sys
-rw------- 1 root root 6052506 Mar 10 11:23 mbox
-rw-r--r-- 1 root root   21286 Nov  4 10:18 vpd.properties
isis:~ #

ls

Observe no exemplo acima o nº de ligações do diretorio bin. No caso de diretorio, sempre havera inicialmente 2 links, o “.” e o “..”. A partir dai, cada diretorio que for criado sob esse diretorio sera contado um novo link para o diretorio.

sexta-feira, 26 de março de 2010

Script de Atualização do Logix Totvstec

A pedido do nosso amigo Caio estou postando aqui um script para a atualização da rpo do logix em producação – Online.
Ja sabemos que com o totvstec não é possivel fazer uma atualização da rpo on-line, porem com esse escript é possivel isso, lembrando que esse script foi escrito para o ambiente onde trabalho, então é preciso fazer a alteração de acordo com o ambiente de cada um. Peço a todos que prestem muita atenção e façam testes antes de colocar esses script em produção, pois pode parar o sistema.
Grande Abraço Caio, e use com cuidado, qualquer duvida estou a disposição.
#!/bin/bash
#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
# Amilcar de Jesus Moreti         @
# E-Mail - ajmoreti@yahoo.com.br  @
# MsN - acmoreti@msn.com          @
#          @
#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
#********************************************************************************
# Objetivo : Atualizar RPO com o Sistema em Producao                                              *
# Para atualizar programas em um sistema em producao, recomenda-se criar dois ambientes no arquivo*
# de configuracao (totvsappserver.ini) e posteriormente dois ambientes de trabalho na Ferramenta  *
# de desenvolvimento IDE.                                                                         *
#********************************************************************************
# Estrutura do diretorio para armazenamento das RPO's
# /totvs/apo/logix/aaaammdd_n
#
# Onde:
# dd - dia em que o RPO sera atualizado
# mm - mes que que o RPO sera atualizado
# aaaa - ano em que o RPO sera atualizado
# n - sequencia de atualizado
#
dDate="`date +%Y%m%d_%H`"
sTotvs="/totvs"
sTotvsTst="/totvs_tst"
sOrigDirApo="$sTotvsTst/apo/logix"
sOrigApo="$sOrigDirApo/lgxp102.rpo"
sDestDirApo="$sTotvs/apo/logix"
sDestDateApo="$sDestDirApo/$dDate"
sEnvironment="logix102"
sTotvsDirBin="$sTotvs/bin/appserver"
sTotvsIni="$sTotvsDirBin/totvsappserver.ini"
nVerVg=`df -P $sTotvs|sed 1d|awk '{print $5}'|awk -F% '{print $1}'`
if [ $nVerVg -ge 80 ]
then
        echo "Antes de atualizar a RPO por favor eliminar RPO's Antigas"
        echo "CUIDADO!!!"
        echo "NUNCA ELIMINE O PRIMEIRO ARQUIVO"
        for i in `ls -t $sDestDirApo`
        do
                echo "Eliminar a RPO $i ?"
                read sConfir
                if test $sConfir == y
                then
                rm -r -i $sDestDirApo/$i
                fi
        done
fi
echo "Fazer a copia da nova RPO de producao?"
read sConfirma
if test $sConfirma == "y"
then
        if test -d $sDestDateApo
        then
                echo "*** ATENCAO ***"
                echo "O diretorio SourcePath ja existe"
                echo "Isso significa que voce ja fez uma atualizacao nos ultimos 60 minutos"
                echo "Voce deseja criar uma nova SourcePath ?"
                read sConfirma
                if test $sConfirma == "y"
                then
                        dDate=`date +%Y%m%d_%H%M`
                        sDestDateApo=$sDestDirApo/$dDate
                        mkdir -p $sDestDateApo
                        cp $sOrigApo $sDestDateApo
                        sConf=$?
                        if test $sConf == 0; then
                                echo "Copia de RPO foi gerada com sucesso!!!"
                        fi
                fi
        else
                mkdir -p $sDestDateApo
                cp $sOrigApo $sDestDateApo
                sConf=$?
                if test $sConf == 0; then
                        echo "Copia de RPO foi gerada com sucesso!!!"
                fi
        fi
fi
echo ""
echo "O Arquivo totvsappserver.ini vai ser alterado para o acesso a RPO atualizada"
echo "Confirma a Operacao?"
read sConfirma
sDestDirApo="\/totvs\/apo\/logix"
sDestDateApo="$sDestDirApo\/$dDate"
sTmpFile="/tmp/totvsappserver.ini"
if test $sConfirma == "y"; then
        mv $sTotvsIni $sTmpFile
        sed -e '3s/.*/sourcepath='${sDestDateApo}'/' $sTmpFile > $sTotvsIni
        rm $sTmpFile
        mv $sTotvsIni $sTmpFile
        sed -e '17s/.*/sourcepath='${sDestDateApo}'/' $sTmpFile > $sTotvsIni
fi
Algumas observações a serem consideradas, para a logica desse script funcionar, obrigatoriamente tem que haver uma base de teste.
A primeira parte do script, verifico a tamanho da file system, para ver se não esta cheia, é preciso ficar atento, pois no meu ambiente trabalho com Volume Logico.
Abraços a todos.

Organização de Arquivos

Os arquivos são montados em uma estrutura que se compõe por um header do arquivo (conhecido como i-node) e a area de dados.
O header do arquivo (i-node) contem, entre outras, as seguintes informações:
  • identificação do dono e do seu grupo
  • tamanho do arquivo
  • endereço da area de dados do arquivo
  • data de criação, data da ultima alteração e data do ultimo acesso
  • codigo de identificação do arquivo
    • comum
    • diretorio
    • especial
Cada arquivo (conjunto de blocos de dados) tem apenas um i-node (header). O i-node não contem o nome do arquivo, mas apenas as informações do cabeçalho do arquivo. Os nomes dos arquivos ficam no diretorio. Junto com eles, fica o endereço do i-node do arquivo. O i-node tera entre outras informações, o endereço da area de dados do arquivo.
diretorio
NOME ARQUIVO
ENDEREÇO I-NODE
onconfig.prd
1148
sqlhosts
2212
smb.conf
92
i-node 2212
tipo de arquivo
identificação do dono
tamanho do arquivo
data da criação, atualização e ultimo acesso
endereço da area de dados
.
.
.
outras informações
area de dados
#**************************************************************************
#  Licensed Material - Property Of IBM
#  "Restricted Materials of IBM"
#  IBM Informix Dynamic Server
#  (c) Copyright IBM Corporation 1996, 2004 All rights reserved.
#
#   Title:      sqlhosts
#   Description:
#               Default sqlhosts file for running demos.
#
#**************************************************************************
# IANA (www.iana.org) assigned port number/service names for Informix:
# sqlexec 9088/tcp
# sqlexec-ssl 9089/tcp
prd     onipcshm        vishnu          prd
prdsoc  onsoctcp        vishnu          prdsrv
tst     onipcshm        isis            tst
tstsoc  onsoctcp        isis            tstsrv

Considerações sobre nomes de arquivos
  • O nome do arquivo deve ser descritivo
  • Não deve ter brancos
  • Não deve começar com “+” ou “-“ para não confundir com opções dos comandos
  • Não deve ter o mesmo nome de um comando do sistema ou de aplicativos
  • Nomes em letras maiusculas é diferente de nome em letras minusculas
  • Os arquivos que iniciam com “.” ficam na entrada do diretorio e necessitam de opção de comando para serem visualizados (exemplo; .profile)

quarta-feira, 24 de março de 2010

Diretorio Corrente e Diretorio Pai

Todos os diretorios (exeto o raiz) tem entradas para os nomes “.” e “..”, cuja função é exercer o elo entre o sistema de arquivos:
“.”  - representa o diretorio corrente
”..” – representa o pai do diretorio corrente
Considerando-se o diretorio corrente como home (isis:/home #), para especificar o caminho relativo para acessar o diretorio etc usaria-se:
isis:/home # cd ../etc
isis:/etc # – “..” acessa o diretorio pai que é o raiz (/)
Se nesse ponto quisesse editar o arquivo passwd no diretorio etc, usaria-se o percurso relativo:
isis:/home # vi ../etc/passwd
uma vez que o diretorio corrente é o home, basta informar o diretorio pai (/) .. + o nome do diretorio + o arquivo.
CONSIDERAÇÃO SOBRE NOMES DE PERCURSO
  • Um nome de percurso é uma lista de nomes separados por uma barra. Pode tamb+em ser um unico nome.
  • Os nomes iniciais da lista são diretorios e o nome final é o arquivo
  • Se o nome de percurso começa com uma barra, o percurso começa no diretorio raiz.
  • O nome “..” especifica o diretorio imediatamente superior ao diretorio corrente.
  • Nenhum espaço é permitido em nome de percurso.

terça-feira, 23 de março de 2010

Nomes de Percurso

Os arquivos no diretorio corrente podem ser referenciados simplesmente inserindo seus nomes, porem, arquivos que não estejam no diretorio corrente devem ser referenciados usando o nome de percurso ou pathname.
Um nome de percurso especifica um percurso de acesso que leve ao arquivo desejado (dentro do sistema de arquivos). O inicio do percurso pode ser dado no diretorio atual ou no diretorio raiz (/).
NOMES DE PERCURSO ABSOLUTO
O percurso absoluto começa com o diretorio raiz e descreve um unico caminho absoluto que desce atraves da arvore do sistema de arquivos, ate chegar ao arquivo em questão. O nome do percurso absoluto começa com uma barra (/) que indica o diretorio raiz e anexa-se o nome dos demais diretorios, separados por uma barra (/) ate chegar ao nome do arquivo.
Alguns caminhos absolutos são:
mozart:~ # cd /usr
mozart:/usr #
mozart:/usr # cd /var/lib/named/master
mozart:/var/lib/named/master #
mozart:/var/lib/named/master # cd /home/amilcar
mozart:/home/amilcar #
NOMES DE PERCURSO RELATIVO
O percurso relativo começa no diretorio corrente ( o diretorio onde se esta trabalhando) e descreve o caminho de diretorios ate o arquivo procurado. A maneira mais facil de distinguir um percurso absoluto de um percurso relativo, é observar que o percurso absoluto sempre começa no diretorio raiz (/).
Exemplo:
mozart:/home/amilcar # cd ..
mozart:/home #
mozart:/home # cd lean
mozart:/home/lean #
mozart:/home/lean # cd ../amilcar
mozart:/home/amilcar #
mozart:/home/amilcar # cd ../../etc/samba
mozart:/etc/samba #

sexta-feira, 19 de março de 2010

Sistemas de Arquivos

O Unix possui 3 tipos de arquivos: arquivos comuns, arquivos especiais e arquivos diretorios
ARQUIVOS COMUNS
São os arquivos utilizados para armazenar informações que podem ser dados ou programas.
Como arquivos comuns, o Unix reconhece: arquivos texto, bibliotecas, objetos e executaveis.
ARQUIVOS ESPECIAIS
São os arquivos que executam a conexão logica com os perifericos. Esses arquivos não possuem informações e estão sob o diretorio /dev.
Para cada periferico conectado ao sistema (terminal, disco, fita, etc) é criado um arquivo especial.
EXEMPLO:
tty0 – arquivo especial do terminal 0
console -  arquivo especial do console
lp0 – arquivo especial de impressora
fd0 – arquivo especial de disquete
ARQUIVOS DIRETORIOS
Os diretorios são considerados arquivos que contem informações sobre os nomes e endereços dos arquivos comuns, especiais e outros diretorios subordinados a ele.
Cada usuario tem um diretorio inicial chamdo diretorio de login. Quando o usuario entra no sistema, ele esta localizado no diretorio de login ou diretorio “HOME”. É possivel ao usuario mover-se de um diretorio para outro.
O diretorio onde o usuario esta trabalhando é chamado de diretorio corrente.
O sistema de arquivos de UNIX tem uma estrutura hierarquica em forma de arvore invertida. O ponto de partida dessa arvore é um diretorio chamado “root” (raiz) e a partir dele se ramificam os diretorios dos usuarios e os diretorios do sistema, sob os quais ficarão armazenados os arquivos ou os sub-diretorios.
UNIX e ou VMLINUZ – é o proprio kernel
bin – diretorio de comandos de uso geral
etc – diretorio de comandos (hp-ux) e arquivos de configurações do administrador
tmp – diretorio usado para arquivos temporarios. seu conteudo é distruido no boot (opcional)
hi/bin – contem copiladores e comandos de uso geral
/etc – contem a maioria dos arquivos de configurações do sistema.
/lib – contem as bibliotecas de codigos objetos e alguns utilitarios relacionados a ele
/usr – contem
alguns comandos, arquivos de log, arquivos de administração do sistema, ferramentas de diagnosticos, arquivos de controle de spool, arquivos de MAN
/mnt – diretorio disponivel para montagem de file system que se queira criar sob o raiz
/home – diretorio de login dos usuarios
/stand ou /boot – contem arquivos de inicialização
/tmp – utilizado para armazenar arquivos temporarios
/dev – contem arquivos especiais (devices)
/sbin – arquivos de uso do root

quarta-feira, 17 de março de 2010

Shell – Parte 4

Recursos adicionais do Korn Shell
alias
Apelida comandos Unix.
EXEMPLO:
isis:~ # alias dir="ls -CF"
isis:~ # hidden="ls -a"
isis:~ # alias
alias +='pushd .'
alias -='popd'
alias ..='cd ..'
alias ...='cd ../..'
alias beep='echo -en "\007"'
alias cd..='cd ..'
alias dir='ls -CF'
alias l='ls -alF'
alias la='ls -la'
alias ll='ls -l'
alias ls='ls $LS_OPTIONS'
alias ls-l='ls -l'
alias md='mkdir -p'
alias o='less'
alias rd='rmdir'
alias rehash='hash -r'
alias unmount='echo "Error: Try the command: umount" 1>&2; false'
alias you='if test "$EUID" = 0 ; then /sbin/yast2 online_update ; else su - -c "/sbin/yast2 online_update" ; fi'
history
É o historico dos ultimos comandos digitados. Estes são armazenados no arquivo $HOME/.sh-history ou $HOME/.bash_history. Para visualizar os ultimos comandos utilize o comando “history” e para repeti-los utilize o comando “r numero”.
EXEMPLO:
isis:~ # history
   19  cd contabilidade
   20  ls
   21  sll
   22  ll
   23  scp --help
   24  man scp
   25  scp -r -p * root@mozart:/contabilidade
   26  ll
   27  cd ..
   28  rm -rf contabilidade
   29  clear
   30  ls
isis:~ #
Repetir o comando do historico
no HP-UX
isis:~ #  r 20
No Linux (SuSE)
isis:~ # !1014
ls
.bash_history  .exrc  .gnupg  .kbd  .ssh  .viminfo  bin  inst-sys  mbox  vpd.properties
Limpar o historico
isis:~ # history –c
isis:~ # history
   29  history
Recuperar o historico
isis:~ # history –r
isis:~ # history 20
1013  rm -rf shiva
1014  clear
1015  ls
1016  cd deva
1017  ls
1018  clear
1019  ls
1020  cd Tuesday
1021  ls
1022  ll
1023  cd ..
1024  clear
1025  ls
1026  exit
1027  clear
1028  echo $HOME
1029  su - informix
1030  exit
1031  history
Ver somente os ultimos 10 historicos
isis:~ # history 10
1025  ls
1026  exit
1027  clear
1028  echo $HOME
1029  su - informix
1030  exit
1031  history
1032  history 20
1033  history 30
1034  history 10
isis:~ #
Comandos de edição de linha
Podemos editar os ultimos comandos armazenados pelo history e repeti-los utlizando recursos do comando de edição do “vi”. Executar “set –o vi” para ativar esta função.
Para ter acesso aos comandos teclar <ESC>.
Para retornar os comandos teclar <K>.
Para avançar comandos teclar <J>
EXEMPLO:
isis:~ # set -o vi
isis:~ #


      K
      |
H <---> L
      |
      J
r – altera
i – insere
x – deleta
a – adiciona
Shell utilizado como ferramenta
Um programa shell é  chamado de “script shell”. Um script shell pode ser criado utilizando o editor de texto “vi” ou o comando “cat”.
Um script shell pode facilitar o trabalho de operação, quando precisar:
  • fazer algo com muitos arquivos;
  • fazer a mesma tarefa repetidamente;
  • englobar vários comandos do unix para facilitar a operacação do usuario.
Exemplo:
isis:~ # cat > acha
tput clear
find / -name $1 -print
isis:~ # chmod u+x acha
isis:~ # ./acha bin
/bin
/etc/skel/bin
/lib/mkinitrd/bin
/var/adm/SuSEconfig/bin
/usr/bin
/usr/lib/qt3/bin
/usr/lib/YaST2/bin
/usr/lib/pm-utils/bin
/usr/lib/suseRegister/bin
/usr/lib/restricted/bin
/usr/x86_64-suse-linux/bin
/usr/X11R6/bin
/usr/local/bin
/usr/local/ibm/gsk7_64/bin
/usr/share/doc/packages/bind/contrib/dlz/bin
/usr/informix/bin
/usr/informix/extend/krakatoa/jre/bin
/home/amilcar/bin
/root/bin
/lib64/ast/bin
isis:~ #
Observações:
Pode-se dentro de um script shell chamar outro script shell, limitação de chamadas de novos scripts esta associada ao numero de processos por usuario.
Ja postei aqui no blog alguns exemplos mais avançados de scritps, quem tiver curiosidade, é so dar uma olhada.

Shell – Parte 3

COMANDOS QUE TRATAM VARIAVEIS
echo
Exibe o conteudo de uma variavel.
SINTAXE:
echo variavel
EXEMPLO:
informix@isis:~> echo $HOME
/usr/informix
informix@isis:~> echo $PATH
/usr/informix/bin:/usr/informix/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin
informix@isis:~>
set
Lista as variaveis do ambiente shell.
SINTAXE:
set
EXEMPLO:
informix@isis:~> set
BASH=/bin/bash
BASH_VERSINFO=([0]="3" [1]="2" [2]="39" [3]="1" [4]="release" [5]="x86_64-suse-linux-gnu")
BASH_VERSION='3.2.39(1)-release'
COLORTERM=1
COLUMNS=134
CONSOLE_MAGIC='(K'
CPU=x86_64
CSHEDIT=emacs
DBCENTURY=C
DBDATE=dmy4/
DBMONEY=,
DIRSTACK=()
ENV=/etc/bash.bashrc
EUID=107
FROM_HEADER=
GROUPS=()
G_BROKEN_FILENAMES=1
G_FILENAME_ENCODING=@locale,UTF-8,ISO-8859-15,CP1252
HISTCONTROL=ignoreboth
HISTFILE=/usr/informix/.bash_history
HISTFILESIZE=1000
HISTSIZE=1000
HOME=/usr/informix
HOST=isis
HOSTFILE=
HOSTNAME=isis
HOSTTYPE=x86_64
IFS=$' \t\n'
INFODIR=/usr/local/info:/usr/share/info:/usr/info
INFOPATH=/usr/local/info:/usr/share/info:/usr/info
INFORMIXDIR=/usr/informix
INFORMIXSERVER=tst
INPUTRC=/usr/informix/.inputrc
export
Exporta uma variavel e seu valor aos processos filhos.
SINTAXE:
export variavel
COMENTARIO:
Variaveis são validas no processo onde elas são definidas (Variaveis local). As variaveis exportadas são chamadas de variaveis globais.
EXEMPLO:
informix@isis:~> INFORMIXDIR=/usr/informix
informix@isis:~> JAVA_HOME=/usr/java
informix@isis:~> export INFORMIXDIR JAVA_HOME
informix@isis:~>
env
Lista as variaveis que foram exportadas (variaveis globais).
SINTAXE:
env
EXEMPLO:
informix@isis:~> env
LESSKEY=/etc/lesskey.bin
NNTPSERVER=news
INFODIR=/usr/local/info:/usr/share/info:/usr/info
MANPATH=/usr/local/man:/usr/share/man
HOSTNAME=isis
XKEYSYMDB=/usr/share/X11/XKeysymDB
HOST=isis
SHELL=/bin/bash
TERM=xterm
PROFILEREAD=true
HISTSIZE=1000
INFORMIXDIR=/usr/informix
MORE=-sl
USER=informix
LD_LIBRARY_PATH=/usr/informix/lib:/usr/informix/lib/esql
XNLSPATH=/usr/X11R6/lib/X11/nls
ENV=/etc/bash.bashrc
DBMONEY=,
DBCENTURY=C
HOSTTYPE=x86_64
FROM_HEADER=
ONCONFIG=onconfig.tst
PAGER=less
DBDATE=dmy4/
CSHEDIT=emacs
XDG_CONFIG_DIRS=/etc/xdg
MINICOM=-c on
MAIL=/var/spool/mail/informix
PATH=/usr/informix/bin:/usr/informix/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/usr/games:/usr/lib/mit/bin:/usr/lib/mit/sbin
CPU=x86_64
INPUTRC=/usr/informix/.inputrc
PWD=/usr/informix

terça-feira, 16 de março de 2010

Shell – Parte 2

Metacaracteres (Caracteres Especiais)
<
Redirecionamento da STDIN
<<
Inclusao de dados
>
Redirecionamento da STDOUT (Criação)
>>
Redirecionamento da STDOUT (Criação, inclusão)
;
Processamento sequencial de comandos
|
Processamento paralelo de comandos em conexão (PIPE)
&
Processamento paralelo de comandos em retaguarda
<&
Fecha a entrada padrão
>&
Processamento paralelo de comandos em retaguarda
&&
Conector logico “e”
||
Conector logico “ou”
;;
Delimitador do comando “case”
( )
Agrupamento de comandos (Função)
.
Qualquer serie de caractere
?
Qualquer caractere simples
[ ]
Qualquer caractere dentro dos colchetes
-
Indica o intervalo (limite) dos caracteres
\
Faz com que os metacaracteres percam sua função
$
Representa variavel
#
Comentario em Shell Script

ENTRADA E SAIDA PADRAO
No Unix, o padrão é que a entrada de um comando seja feita via teclado e que a saida, o resultado do comando ou a mensagem de erro, seja apresentada na tela. Portanto, para o Unix a entrada padrão (STDIN – Standard input) é o teclado, e a saida padrão (STDOUT –Standard output) e a saida de erro (STDERR – Standard error) é o video.
std Tanto a entrada padrão quanto a saida padrão e a saida de erro podem ser facilmente redirecionadas para um arquivo. O redirecionamento é obtido atraves dos metacaracteres “<” e ”>”
< arquivo – redireciona a entrada padrão para o arquivo especificado
> arquivo – redireciona a saida padrão para o arquivo especificado
2> arquivo – redireciona a saida de erro padrão para o arquivo especificado.
Exemplo:
ls –l > listagem.txt
Nesse exemplo, a saida do comando ls, sera gravada no arquivo listagem.txt ao inves de ser apresentada na tela.
CANALIZAÇÃO (PIPE) E FILTROS
Um pipe permite que se conecte dois comandos, de forma que a saida de um seja a entrada do outro. O estabelecimento de um pipe é dado atraves do caractere “|”, colocado entre os dois comandos.
Quando se estabelece um pipe entre 2 comandos, a saida padrão do primeiro é conectada diretamente a entrada padrão do segundo.
Um pipe é diferente de um redirecionamento. O redirecionamento de entrada faz com que um arquivo contenha a entrada para um comando e o redirecionamento de saida grava a saida de um comando em um arquivo. O pipe conecta diretamente a saida do primeiro comando a entrada do segundo comando.
Exemplo:
ls –l | mail usuario1
neste exemplo, a saida do comando ls sera a entrada para o comando mail.
Um filtro é um programa que aceita a entrada de um fonte, executa o processamento necessario e grava o resultado em um outro lugar sem alterar o arquivo de entrada. Um exemplo de filtro seria o comando sort que sera visto mais a frente. O comando sort classifica um arquivo de entrada e exibe a saida classificada na tela ou grava-a em um arquivo de saida. O arquivo de entrada (fonte) não é de forma alguma alterado.
VARIAVEIS SHELL
As variaveis configuram o ambiente shell. Elas são conhecidas como variaveis de trabalho. Estas variaveis podem ser divididas em dois grupos:
  • variaveis pré-definidas do sistema
  • variaveis definidas pelo usuario
PRINCIPAIS VARIAVEIS PRE-DEFINIDAS DO SISTEMA
HOME -  diretorio de login
PATH – lista de diretorios para pesquisa de comandos. Os diretorios são pesquisados da esquerda para a direita ate que o comando seja encontrado.
MAIL – caixa postal do correio eletronico
LOGNAME – nome de usuario
PS1 – prompt principal
PS2 – prompt secundario
TERM – tipo de terminal
SHELL – tipo de shell
TZ – define zona do mundo e horario
IFS – define quais são os caracteres utilizados para separação interna de campos (espaço, tabulação e retorno de carro).
PWD – Path de diretorio corrente
VARIAVEIS DEFINIDAS PELO USUARIO
O shell permite que o usuario crie suas proprias variaveis. Elas são criadas através de atribuição, como mostram os exemplos abaixo:
a=0
b=”unix”
VAR01=10
VAR02=”programa”
Observação: Os nomes de variaveis podem conter caracteres alfabeticos ou numericos, mas nunca podem começar por caracteres numericos.

segunda-feira, 15 de março de 2010

Shell – Parte 1

O shell é uma das principais ferramentas do sistema operacional Unix. Ele tem funções importantes como:

  • Interpretador de comandos
  • Linguagem de programação (ferramentas)

Caracteristicas:

  • é escrito em linguagem “C”
  • é inicializado no login
  • é interface do usuario como o nucleo do sistema operacional.

shell

Tipos de Shell

bsh (sh) = Shell de Bourne

csh = Shell “C”

rsh = Bourne Shell restrito

ksh = Shell de Korn

Bourne Shell

O shell original foi escrito por Etephen R. Bourne em 1975, sendo este o shell defaul do HP-UX.

O Shell Bourne, é o mais comum dos shells. Quase todas as implementações do Unix oferecem o “Shell Bourne” (sh) como parte de sua configuração padrão.

“C” shell – csh

Desenvolvido na Universidade da California em Berkeley, por Bill Joy, o Shell C oferece algumas vantagens sobre o Shell Bourne; history, e avaliação direta de condições e comandos embutidos. Interativamente, a caracteristica history do Shell C acompanha os comandos à medida que voce os entra, permitindo voltar e executa-los sem a reentrada do comando. Ou então, se quiser, podera reativa-los, fazer modificações e depois executar o comando.

O Shell C oforece aliasing, permitindo ao usuario criar nomes simbolicos para nomes de comando. No Shell Bourne, se voce iniciar um comando em foreground ou background, ele permanecera la ate terminar. No shell C, voce podera mover comandos da execução em foreground para background, conforme a necessidade.

O shell C oferece dois tipos de variavel, normal (local) ou ambiente (global).

A sintaxe do shell C é mais parecida com a linguagem de programação C e oferece todos os operadores condicionais do C (==, > etc), o que podera ser util para programadores em C.

Shell Restrito – rsh

O shell restrito é o Bourne Shell com algumas restrições. Ele restringe o usuario nas seguintes funções:

  • mudar o diretorio corrente (cd) – o comando cd é inibido
  • alterar o conteúdo da variavel PATH
  • especificar comandos ou programas com path absoluta “/”
  • utilizar redirecionamento de saida ou concatenação para arquivos (> ou >>)

Korn Shell – ksh

Desenvolvido por David Korn, da AT&T. Foi apresentado pela 1ª vez em 1983 e divulgado em 1986.

O shell Korn retem a funcionalidade completa do Shell Bourne e combina muitas das caracteristicas-chave do Shell C. O Shell Korn é mais rapido do que o Shell C, porem mais lento do que o Bourne na maior parte do processamento.

O Shell Korn oferece gerenciamento melhorado de history, o que garante acesso direto aos ultimos comandos. Alem disso, como o Shell Bourne, ele oferece aliasing com o uso das funções do shell.

Algumas caracteristicas:

  • possibilita interação usuario-sistema
  • o prompt principal é o $ (cifrão)
  • linguagem de programação que permite fluxo de execução
  • Alguns caracteres são especiais, isto é, tem funções especificas para o Shell, e são chamados de “metacaracteres”

Entrando e Saindo do Sistema

Quando o HP-UX esta ativo, ao se ligar o terminal aparecera na  tela a solicitação de identificação do usuario. Essa identificação é chamada de login e o usuario precisara estar previamente cadastrado no sistema. O Cadastro do usuario no sistema é feito pelo elemento conhecido como Administrador do sistema e este podera tambem fornecer uma senha para identificação do usuario que devera ser conhecida somente por ele (administrador) e pelo usuario.
login
Para o Unix, letras maiusculas e minusculas são interpretadas de forma diferente, sendo que seu default é minusculo. Quando aparecer na tela a palavra “login”, digite sua identificação em minusculo e pressione <ENTER>. Aparecera em seguida a Palavra “Password:”.
Se a sua identificação possui uma senha, digite-a e tecle <ENTER>. A senha digitada não aparecera na tela. isto é feito para protege-lo de pessoas que estejam por perto no momento da digitação. Se a sua identificação não possui uma senha, apenas pressione <ENTER>.
Apos ter digitado sua identificação e sua senha o Shell colocara na tela o sinal de pronto, que significa que o Shell esta pronto para interpretar os comandos que forem digitados
SAIDA DO SISTEMA
O usuario nunca deve sair do terminal deixando sua identificação ativa. Ele deve avisar o Shell para encerrar o login (logout). O encerramento do login pode ser feito de duas formas:
  • Digitando-se o comando exit
  • Teclando-se ^D (Ctrl+D)
Apos ter encerrado seu login voce podera desligar seu terminal

A Administração de Sistema

Algumas tarefas básicas devem ser conhecidas pelo Administrador do Sistema:

  • Executar o login e logout
  • Mover-se sobre a arvore de diretórios (cd)
  • Criar e Remover diretórios (mkdir e rmdir)
  • Conhecer o conceito de percurso absoluto e percurso relativo
  • Editar arquivos (vi)
  • Criar, Exibir, Mover, Copiar e Remover Arquivos (cat, pg, more, mv, cp, rm)
  • Procurar e identificar um arquivo na arvore de diretórios (find, file)
  • Pesquisar um texto em um arquivo (grep).

Além das tarefas básicas, o administrador deve ter um bom conhecimento dos sistemas Unix’s (HP-UX, Linux, Aix, etc), para que possa desenvolver com segurança a sua administração:

  • Manter uma lista do hardware e seus endereços para uma possível ativação manual
  • Certificar-se que os periféricos estejam instalados corretamente e testados
  • Monitorar a performance dos componentes de hardware
  • Verificar o hardware no sentido de isolar possíveis problemas
  • Configurar o sistema operacional HP-UX, Linux, etc
  • Gerenciar os sistemas de Arquivos
  • Gerenciar os usuários do sistema
  • Administrar a segurança do sistema a nível de arquivos e usuários
  • Monitorar o uso dos recursos do sistema e programar sua manutenção periódica
  • Gerenciar o spool de relatórios
  • Planejar rotinas de Backup e Restore
  • Atualizar o sistema com novas releases

O administrador do sistema deve ter em mente os seguintes itens:

  • O Unix é um sistema aberto e o superusuario tem acesso a todo o sistema
  • Os arquivos devem ter permissões de acesso, de forma que somente os usuários que necessitam possam acessa-los
  • A senha do root é de responsabilidade do administrador do sistema
  • O Administrador deve estabelecer senhas diferentes aos usuários e deve administrar a troca periódica dessas senhas
  • Deve também desenvolver uma politica de informação para o usuário, promovendo palestras, documentos, que mostrem ao usuário a melhor maneira de usar a maquina.

O administrador do sistema deve ter em mente que para desenvolver essas tarefas no seu dia a dia de trabalho terá disponíveis algumas ferramentas como:

SAM – O System Administrator manager é um menu que executa a maioria das tarefas administrativas padrão do sistema. Quando essas tarefas fogem ao padrão, será necessário utilizar a linha de comando, o SAM é uma ferramenta nativa do HP-UX, em outros sistemas Unix tem que ver a equivalência dessa ferramenta, por exemplo, no AIX é o Smit, no SuSE é o YaST.

SHELL SCRIPTS – São escritos pelo Administrador do Sistema para automatizar tarefas que são usadas com freqüência. Um shell script pode ser adicionado ao SAM se for necessário.

MANUAL ONLINE – A sintaxe e descrição de qualquer comando do UNIX pode ser obtida através do comando man que exibira na tela o comando, como um manual de referencia.

sexta-feira, 12 de março de 2010

Visão do ambiente HP-UX


 

COMANDOS

Como ja vimos, comandos são programas do sistema operacional que tem utilidade geral (conhecidos tambem como utilitarios). Eles auxiliam a manutenção do sistema tanto para o usuario comum, como para o root (administrador do sistema) e para o usuario programador.

O comando pode ser digitado sempre que o prompt do Shell (#) estiver presente. A linha onde o comando é digitado é chamado de linha de comando e deve sempre ser encerrada com a tecla <ENTER>.

A linha de comando é interpretada pelo Shell que age como intermediario entre o usuario e o nucleo do sistema operacional (Kernel).

Formato do comando

A linha de comando tem a seguinte sintaxe:

comando [-opções] [argumentos]

Argumentos de um comando
Normalmente os comandos necessitam de argumentos, isto é; informações adicionais. Por exemplo quando se deseja listar o conteudo de um arquivo, deve-se informar o nome do comando que executara a listagem e o nome do arquivo a ser listado (o argumento).

Opções de um comando
Muitos comandos permitem selecionar uma entre as varias opções  existentes. As opções são quase sempre forncecidas antes dos outros argumentos e sempre iniciam com "-" ou "+". Por exemplo, quando se deseja listar o conteudo de um diretorio, classificado em ordem descendente, deve-se informar o nome do comando que executara a listagem, a opção de classificação e o diretorio a ser listado »»» ls -t /etc

Correção da linha de comandos

a correção de uma digitação incorreta na linha de comando só pode ser executada enquanto não for pressionado <ENTER>. Para corrigir o comando basta retroceder o cursor com a tecla <BACKSPACE>.

Interrupção da execução de um comando
Para interromper um comando em execução (processo) basta pressionar as teclas <CTRL+C>, ou <DEL> em alguns teclados.
Se for o caso de interromper algo que se esta listando na tela, basta pressionar <CTRL+S>. Para continuar a listagem, basta pressionar <CTRL+Q>.

quinta-feira, 11 de março de 2010

Estrutura do HP-UX


O HP-UX, assim como outros UNIX's, esta estruturado em 3 niveis:
  • Kernel
  • Shell
  • Utilitarios/Aplicativos
Cada um dos niveis tem sua função especifica dentro do sistema operacional

         

KERNEL
É o nucleo do Sistema Operacional Unix. Esse nucleo fica constantemente em memoria e é responsavel pela execução das funções mais baixas do sistema como:
  • Gerenciamento dos recursos de hardware
  • Gerenciamento de memoria
  • Controle das operações de I/O
  • Gerenciamento de processos (um processo é um programa em estdo de execução)
  • Gerenciamento das operações multiusuarios/multitarefas 
  • Gerencamento do Sistema de arquivos
O nucleo não faz nada diretamente para o usuario. Todos os serviços são solicitados por programas utilitarios que são interpretados pelo interpretador de comandos e passado ao nucleo.
SHELL
O Shell nada mais +e que um programa utilitario cuja função é receber e interpretar todos os comandos digitados pelo usuario. Por esta razão recebe o nome de interpretador de comandos.
Os comandos digitados pelo usuario podem ser:
  • Um comando do sistema
  • Um programa desenvolvido pelo usuario
  • Um script (um conjunto de comandos)
Se o comando for uma programa, o Shell carrega esse programa em memoria e inicia sua execução. Durante a execução o Shell fica inativo; quando o programa termina o Shell volta à ativa para interpretar o proximo comando do usuario.

Se o comando for um script o Shell passa a interpretar cada um dos comandos nele contidos. Os comandos contidos em um roteiro podem ser estruturados como um programa. Por esse motivo, diz-se que o Shell é uma linguagem de programação.

Os comandos, programas ou scripts que são interpretados pelo Shell, podem ser executados de 2 maneiras:
  • Em vanguarda; são executados interagindo com o usuario atraves do terminal.
  • Em retaguarda; são executados sem interagir com o usuario, isto é; não há conversa com video/teclado, liberando o terminal para outras atividades. Esse tipo de execução é tambem conhecido como background.
Quando o usurio digita um comando, o Shell verifica se o comando é valido e direciona o comando ao Kernel para ele seja executado. Se o coamdno não for valido, o Shell exibira na tela uma mensagem de erro e se posicionara aguardando um novo comando do usuario.

Para que o usuario saiba quando digitar um comando, o Shell coloca na tela um prompt caracteristico. Opcionalmente o administrador do sistema pode mudar esse prompt.

Existem alguns tipos de Shell. Os mais utilizados são:
  • Bourne-Shell; É o shell normal (desenvolvido pela AT&amp;T)
  • C-Shell; Tem uma sintaxe igual à da linguagem C. (desenvolvida na universidade Berkeley)
  • Korn Shell; retem a funcionalidade do Bourne Shell e combina caracteristicas do C-Shell. (desenvolvido pela AT&amp;T)
  • Restricted Shell; é igual ao Shell normal, porem em uma versão reduzida (desenvolvida pela AT&amp;T)

quarta-feira, 10 de março de 2010

Caracteristica do sistema operacional HP-UX

O objetivo de todos os sistemas operacionais é mais ou menos o mesmo:
controlar as atividades e recursos de um computador, interpretando os comandos do usuario e traduzindo-os em ações dirigidas a alguma parte do computador. Para efetuar esses controles, o sistema operacional é composto por um conjunto de programas, arquivos, utilitários, tabelas, etc.
O HP-UX é um sistema operacional modular, que cresce à medida das necessidades do usuario, isto é o Unix permite acrescentar ou remover partes para adapta-los às necessidades especificas do usuario.

Entre as caracteristicas do HP-UX, as mais importantes são:

Multitarefa - Permite a execução simultanea de diferentes tarefas (processos)

Multiusuario - Permite que mais de um usuario utilize o computador simultaneamente. Mais de um terminal pode ser conectado ao computador e os usuarios de todos os terminais podem executar programas, acessar arquivos, imprimir dados, de uma so vez. O HP-UX gerencia as varias solicitações que os usuarios fazem ao computador, evitando que um interfira no outro. Tambem atribui prioridades em casos em que mais de um usuario deseje usar o mesmo arquivo ou o mesmo periferico simultaneamente.

Ambiente Interativo - Permite o dialogo entre o processo em execução e o usuario.

Segurança - Os dados são protegidos por senhas do usuario ou por flags de proteção atribuidos aos arquivos.

Utilitarios/Ferramentas - O HP-UX vem com centenas de programas que podem ser divididos em varias classes:
  • Utilitarios com funções especificas, tambem conhecidos como comandos, são integrados ao sistema.
  • Manipulação de arquivos.
  • Manipulação de diretorios.
  • Manipulação de programas.
  • Manipulação de comunicações.
  • Manipulação de perifericos.
  • Outros.
  • Ferramentas: são programas que forncem recursos adicionais como o correio eletronico, o manula on-line, o editor de texto, a calculadora de mesa, o calendario, etc.
Sistema de Comunicação - As comunicações em Unix incluem as seguintes opções:
  • Comunicação entre terminais ligados ao mesmo computador.
  • Comunicação entre usuarios ligados a computadores diferentes no mesmo local.
  • Comunicação entre usuarios ligados a computadores diferentes em locais distintos.
Interpretador de Comandos - O interpretador de comandos permite a comunicação do usuario com o nucleo do sistema operacional.

Estrutura Hierarquica de Arquivos - Os arquivos do sistema HP-UX são armazenados em diretorios cuja organização é hierarquiica, onde o topo dessa hierarquia é o diretorio raiz, de onde se ramificam os demais diretorios tanto do sitema como do usuario. Esse tipo de estrutura hierarquica é tambem conhecida como estrutura em arvores, pois seu diagrama lembra uma arvore invertida.

Aplicativos especificos - Aplicativos como backup, spool, editores de texto, estão disponiveis para sistemas HP-UX, UNIX ou Linux.

Linguagem de Programação - O sistema HP-UX, assim como o Linux, permite o uso das principais linguagens de programação como C, Cobol, Fortran, Java, entre outros.