我已经搜索了n次后重复脚本的命令或解决方案,但是我无法找到它。 这是我的生锈脚本:
#!/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
我的愿望是每15分钟再次运行报告。有人告诉我使用等待,但我已经在人类等待搜索它,但无法找到 有用的例子。这就是我需要你帮助解决这个问题的原因。 非常感谢。
答案 0 :(得分:3)
每15分钟运行一次脚本
while true; do ./script.sh; sleep 900; done
或设置cron
作业或使用watch
对于c shell
,你必须写
while (1)
./script.sh
sleep 900
end
但为什么要使用csh,因为你有bash
?仔细检查语法,因为我不再记得它了......
答案 1 :(得分:1)
根据@karakfa回答,您基本上有2个选项。
1)你的第一个选择,即使你使用sleep
实现了一种忙等待策略(https://en.wikipedia.org/wiki/Busy_waiting),这个策略使用的CPU /内存比你的第二个选择(cron方法),因为即使它实际上什么都不做,你的内存足迹也会在内存中存在。
2)另一方面,在cron方法中,您的进程只会在进行有用的活动时出现。
想象一下,如果你为你机器上运行的许多程序实现这种方法,那么在等待状态下,processus会占用大量内存,它也会对调度算法产生影响(内存/ CPU使用率)。您的操作系统,因为它将有更多进程在队列中进行管理。
因此,我绝对推荐使用cron / scheduling 方法。
无论如何,无论你是否在crontab中添加条目,你的cron守护进程都将在后台运行,为什么不添加呢?
最后但并非最不重要的一点是,想象一下如果你的忙等待进程因任何原因而被杀死,如果你选择第一个选项,你需要手动重启它,你可能会丢失几个监控条目。
希望它对你有所帮助。