当前位置: 技术问答>linux和unix
请教怎么根据进程输出的日记文件内容判断来重起进程?
来源: 互联网 发布时间:2015-01-21
本文导语: 我有一个fee进程,输出日记文件为fee.log 1.我要判断fee.log的最后一行如有system这个字符串,则把fee进程重起。 2.我要判断fee.log日记文件在1个小时内文件大小没变则把fee进程重起。 请教以上两个问题该如何用脚本实现?...
我有一个fee进程,输出日记文件为fee.log
1.我要判断fee.log的最后一行如有system这个字符串,则把fee进程重起。
2.我要判断fee.log日记文件在1个小时内文件大小没变则把fee进程重起。
请教以上两个问题该如何用脚本实现?
1.我要判断fee.log的最后一行如有system这个字符串,则把fee进程重起。
2.我要判断fee.log日记文件在1个小时内文件大小没变则把fee进程重起。
请教以上两个问题该如何用脚本实现?
|
只说shell程序的算法:
1.可以用awk来实现:先用cat fee.log|wc -l来确定最后一行的行号,用变量count记录;再在awk中判断如果NR==$count,那么就用grep 命令对该行(最后一行),看匹配的结果来确定操作。
2.这个大小不变的问题有点麻烦,我不知道你具体的情况是什么样的。
不过,系统提供了两个时间(最近修改时间,最近访问时间),这两个时间都可以取出来使用。如果你确定每次修改都会使长度(文件大小)改变的话,那么是不难的。否则,你就要自己在程序中定义一个变量,每隔一段时间来记录长度,当然可以只记录长度变化情况。
有点麻烦,不过大致是可以实现的。请高手指点。
1.可以用awk来实现:先用cat fee.log|wc -l来确定最后一行的行号,用变量count记录;再在awk中判断如果NR==$count,那么就用grep 命令对该行(最后一行),看匹配的结果来确定操作。
2.这个大小不变的问题有点麻烦,我不知道你具体的情况是什么样的。
不过,系统提供了两个时间(最近修改时间,最近访问时间),这两个时间都可以取出来使用。如果你确定每次修改都会使长度(文件大小)改变的话,那么是不难的。否则,你就要自己在程序中定义一个变量,每隔一段时间来记录长度,当然可以只记录长度变化情况。
有点麻烦,不过大致是可以实现的。请高手指点。
|
awk中是对每一个选取的行进行处理(这个程序为了方便,牺牲了速度)
NR记录当前处理的行。那么先用一个命令知道这个文件的行数,这很容易的吧?上面也说了;那么就说awk中的处理了。
awk "NR==$count {操作}"
第二个问题,因为我从来没有做过这类的问题,现在也不在linux下,无法上机调试,也没有什么现成例子。不过所谓的最近修改时间,系统是有记录的,用find命令就有这类参数。我什么时候有空了调试后给你。
NR记录当前处理的行。那么先用一个命令知道这个文件的行数,这很容易的吧?上面也说了;那么就说awk中的处理了。
awk "NR==$count {操作}"
第二个问题,因为我从来没有做过这类的问题,现在也不在linux下,无法上机调试,也没有什么现成例子。不过所谓的最近修改时间,系统是有记录的,用find命令就有这类参数。我什么时候有空了调试后给你。