![]() |
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.
|
|
google unix.com
|
|||||||
| Forum | Registrera | Forum Regler | Länkar | Album | FAQ | Medlemslista | Kalender | Söka | Dagens inlägg | Markera forum som lästa |
| 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 |
![]() |
|
|
LinkBack | Thread Tools | Sök i denna tråd | Rate Thread | Visningslägen |
|
|
|
||||
|
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. |
|
||||
|
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! ![]() |
|
|||||
|
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:
|