The UNIX and Linux Forums  

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
Skicka aktivering post .. bvijaycom Forum Support Area för Oregistrerad Användare & Account Problem 1 05-19-2008 05:18
Aktivering jamalwil7 Forum Support Area för Oregistrerad Användare & Account Problem 0 05-15-2008 04:20
Account Activation Problem Miku Forum Support Area för Oregistrerad Användare & Account Problem 1 08-09-2007 06:17
Visste inte att få aktivering post pl_cyber Forum Support Area för Oregistrerad Användare & Account Problem 0 05-30-2007 12:09
Trådlöst ipw2200 aktivering XinU * UNIX för avancerade & Expertanvändare 4 01-21-2007 01:25

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 02-03-2008
Raynon Raynon is offline
Registered User
  
 

Join Date: Sep 2006
Ort: Sg
Inlägg: 350
Cronjob Aktiveringsdatum

Hej Alla,

Jag har satt en cronjob att köra ett script på en frekvens på 10 min.
Men om skriptet tar mer än 10 minuter att genomföra, hur kommer cronjob beter sig?
1) Är det ignorera den pågående processen och starta om hela processen igen?
2) Eller handlar det inte längre att utlösa skriptet igen, om inte tidigare är avslutad?
  #2 (permalänk)  
Old 02-03-2008
Smiling Dragon's Avatar
Smiling Dragon Smiling Dragon is offline Forum Advisor  
Oorganiserad User
  
 

Join Date: Nov 2007
Plats: Nya Zeeland
Inlägg: 922
Post

Citat:
Ursprungligen postat av Raynon View Post
Hej Alla,

Jag har satt en cronjob att köra ett script på en frekvens på 10 min.
Men om skriptet tar mer än 10 minuter att genomföra, hur kommer cronjob beter sig?
1) Är det ignorera den pågående processen och starta om hela processen igen?
2) Eller handlar det inte längre att utlösa skriptet igen, om inte tidigare är avslutad?
Beror på din cron genomförandet, men i allmänhet kommer det att köras en annan kopia av skriptet 10 minuter efter det första en startas - oavsett hur lång den första körningen tar.

Lösningar:
  • Gör ditt manus reentrant - dvs skriva det så att det körs flera gånger på en gång är inte ett problem.
  • Gör ditt manus medveten om hur många gånger det är nu igång - dvs skapa en låsfil när den startar upp och kontrollera om detta varje gång du startar.
  • Använd inte cron har skriptet körs kontinuerligt och hantera sin egen planering - dvs sömn 600
  • Använd inte cron, få en bättre Scheduler - beroende på miljö, detta kan vara något liknande anacron eller kontroll-m.
  #3 (permalänk)  
Old 02-04-2008
Raynon Raynon is offline
Registered User
  
 

Join Date: Sep 2006
Ort: Sg
Inlägg: 350
Citat:
Ursprungligen postat av Smiling Dragon View Post
Beror på din cron genomförandet, men i allmänhet kommer det att köras en annan kopia av skriptet 10 minuter efter det första en startas - oavsett hur lång den första körningen tar.

Lösningar:
  • Gör ditt manus reentrant - dvs skriva det så att det körs flera gånger på en gång är inte ett problem.
  • Gör ditt manus medveten om hur många gånger det är nu igång - dvs skapa en låsfil när den startar upp och kontrollera om detta varje gång du startar.
  • Använd inte cron har skriptet körs kontinuerligt och hantera sin egen planering - dvs sömn 600
  • Använd inte cron, få en bättre Scheduler - beroende på miljö, detta kan vara något liknande anacron eller kontroll-m.

Hej,

Kör skriptet kontinuerligt sätt att säga att jag måste lämna en kommandotolk fönster alltid öppen. När stängd processen kommer att få ett slut, och också en annan nackdel är att en oändlig looping script äter upp en hel del resurser, ville, eller hur?
Så jag tror fortfarande att cron är mer praktiskt ett. Men jag har ingen aning om anacron eller kontroll-m. Kan ni upplyst mig om detta?

Kan du ge ett exempel på manus på nytt aktör?
Jag tänkte om jag kunde göra skriptet kontrollera processen för att se om den tidigare processen har slutförts, kan någon experter ge mig några exempel på detta? Jag använder csh av vägen.
  #4 (permalänk)  
Old 02-06-2008
Smiling Dragon's Avatar
Smiling Dragon Smiling Dragon is offline Forum Advisor  
Oorganiserad User
  
 

Join Date: Nov 2007
Plats: Nya Zeeland
Inlägg: 922
Citat:
Ursprungligen postat av Raynon View Post
Kör skriptet kontinuerligt sätt att säga att jag måste lämna en kommandotolk fönster alltid öppen. När stängd processen kommer att avslutas
Inte alls, bara flytta den till bakgrund, inte annorlunda än alla andra daemonised saker du använder i ditt system. Om man gillar att skriva till stdout, omdirigera denna till en loggfil (eller / dev / null om du föredrar det).
Citat:
Ursprungligen postat av Raynon View Post
och även en annan nackdel är att en oändlig looping script äter upp en hel del resurser, ville, eller hur?
Mycket som tidigare, inga problem här heller. Använd bara sova längst ned i loopen för att stoppa den SMÖRJ.
Citat:
Ursprungligen postat av Raynon View Post
Så jag tror fortfarande att cron är mer praktiskt ett.
Ditt samtal naturligtvis.
Citat:
Ursprungligen postat av Raynon View Post
Men jag har ingen aning om anacron eller kontroll-m. Kan ni upplyst mig om detta?
Anacron är en slighty mer avancerad version av cron, får eller inte får göra vad du vill. Gratis (tror jag)
Control-M är en BMC produkt som hanterar planering på företagsnivå, stöder jobb dependancies, förstår begränsade resurser och fungerar över flera plattformar. Kostnader lite.

Google för mer info om dessa
Citat:
Ursprungligen postat av Raynon View Post
Kan du ge ett exempel på manus på nytt aktör?
Reentrant bara innebär att den kan köras flera gånger på en gång utan att gå ostadig. Ett exempel:
Inte rentrant:

Kod:
#!/bin/sh
/usr/bin/do_some_stuff > /var/log/did_some_stuff.log
do some other things
if grep 'it worked' /var/log/did_some_stuff.log
then
  /usr/sbin/assume_we_are_good_to_go
else
  echo "Argh"
fi

Reentrant:

Kod:
#!/bin/sh
/usr/bin/do_some_stuff > /var/log/did_some_stuff.$$.log
do some other things
if grep 'it worked' /var/log/did_some_stuff.$$.log
then
  /usr/sbin/assume_we_are_good_to_go
else
  echo "Argh"
fi
rm /var/log/did_some_stuff.$$.log

Det första exemplet kan hamna behandlingen tillbaka log av en annan instans av sig själv. Den andra versionen innehåller den pågående ID i loggfilen som förhindrar att detta händer.

Ett annat, enklare sätt är att bara titta på att tabellen för en annan kopia av skriptet, om hittas avsluta omedelbart.

Citat:
Ursprungligen postat av Raynon View Post
Jag tänkte om jag kunde göra skriptet kontrollera processen för att se om den tidigare processen har slutförts, kan någon experter ge mig några exempel på detta? Jag använder csh av vägen.
(Förutsatt att systemet V jämfört med BSD)

Kod:
#!/bin/csh
set numprocs=`ps -ef | grep -v grep | grep $scriptname | wc -l | awk '{ print $1 }'`
if ($numprocs == 1) then
    # carry on
else
   echo "Another instance is already running, exiting..."
   exit 0
endif

  #5 (permalänk)  
Old 02-13-2008
Raynon Raynon is offline
Registered User
  
 

Join Date: Sep 2006
Ort: Sg
Inlägg: 350
Hej,

Jag tänker på just detta exempel som du har gett mig.


Kod:
#!/bin/csh
set numprocs=`ps -ef | grep -v grep | grep $scriptname | wc -l | awk '{ print $1 }'`
if ($numprocs == 1) then
    # carry on
else
   echo "Another instance is already running, exiting..."
   exit 0
endif

Vad är betydelsen av numprocs?
Om det är lika med 1, varför visar att skriptet körs inte längre?

Jag försökte en enkel csh skriptet nedan och det gör, inte riktigt arbete.
När det är att sova, namnet på det manus som är "myscriptname"Avspeglas inte under "Ps-ef"Det visar bara " usr 28951 28941 0 15:00:39 pts / 7 0:00 sova 100 ".

Kan ni hjälpa till?


Kod:
#!/bin/csh

echo xxx
echo ppp 
echo zzz

sleep 100

  #6 (permalänk)  
Old 02-13-2008
Smiling Dragon's Avatar
Smiling Dragon Smiling Dragon is offline Forum Advisor  
Oorganiserad User
  
 

Join Date: Nov 2007
Plats: Nya Zeeland
Inlägg: 922
Citat:
Ursprungligen postat av Raynon View Post
Jag tänker på just detta exempel som du har gett mig.

Kod:
#!/bin/csh
set numprocs=`ps -ef | grep -v grep | grep $scriptname | wc -l | awk '{ print $1 }'`
if ($numprocs == 1) then
    # carry on
else
   echo "Another instance is already running, exiting..."
   exit 0
endif

Vad är betydelsen av numprocs?
Om det är lika med 1, varför visar att skriptet körs inte längre?
Eftersom en kopia är igång, den som för närvarande utför. Det är ute efter en annan version av sig själv (dvs. 2 eller mer) i de fall det finns andra kopior fortfarande.
Citat:
Ursprungligen postat av Raynon View Post
Jag försökte en enkel csh skriptet nedan och det gör, inte riktigt arbete.
När det är att sova, namnet på det manus som är "myscriptname"Avspeglas inte under "Ps-ef"Det visar bara " usr 28951 28941 0 15:00:39 pts / 7 0:00 sova 100 ".
Fungerar för mig, när jag kör en csh skript med sova i den, ser jag sova, _and_ de viktigaste skriptet körs.
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 06:52.


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