Buscar

Aula15 ComandosExternos

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 20 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 20 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 20 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Programação	
  para	
  Servidores	
  
Aula	
  15	
  
Sumário	
  
•  Comandos	
  externos;	
  
•  Exercícios.	
  
2	
  
Comandos	
  externos	
  
•  Comandos	
  básicos:	
  
–  ls:	
  lista	
  o	
  conteúdo	
  de	
  um	
  diretório.	
  Alguns	
  parâmetros:	
  
-R	
  	
   lista	
  os	
  subdiretórios	
  recursivamente;	
  
-S	
  -t	
  	
   ordena	
  pelo	
  tamanho	
  (-S)	
  ou	
  pela	
  hora	
  de	
  modificação(-t);	
  
-a	
  	
   mostra	
  arquivos	
  ocultos	
  (iniciados	
  por	
  .);	
  
-l	
  	
   uKliza	
  formato	
  longo	
  para	
  mostrar	
  atributos	
  de	
  arquivos;	
  
–  cat:	
  envia	
  o	
  conteúdo	
  do	
  arquivo	
  para	
  a	
  saída	
  padrão.	
  O	
  
parâmetro	
  	
  -n	
  faz	
  com	
  que	
  	
  as	
  linhas	
  do	
  arquivo	
  sejam	
  
numeradas;	
  
–  tac:	
  similar	
  ao	
  cat,	
  porém	
  as	
  linhas	
  do	
  arquivo	
  são	
  mostradas	
  
da	
  úlKma	
  para	
  a	
  primeira;	
  
–  rev:	
  envia	
  o	
  conteúdo	
  do	
  arquivo	
  para	
  a	
  saída	
  padrão.	
  O	
  
conteúdo	
  de	
  cada	
  linha	
  é	
  exibido	
  de	
  trás	
  para	
  frente,	
  mas	
  
mantém	
  a	
  ordem	
  das	
  linhas;	
  
3	
  
Comandos	
  externos	
  
•  Comandos	
  básicos	
  (cont.):	
  
– cp:	
  cópia	
  de	
  arquivos.	
  Algumas	
  opções:	
  
-R,	
  -r	
  	
   copia	
  diretórios	
  recursivamente;	
  
-v	
  	
   mostra	
  os	
  arquivos	
  que	
  estão	
  sendo	
  copiados;	
  
– mv:	
  move	
  arquivos.	
  Também	
  uKlizado	
  para	
  renomear;	
  
– rm:	
  remove	
  arquivos.	
  Alguns	
  parâmetros:	
  
-R,	
  -r	
  	
   remove	
  diretórios	
  recursivamente;	
  
-v	
  	
   mostra	
  os	
  arquivos	
  que	
  estão	
  sendo	
  removidos;	
  
– mkdir,	
  rmdir:	
  respec.	
  cria	
  e	
  remove	
  diretórios	
  vazios;	
  
– chmod:	
  muda	
  os	
  atributos	
  de	
  arquivos	
  e	
  diretórios;	
  
4	
  
Comandos	
  externos	
  
•  Comandos	
  básicos	
  (cont.):	
  
– man,	
  info:	
  fornecem	
  informações	
  sobre	
  o	
  
funcionamento	
  dos	
  comandos	
  externos;	
  
– history:	
  lista	
  o	
  histórico	
  de	
  comandos	
  executados;	
  
– find:	
  localiza	
  um	
  arquivo	
  ou	
  diretório;	
  
•  Exemplo:	
  procura	
  a	
  parKr	
  do	
  diretório	
  home	
  ($HOME)	
  arquivos	
  
que	
  possuam	
  a	
  palavra	
  aula15	
  no	
  nome:	
  
find $HOME -name "*aula15*" 
5	
  
Comandos	
  externos	
  
•  Comandos	
  para	
  manipulação	
  de	
  data	
  e	
  hora:	
  
– date:	
  mostra	
  ou	
  altera	
  a	
  data	
  e	
  a	
  hora	
  do	
  sistema;	
  
•  Exemplos:	
  	
  date –s "2021/01/31 21:21:21" 
 echo `date +%d`/`date +%m`/`date +%Y` 
 echo `date +%H`:`date +%M` 
 date –d "2013/01/01" +%A 
– at:	
  agenda	
  um	
  aplicaKvo	
  para	
  executar	
  automaKcamente	
  
em	
  determinada	
  data/hora;	
  
•  Exemplos:	
  at 21:21 ./meu_script.sh 
 at 1 /DELETE	
  (apaga	
  o	
  job	
  de	
  id=1	
  da	
  agenda)	
  
6	
  
Comandos	
  externos	
  
•  Comandos	
  para	
  manipulação	
  de	
  data	
  e	
  hora	
  (cont.):	
  
– cal:	
  mostra	
  um	
  calendário	
  na	
  tela;	
  
•  Exemplos:	
  cal (exibe	
  o	
  calendário	
  do	
  mês	
  atual) 
 cal –y 2013	
  	
   (exibe	
  o	
  calendário	
  do	
  ano	
  de	
  2013)	
  
– sleep:	
  suspende	
  a	
  execução	
  por	
  uma	
  dada	
  quanKdade	
  
de	
  segundos.	
  
•  Exemplos:	
  sleep 10 (aguarda	
  10s	
  e	
  conKnua...)	
  
 sleep 10s (aguarda	
  10s	
  e	
  conKnua...) 
 sleep 10m (aguarda	
  10	
  minutos	
  e	
  conKnua...) 
 sleep 10h (aguarda	
  10	
  horas	
  e	
  conKnua...)	
  
 sleep 10d (aguarda	
  10	
  dias	
  e	
  conKnua...) 
7	
  
Comandos	
  externos	
  
•  Comandos	
  para	
  processamento	
  de	
  texto:	
  
– sort:	
  mostra	
  um	
  arquivo	
  em	
  ordem	
  alfabéKca;	
  
•  Exemplo:	
  ordena	
  o	
  arquivo	
  agenda.txt	
  e	
  salva	
  no	
  próprio	
  
arquivo	
  sobrescrevendo	
  o	
  conteúdo	
  anterior:	
  
sort agenda.txt –o agenda.txt 
– uniq:	
  remove	
  linhas	
  duplicadas	
  adjacentes;	
  
– head:	
  envia	
  as	
  primeiras	
  linhas	
  de	
  um	
  arquivo	
  para	
  a	
  saída	
  
padrão;	
  
•  Exemplo:	
  exibe	
  na	
  tela	
  5	
  primeiras	
  linhas	
  do	
  arquivo	
  agenda.txt 
head -n 5 agenda.txt 
8	
  
Comandos	
  externos	
  
•  Comandos	
  para	
  processamento	
  de	
  texto	
  (cont):	
  
– tail:	
  similar	
  ao	
  comando	
  head.	
  Envia	
  as	
  úlKmas	
  linhas	
  
de	
  um	
  arquivo	
  para	
  a	
  saída	
  padrão.	
  Com	
  o	
  parâmetro	
  -f	
  o	
  
comando	
  conKnua	
  exibindo	
  novas	
  linhas	
  que	
  são	
  
adicionadas	
  ao	
  arquivo	
  (úKl	
  para	
  arquivos	
  de	
  log);	
  
•  Exemplo:	
  exibe	
  na	
  tela	
  8	
  úlKmas	
  linhas	
  do	
  arquivo	
  agenda.txt 
tail -n 8 agenda.txt 
– wc:	
  conta	
  a	
  quanKdade	
  de	
  linhas	
  (-l),	
  palavras	
  (-w)	
  ou	
  
caracteres	
  (-m)	
  em	
  um	
  arquivo;	
  
– nl:	
  exibe	
  um	
  arquivo	
  na	
  saída	
  padrão	
  com	
  suas	
  linhas	
  
numeradas.	
  
9	
  
Comandos	
  internos	
  
•  Exemplo	
  head	
  +	
  tail:	
  podemos	
  uKlizar	
  estes	
  
comandos	
  em	
  conjunto	
  para	
  listar	
  um	
  conjunto	
  de	
  
linhas	
  que	
  se	
  encontra	
  no	
  meio	
  de	
  um	
  arquivo:	
  
– os	
  comandos	
  abaixo	
  exibem	
  as	
  linhas	
  4,	
  5	
  e	
  6	
  de	
  um	
  
arquivo	
  chamado	
  teste.txt:	
  
head –n 6 teste.txt | tail –n 3 
10	
  
Comandos	
  externos	
  
•  Comandos	
  para	
  arquivamento:	
  
– tar:	
  agrupa	
  vários	
  arquivos	
  em	
  um	
  único	
  arquivo	
  
(pacote);	
  
–cf	
  	
   criar	
  um	
  novo	
  pacote;	
  
–xf	
  	
   extrair	
  arquivos	
  de	
  um	
  pacote;	
  
–tvf	
  	
   listar	
  arquivos	
  de	
  um	
  pacote;	
  
•  Exemplos:	
  tar –cf pacote.tar arq1.txt arq2.txt 
 tar –tvf pacote.tar 
 tar –xf pacote.tar	
  
11	
  
Comandos	
  externos	
  
•  Comandos	
  para	
  arquivamento:	
  
– gzip:	
  realiza	
  a	
  compressão	
  de	
  um	
  arquivo.	
  UKlizado	
  em	
  
conjunto	
  com	
  tar	
  quando	
  é	
  necessário	
  fazer	
  a	
  
compressão	
  de	
  vários	
  arquivos;	
  
–z	
  	
   comprime	
  o	
  arquivo	
  resultante;	
  
•  Exemplos:	
  tar –zcf pacote.tar arq1.txt arq2.txt 
 tar –tvf pacote.tar 
 tar –zxf pacote.tar	
  
12	
  
Comandos	
  externos	
  
•  Comandos	
  do	
  sistema:	
  
– uname:	
  exibe	
  informações	
  sobre	
  o	
  sistema;	
  
– free:	
  mostra	
  o	
  total	
  de	
  memória	
  RAM	
  e	
  swap	
  uKlizada	
  
pelo	
  sistema;	
  
– du:	
  mostra	
  o	
  total	
  de	
  espaço	
  em	
  disco	
  uKlizado	
  
(recursivamente)	
  por	
  arquivos	
  e/ou	
  diretórios;	
  
– df:	
  mostra	
  a	
  uKlização	
  dos	
  discos/parKções;	
  
13	
  
Exercício	
  resolvido	
  
•  Escrever	
  um	
  script	
  que	
  receba	
  como	
  argumentos	
  duas	
  
datas	
  (inicio	
  e	
  fim	
  do	
  semestre	
  leKvo)	
  e	
  imprima	
  na	
  tela	
  
todas	
  datas	
  com	
  respecKvos	
  dias	
  dasemana	
  em	
  que	
  
temos	
  aulas	
  de	
  programação	
  para	
  servidores,	
  ou	
  seja,	
  
segundas	
  e	
  terças.	
  Exemplo:	
  
./diasLetivos.sh "2013-02-04" "2013-07-01" 
2013-02-04 segunda-feira 
2013-02-05 terça-feira 
2013-02-11 segunda-feira 
2013-02-12 terça-feira 
... ... 
2013-06-18 terça-feira 
2013-06-24 segunda-feira 
2013-06-25 terça-feira 
14	
  
Exercício	
  resolvido	
  
if [ $# -ne 2 ]; then 
 echo "Número inválido de parâmetros" 
 exit 1 
fi 
if ! date -d $1 > /dev/null 2> /dev/null; then 
 echo "Data inválida: $1" 
 exit 1 
fi 
if ! date -d $2 > /dev/null 2> /dev/null; then 
 echo "Data inválida: $2" 
 exit 1 
fi 
15	
  
Exercício	
  resolvido	
  
d1=`date -d $1 +%d` 
m1=`date -d $1 +%m` 
a1=`date -d $1 +%Y` 
d2=`date -d $2 +%d` 
m2=`date -d $2 +%m` 
a2=`date -d $2 +%Y` 
if [[ $a2 -lt $a1 || ($a2 -eq $a1 && $m2 -lt $m1) || 
($a2 -eq $a1 && $m2 -eq $m1 && $d2 -le $d1) ]]; then 
 echo "Data $2 deveria ser posterior à data $1" 
 exit 1 
fi 
16	
  
Exercício	
  resolvido	
  
currDate=$1 
while ! [ $currDate = $2 ]; do 
 ds=`date -d $currDate '+%A'` 
 if [ $ds = "segunda-feira" ] || [ $ds = "terça-
feira" ]; then 
 echo -e "$currDate \t $ds" 
 fi 
 currDate=`date -d "$currDate + 1 day" '+%F'` 
done 
17	
  
Exercícios	
  
•  Fazer	
  os	
  seguintes	
  scripts:	
  
1.  Que	
  receba	
  um	
  nome	
  de	
  arquivo	
  como	
  parâmetro	
  e	
  
exiba	
  seu	
  conteúdo	
  na	
  tela	
  completamente	
  de	
  trás	
  para	
  
frente,	
  como	
  no	
  exemplo:	
  
18	
  
cat agenda.txt	
   ./script_ex01.sh agenda.txt 
Alex 321-1231 rua y 
Bruna 9805-1134 rua kkk 
Daniel 1341-1234 rua z 
Jorgete 1233-1121 rua h 
Zuleica 1231-9999 rua x 
x aur 9999-1321 acieluZ 
h aur 1211-3321 etegroJ 
z aur 4321-1431 leinaD 
kkk aur 4311-5089 anurB 
y aur 1321-123 xelA 
Exercícios	
  
2.  Elaborar	
  um	
  script	
  que:	
  
a)  Apresente	
  ao	
  usuário	
  um	
  menu	
  com	
  as	
  seguintes	
  opções:	
  
1	
  –	
  Exibir	
  status	
  da	
  uKlização	
  das	
  parKções	
  do	
  sistema;	
  (comando	
  df -h)	
  
2	
  –	
  Exibir	
  a	
  relação	
  de	
  usuário	
  logados;	
  (comando	
  who)	
  
3	
  –	
  Exibir	
  a	
  data	
  no	
  formato	
  dd/mm/aaaa;	
  (comando	
  date)	
  
4	
  –	
  Exibir	
  a	
  hora	
  no	
  formato	
  hh:mm;	
  (comando	
  date)	
  
5	
  –	
  Sair	
  (comando	
  exit).	
  
b)  Em	
  seguida,	
  leia	
  a	
  opção	
  escolhida	
  pelo	
  usuário;	
  
c)  Execute	
  o	
  que	
  for	
  pedido;	
  
d)  Imprima	
  a	
  mensagem	
  “Digite	
  <ENTER>	
  para	
  conKnuar...”;	
  
e)  Aguarde	
  o	
  usuário	
  pressionar	
  <ENTER>;	
  
f)  Volte	
  ao	
  passo	
  a).	
  
19	
  
Exercícios	
  
3.  Faça	
  um	
  script	
  que	
  liste	
  o	
  conteúdo	
  de	
  todos	
  os	
  diretórios	
  
passados	
  como	
  parâmetros	
  através	
  da	
  linha	
  de	
  comando.	
  
Antes	
  de	
  cada	
  listagem,	
  o	
  script	
  deve	
  imprimir	
  o	
  seguinte	
  
cabeçalho,	
  onde	
  XXXX	
  é	
  o	
  nome	
  da	
  pasta	
  que	
  será	
  listada:	
  
--------------------------------------- 
Listagem da pasta XXXX 
--------------------------------------- 
4.  Use	
  o	
  comando	
  tail	
  para	
  monitorar	
  as	
  atualizações	
  em	
  um	
  
arquivo.	
  
•  Para	
  isso,	
  abra	
  duas	
  janelas	
  do	
  Shell.	
  Em	
  uma	
  delas	
  digite	
  o	
  comando	
  
tail –f teste.txt.	
  O	
  arquivo	
  deve	
  exisKr.	
  Na	
  outra	
  janela,	
  
digite	
  echo "qq coisa" >> teste.txt	
  	
  para	
  adicionar	
  conteúdo	
  
ao	
  arquivo	
  que	
  está	
  sendo	
  monitorado	
  e	
  veja	
  o	
  que	
  ocorre	
  na	
  
primeira	
  janela.	
  
20

Outros materiais