The UNIX and Linux Forums  

Go Back   O UNIX e Linux Forum > Top Fóruns > Programação Shell Script e
.
google unix.com



Programação Shell Script e Post perguntas sobre ksh, CSH, SH, BASH, Perl, PHP, SED, Awk e outros scripts shell e shell scripts línguas aqui.

Mais UNIX e Linux Fórum Tópicos Você pode achar Helpfull
Fio Thread Starter Fórum Respostas Última postagem
executando Unix script que contém comandos de FTP CURL Peoplesoft Processo Schedlr sfedak Programação Shell Script e 2 02-18-2009 02:20
processo filho estado smreddy UNIX para Dummies Perguntas & Respostas 8 12-24-2007 12:51
O Estado de Unix (Addict 3D) iBot UNIX e Linux RSS Notícias 0 06-18-2007 11:40
O estado do Unix - ZDNet.com blogs iBot UNIX e Linux RSS Notícias 0 06-18-2007 04:40
Processo de Estado ianlow UNIX para Dummies Perguntas & Respostas 1 09-06-2006 11:11

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
Linkback Thread Tools Pesquisar este Thread Rate Thread Display Modes
  #1 (permalink)  
Old 05-27-2009
egiz81 egiz81 is offline
Usuário
  
 

Join Date: May 2009
Posts: 2
Unix script (sh): estado do processo ftp

Oi gente,
Estou escrevendo um script em que eu tenho que pegar um arquivo a partir do host remoto por ftp. O problema é que a máquina remota pode ser muito lento, não ligado ou ok. Para resolver este problema, eu escrevo este:

[... ...]
echo "verbose em"> ftprap.cmd
echo "mensagem">> ftprap.cmd
echo "ascii">> ftprap.cmd
echo "passive off">> ftprap.cmd
echo "MGET *">> ftprap.cmd
echo "quit">> ftprap.cmd

ftp% IP <. / ftprap.cmd> ftp.log 2> & 1 &
PID_FTP \u003d `echo $!"
sono 60
ps-o pid, tty, tempo, cmd, estadual | grep-E "$ PID_FTP% S"> / dev / null 2> / dev / null

if [$? \u003d 0]
então
kill -9 $ PID_FTP>> ftp.log 2> & 1
fi
[... ...]

Para matar ftp só se for bloqueado.

Acontece que, mesmo que ftp é executado, mostra-me com o estado ps \u003d S, que está dormindo! Tento executar o script com "sono 1", enquanto está a transferir uma grande quantidade de arquivos, e eu tenho certeza disto: ps mostra ftp está dormindo e, em seguida, o script mata-lo.
Eu não sou tão perito sobre unix script, então eu não "sabe onde eu cometer erros.

Poderia ajudar-me? Graças, em fase avançada.
  #2 (permalink)  
Old 05-27-2009
pludi's Avatar
pludi pludi is offline Forum Staff  
Moderador
  
 

Join Data: dezembro 2008
Localização:. Em
Posts: 1.963
Dormir não significa que o seu programa é não fazer nada, apenas significa que não é actualmente a ser executado em qualquer processador. Por exemplo, em uma máquina com apenas 1 processador você só ver 1 programa marcado como correr com o PS (e que provavelmente ps própria). Com 2 processadores você verá 2, ...

Um IMHO a melhor maneira de verificar conectividade seria a primeira tentativa para efectuar o ping do anfitrião, verifique se o FTP porta está aberta, tente fazer o download de um pequeno check arquivo, e só então fazer a grande transferência.
  #3 (permalink)  
Old 05-27-2009
egiz81 egiz81 is offline
Usuário
  
 

Join Date: May 2009
Posts: 2
Unhappy

Oi pludi,
que quer dizer que se eu dormir eu uso o meu bloco ftp comando? Segundo a evitar que esperar para sempre se o host remoto não funcionar, eu quero implementar uma espécie de tempo, após isso, se o FTP é bloqueado, vou matá-lo. Se eu usar o sono, é comando FTP no fundo parado? Se é verdade, eu sou bastante preocupado ... tento ping primeiro de acolhimento (no caso real é esse código em um loop de uma lista de hosts), mas tantos firewall Bock ping ping e se tem um resultado positivo, isso não 't certeza que ftp é executado.


... Estou gastando muito tempo sobre este problema .. e eu estou ficando louco do que eu sou!
  #4 (permalink)  
Old 05-27-2009
pludi's Avatar
pludi pludi is offline Forum Staff  
Moderador
  
 

Join Data: dezembro 2008
Localização:. Em
Posts: 1.963
Não, o seu sono não bloquear o comando FTP. Vamos adiar a solução de gestão de processos do kernel em um bit:

Desde a sua invenção tarolos CPU só pode executar um processo de cada vez. Isto significava que um único processo de espera para entrada de usuário poderá bloquear todo o sistema. Então, alguém veio com a idéia de tempo fatias. Cada processo é permitido execução de um certo tempo. Após esse tempo ele retorna controle para o kernel. Tudo estava bem até que alguns processos não retornou controle de propósito.
A maioria dos kernels modernos utilizam preempting vez. Mais uma vez, cada processo é atribuído tempo de execução. Após esse tempo, o SO kernel é através de um temporizador despertou interromper (ou mais cedo se o processo dá-lhe os direitos da volta, porque isso é esperar por alguma coisa), o primeiro processo é enviado para um modo de dormir e outro é dado tempo da CPU. O primeiro processo continuará quando é a sua vez.

Agora, de volta para o seu caso: você está iniciando o processo FTP e enviá-la para o fundo. Começa suas fatias de tempo, tal como qualquer outro processo, mas não é executar o tempo todo. Às vezes, outros processos são executados, de modo ftp é marcado como 'dormir', ou, melhor dito, esperando sua vez de novo. Se você só tem uma CPU central e obter a lista atual com o PS, com excepção de todos os processos ps irão (provavelmente) ser marcado como 'dormir', uma vez que PS está a utilizar actualmente o seu tempo alocado para recolher as estatísticas.

Minha sugestão para o problema seria:
  1. ping de acolhimento em questão (talvez aqueles pingável marca em conformidade e saltar os outros)
  2. teste para verificar se o FTP porta está aberta. Você pode usar netcat (por exemplo: netcat-z acolhimento $ 21 e $ verificação?) Ou analisar a saída do nmap)
  3. criar um pequeno checkfile no servidor de FTP, e que buscar em primeiro lugar. Por exemplo, iniciar o comando FTP para que, no fundo. Se ela ainda correr após 5 segundos, considere o hospedeiro morto.
  4. se todos (necessário) controlos são bons, continue com o grande transferência
Closed Thread

Marcadores

Thread Tools Pesquisar este Thread
Pesquisar este Thread:

Pesquisa Avançada
Display Modes Esta taxa Thread
Esta taxa Thread:

Destacamento Regimento
Você não pode postar novas threads
Você não pode postar respostas
Você não pode postar anexos
Você não pode editar suas postagens

BB code é Ligado
Smilies são Ligado
[IMG] código é Ligado
Código HTML é Desligado
Trackbacks são Ligado
Pingbacks são Ligado
Refbacks são Ligado




Todos os horários são GMT -4. A hora é agora 11:51.


Powered by: vBulletinCopyright © 2000 - 2006, Jelsoft Enterprises Limited. Língua Traduções Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
O UNIX e Linux Fóruns Content Copyright © 1993-2009. Todos os Direitos Reserved.Ad Gestão por RedTyger

Content Relevant URLs por vBSEO 3.2.0