The UNIX and Linux Forums  
Hej och välkommen från USA till UNIX och Linux Forum! Tack för ditt besök och gå med i vår globala gemenskapen.

Go Back   UNIX och Linux Forum > Upp Forum > Shell-programmering och Skript
.
google unix.com



Shell-programmering och Skript Post frågor om ksh, CSH, SH, bash, PERL, PHP, sed, awk och andra skalskript och skal skriptspråk här.

Mer UNIX och Linux Forum Ämnen Du kan hitta Helpful
Tråd Thread Starter Forum Svar Senaste Inlägg
verkställande Unix-skript som innehåller CURL FTP kommandon från Peoplesoft Process Schedlr sfedak Shell-programmering och Skript 2 02-18-2009 02:20
barn process state smreddy UNIX for Dummies Frågor & Svar 8 12-24-2007 12:51
Staten Unix (Addict 3D) iBot UNIX och Linux RSS Nyheter 0 06-18-2007 11:40
Tillståndet för Unix - ZDNet.com bloggar iBot UNIX och Linux RSS Nyheter 0 06-18-2007 04:40
Process staten ianlow UNIX for Dummies Frågor & Svar 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 Sök i denna tråd Rate Thread Visningslägen
  #1 (permalänk)  
Old 05-27-2009
egiz81 egiz81 is offline
Registered User
  
 

Join Date: maj 2009
Inlägg: 2
Unix script (sh): State of ftp process

Hej killar,
Jag skriver ett manus som jag måste få fil från en fjärrvärd via FTP. Problemet är att fjärrdatorn kunde vara mycket långsam, inte ansluten eller ok. Att lösa detta problem, skriver jag detta:

[... ...]
echo "verbose på"> ftprap.cmd
echo "prompt">> ftprap.cmd
echo "ascii">> ftprap.cmd
echo "passiva off">> ftprap.cmd
echo "MGET *">> ftprap.cmd
echo "quit">> ftprap.cmd

ftp% IP <. / ftprap.cmd> ftp.log 2> & 1 &
PID_FTP \u003d `echo $!"
sova 60
ps-o PID TTY, tid, cmd, statliga | grep-E "$ PID_FTP% S"> / dev / null 2> / dev / null

om [$? \u003d 0]
sedan
kill -9 $ PID_FTP>> ftp.log 2> & 1
fi
[... ...]

Döda ftp endast om den är blockerad.

Det händer att även om ftp kör, ps visar mig med staten \u003d S, som sover! Jag försöker köra skriptet med "sleep 1", medan det är att överföra en stor fil, och jag är säker på detta: ps visar ftp sover och sedan skriptet dödar den.
Jag är inte så mycket expert om Unix scripting, så jag inte "vet var jag gör fel.

Kan du hjälpa mig? Tack i förväg.
  #2 (permalänk)  
Old 05-27-2009
pludi's Avatar
pludi pludi is offline Forum Staff  
Moderator
  
 

Join Date: Dec 2008
Ort:. Tillhör
Inlägg: 1.877
Sleeping betyder inte att ditt program gör ingenting, Det betyder bara att det inte är för närvarande körs på alla processorer. Till exempel, på en maskin med enbart 1 processor du bara se 1 program märkta som körs med PS (och det är förmodligen ps själv). Med 2 processorer ser du 2, ...

IMHO ett bättre sätt att kontrollera anslutningar skulle vara att först försöka pinga värd, kolla om FTP-porten är öppen, försöker hämta en liten check-fil, och först därefter göra stora överföringar.
  #3 (permalänk)  
Old 05-27-2009
egiz81 egiz81 is offline
Registered User
  
 

Join Date: maj 2009
Inlägg: 2
Unhappy

Hej pludi,
Menar du att om jag använder sover jag blockera min FTP kommando? Enligt undvika att vänta för evigt om fjärrvärden inte fungerar, jag vill genomföra en slags timeout efter detta, om ftp är blockerad, ska jag döda den. Om jag använder sömn, är FTP kommando i bakgrunden stoppas??? Om det är sant, jag är ganska orolig ... jag försöker pinga först värden (i den verkliga fall denna kod i en loop för en lista över värdar) men så många brandväggar bock ping och om ping har ett positivt resultat, det här inte 't osäker på ftp körs.


... Jag tillbringa mycket tid om detta problem .. och jag blir galnare än jag bara!
  #4 (permalänk)  
Old 05-27-2009
pludi's Avatar
pludi pludi is offline Forum Staff  
Moderator
  
 

Join Date: Dec 2008
Ort:. Tillhör
Inlägg: 1.877
Nej, inte blockera din sömn inte FTP kommando. Låt sidobrunn i kärna processtyrning för lite:

Eftersom deras uppfinning processorkärnor kan bara utföra en process i taget. Detta innebar att en enda process väntar på inmatning från användaren kan blockera hela systemet. Så någon kom på idén om tid skivor. Varje process är tillåtet utförande under en viss tid. Efter denna tid återgår kontrollen till kärnan. Allt var bra tills vissa processer inte tillbaka kontrollen med flit.
De flesta moderna kärnor använda Förebygga istället. Igen, varje process tilldelas genomförandetid. Efter den tiden OS kärnan väcks via en timer avbryta (eller tidigare om den process som ger rättigheter tillbaka eftersom det väntar på något), är den första processen skickas till ett viloläge och en annan ges CPU-tid. Den första processen kommer att fortsätta när det är dess tur.

Nu tillbaka till din fråga: du startar FTP-processen och skicka den i bakgrunden. Det får sin tid-skivor precis som alla andra processen, men det är inte köra hela tiden. Ibland kan andra processer körs, så ftp är markerad som "vilande" eller, rättare sagt, väntar på sin tur igen. Om du bara har en CPU och få den nuvarande listan med ps,) alla processer utom för PS (troligen markeras som "vilande", eftersom ps använder för sin tilldelade tid att samla in statistik.

Mitt förslag på ditt problem skulle vara:
  1. ping värdlandet i fråga (kanske markera de pingas detta och hoppa över andra)
  2. testa om FTP-porten är öppen. Du kan antingen använda netcat (t.ex. netcat-z $ värd 21 och check $?) Eller analysera produktionen av nmap)
  3. skapa en liten checkfile på FTP-servern och hämta den först. Till exempel starta FTP kommando för att i bakgrunden. Om det fortfarande är igång efter 5 sekunder, överväga värd döda.
  4. om alla (nödvändiga) kontrollerna bra, fortsätt med den stora överföringen
Closed Thread

Komihåglista

Thread Tools Sök i denna tråd
Sök i denna tråd:

Avancerad sökning
Visningslägen Betygsätt denna tråd
Betygsätt denna tråd:

Utstationering Regler
Du får inte efter nya trådar
Du får inte efter svar
Du får inte skicka bilagor
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG] kod
HTML-koden är Av
Trackback är
Pingbacks är
Refbacks är




Alla tider är GMT -4. Klockan är nu 08:30.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Översättningar Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX och Linux Forum Innehållet upphovsrättsskyddat © 1993-2009. All Rights Reserved.Ad förvaltning RedTyger

Content Relevant webbadresser från vBSEO 3.2.0