Awk 如何重复脚本?

Awk 如何重复脚本?,awk,csh,Awk,Csh,我已搜索命令或解决方案,以在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 n

我已搜索命令或解决方案,以在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
#/垃圾箱/垃圾箱-f
rm-rf结果120
rm-rf结果127
rm-rf结果126
rm-rf结果125
rm-rf结果128
rm-rf结果129
rm-rf结果122
射频输出
rm-rf aaa
###从用户名获取作业id
foreach文件(`cat name`)
echo`bjobs-u$file | awk'$1~/^[0-9]+/{print$1}'>>aaa`
回声“加载”
结束
###读入作业id
foreach文件(`cat aaa`)
echo`bjobs-l$file>>结果120`
回声“加载”
结束
###输入模式<>
awk'{\
gsub(/,“”,$0)}\
开始{\
RS=“”\
FS=“,”\
}\
{\
s=1\
e=150\
如果($1~/Job/){\
对于(i=s;i’result126>result125
###获取当前工作位置
awk'$1~/{getline;print$1}'result125>result122#result127
###获取其他信息并将其粘贴到CWD
foreach文件1(`cat aaa`)
echo`bjobs$file1>>结果128`
回显“获取数据”
结束
awk'$1~/JOBID/{getline;printf“%-15s%-15s%-15s%-15s%-20s\n”、$1、$2、$3、$4、$5}结果128>>result129
粘贴结果129结果122>>输出
###总结
awk'{count1[$2]+}{count2[$4]+}{count3[$3]+}\
结束{\
打印“\n”\
摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩摩############################\
打印“有:”,NR“作业”\
对于(count1中的名称){打印名称,count1[name]}\
打印“\n”\
for(count2中的queqe){print queqe,count2[queqe]}\
打印“\n”\
对于(计数3中的stt){打印stt,计数3[stt]}\
}'输出>>输出
我的愿望是每15分钟运行一次,以获取报告。有人告诉我使用等待,但我在man Wait中搜索了它,但找不到任何 这就是为什么我需要你的帮助来解决这个问题。
非常感谢。

每15分钟运行一次脚本

while true; do ./script.sh; sleep 900; done
或设置
cron
作业或使用
watch

对于
cshell
您必须编写

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

但是既然你有
bash
,为什么要使用csh呢?请仔细检查语法,因为我已经不太记得它了…

每15分钟运行一次脚本

while true; do ./script.sh; sleep 900; done
或设置
cron
作业或使用
watch

对于
cshell
您必须编写

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

但是既然你有
bash
,为什么要使用csh呢?仔细检查语法,因为我已经不太记得它了…

在@karakfa答案之后,你基本上有两个选项

1) 第一个选项,即使使用
睡眠
实现了一种忙等待策略(),该策略使用的CPU/内存也比第二个选项(cron方法)多,因为即使processus实际上什么都不做,也会占用内存

2) 另一方面,在cron方法中,processus只会在执行有用的活动时出现

试想一下,如果您对机器上运行的许多程序实施这种方法,processus将在等待状态下消耗大量内存,这也将对操作系统的调度算法产生影响(内存/CPU使用),因为它将在队列中有更多的进程需要管理

因此,我绝对推荐cron/scheduling方法

无论如何,无论您是否在crontab中添加条目,您的cron守护进程都将在后台运行,那么为什么不添加它呢

最后但并非最不重要的一点是,想象一下,如果您繁忙等待的processus因任何原因被终止,如果您选择第一个选项,您将需要手动重新启动它,并且可能会丢失一些监视条目


希望它能帮助你。

在@karakfa的回答之后,你基本上有两个选择

1) 第一个选项,即使使用
睡眠
实现了一种忙等待策略(),该策略使用的CPU/内存也比第二个选项(cron方法)多,因为即使processus实际上什么都不做,也会占用内存

2) 另一方面,在cron方法中,processus只会在执行有用的活动时出现

试想一下,如果您对机器上运行的许多程序实施这种方法,processus将在等待状态下消耗大量内存,这也将对操作系统的调度算法产生影响(内存/CPU使用),因为它将在队列中有更多的进程需要管理

因此,我绝对推荐cron/scheduling方法

无论如何,无论您是否在crontab中添加条目,您的cron守护进程都将在后台运行,那么为什么不添加它呢

最后但并非最不重要的一点是,想象一下,如果您繁忙等待的processus因任何原因被终止,如果您选择第一个选项,您将需要手动重新启动它,并且可能会丢失一些监视条目


希望对您有所帮助。

所以我在脚本的最后一行添加了整行“While true…”?或者在命令窗口运行它?我都这样做,但它说“While:Expression Syntax”您能给我一个手表示例吗?我的脚本文件是script.csh,我想每15分钟运行一次我的公司他们只使用csh:(所以我添加了整行代码)“While true…”到脚本的最后一行?或者在命令窗口运行它?我两者都做,但它说“While:Expression Syntax”你能给我一个watch示例吗?我的脚本文件是script.csh,我想每15分钟运行一次我的公司他们只使用csh:(感谢Allan,我正在搜索crontab,以便每n次在后台运行一次。你能给我一个crontab的简单示例吗?我建议你阅读此链接,你会找到设置的所有信息!祝你好运哦,上帝。我测试了crontab,但似乎脚本不起作用。我的crontab是52 13***/home/u/duy/script.csh,但脚本不起作用。)sn也不起作用?它不能仅仅为了添加一个快速注释来纠正错误观念而读取输入文件。任何有自尊心的操作系统都会在没有忙着等待的情况下实现睡眠;因此这不是性能问题。但是同意监视和可维护性问题。谢谢Allan我是sear