2017-11-15 4 views
0

Ich habe nach dem Befehl oder der Lösung gesucht, um ein Skript nach n Mal zu wiederholen, aber ich kann es nicht finden. Das ist mein rostiges Skript:Wie kann ich ein Skript wiederholen?

#!/bin/csh -f 
rm -rf result120 
rm -rf result127 
rm -rf result126 
rm -rf result125 
rm -rf result128 
rm -rf result129 
rm -rf result122 
rm -rf output 
rm -rf aaa 
### Get job id from user name 
foreach file (`cat name`) 
     echo `bjobs -u $file | awk '$1 ~ /^[0-9]+/ {print $1}' >> aaa` 
     echo "loading" 
end 
### Read in job id 
foreach file (`cat aaa`) 
    echo `bjobs -l $file >> result120` 
    echo "loading" 
end 
### Get pattern in < > 
awk '{\ 
gsub(/      /,"",$0)}\ 
BEGIN {\ 
RS =""\ 
FS=","\ 
}\ 
{\ 
s=1\ 
e=150\ 
if ($1 ~/Job/){\ 
for(i=s;i<=e;i++){\ 
    printf("%s", $(i))}\ 
}\ 
}' result120 > result126 
grep -oE '<[^>]+>' result126 > result125 
### Get Current Work Location 
awk '$1 ~ /<lsf_login..>/ {getline; print $1}' result125 >result122 #result127 
### Get another information and paste it with CWD 
foreach file1 (`cat aaa`) 
    echo `bjobs $file1 >> result128` 
    echo "getting data" 
end 
awk '$1 ~ /JOBID/ {getline; printf "%-15s %-15s %-15s %-15s %-20s\n", $1, $2, $3, $4, $5}' result128 >> result129 
paste result129 result122 >> output 
### Summary 
awk '{count1[$2]++}{count2[$4]++}{count3[$3]++}\ 
END{\ 
print "\n"\ 
print "##########################################################################"\ 
print "There are: ", NR " Jobs"\ 
for(name in count1){ print name, count1[name]}\ 
print "\n"\ 
for(queqe in count2){ print queqe, count2[queqe]}\ 
print "\n"\ 
for(stt in count3){ print stt, count3[stt]}\ 
}' output >> output 

Und mein Wunsch ist es wieder läuft pro 15 Minuten-Bericht. Jemand sagte mir, benutze warten, aber ich habe es in Mann warten gesucht und kann kein nützliches Beispiel finden. Deshalb brauche ich deine Hilfe, um dieses Problem zu lösen. Vielen Dank.

Antwort

3

das Skript alle 15 Minuten

while true; do ./script.sh; sleep 900; done 

oder eine oder watch

Für c shell verwenden cron Job setzen Sie

while (1) 
    ./script.sh 
    sleep 900 
end 

aber warum Gebrauch csh zu schreiben, da Sie haben bash ? Überprüfen Sie die Syntax doppelt, da ich mich nicht mehr daran erinnern kann ...

+0

Also füge ich die ganze Zeile "While true ...." zur letzten Zeile des Skripts hinzu? oder es bei Befehlsfenstern ausführen? Ich mache beides, aber es sagt, dass "während: Ausdruckssyntax" können Sie mir ein Exempel der Uhr geben? meine Skriptdatei ist script.csh und ich möchte es alle 15 Minuten ausführen – Lucil120

+0

meine Firma sie nur verwenden csh :( – Lucil120

1

Nach @Karakfa Antwort haben Sie grundsätzlich 2 Möglichkeiten.

1) Ihre erste Option, wenn Sie selbst ein sleep implementiert eine Art von beschäftigt Warte Strategie (https://en.wikipedia.org/wiki/Busy_waiting) verwenden, diese stragegy mehr CPU/Speicher als Ihre zweite Option verwendet (der Ansatz cron), weil Sie haben in Speicher Ihren Prozessus-Fußabdruck, auch wenn es tatsächlich nichts tut.

2) Auf der anderen Seite, in der Cron-Ansatz wird Ihr Prozess nur erscheinen, während Sie nützliche Aktivitäten.

Stellen Sie sich vor, wenn Sie diese Art von Ansatz für viele Programme auf Ihrem Rechner implementieren, wird viel Speicher von processus in Wartezustände verbraucht werden, wird es auch Auswirkungen auf den Scheduling-Algorithmus (Speicher/CPU-Auslastung) Ihres Betriebssystems, da mehr Prozesse in der Warteschlange verwaltet werden müssen.

Daher würde ich absolut die cron/scheduling Ansatz empfehlen.

Wie auch immer, Ihr Cron-Daemon wird im Hintergrund laufen, ob Sie den Eintrag hinzufügen oder nicht in der Crontab, warum also nicht hinzufügen?

Stellen Sie sich vor, wenn Ihr busy-waiting Prozessus aus irgendeinem Grund beendet wird, wenn Sie die erste Option wählen, müssen Sie es manuell neu starten und Sie könnten ein paar Überwachungseinträge verlieren.

Ich hoffe, es hilft Ihnen.

+0

danke Allan ich suche nach crontab im Hintergrund pro n Zeit laufen. können Sie mir eine geben einfaches Beispiel von Crontab? – Lucil120

+0

Ich würde empfehlen, diesen Link zu lesen, finden Sie alle Informationen für die Einrichtung! Viel Glück https: //www.cyberciti.biz/faq/how-do-ich-add-jobs-zu-cron-unter-linux-oder-unix-oses/ – Allan

+0

vielen dank mein freund Allan – Lucil120

Verwandte Themen