请教一个小文本读取程序技巧 - 关于程序意外中断后,用户能知道执行多少

sh/bash/dash/ksh/zsh等Shell脚本
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

Re: 请教一个小文本读取程序技巧 - 关于程序意外中断后,用户能知道执行多少

#16

帖子 BigSnake.NET » 2009-07-28 20:46

newway 写了:
BigSnake.NET 写了:
newway 写了:我知道,如果我不想丢失任何一行呢? 比如是一个信用卡记录。。。
怎么会丢失呢?
例如你每处理100行做一下记录,例如说你做到290行时挂了,应该能够找到处理了200行的记录, 然后你从201行继续就行了..
恩,这样会出现另外一种情况,就是201-290 行的数据被重复计算了, 当然可以再次查找重复的数据然后skip掉,然而有时候这种
查找也很费时间。
(还是用信用卡作例子, 每行有这个用户的花费, 然后我还输入到database这个用户的月平均花费, 那么 重复的数据就会干扰里面已有的数据)

shell script开始前加上 set -v,则每次执行的命令将会回显, 请问这个跟我在perl里面直接pirnt 有区别么, 这样一来
如果我直接屏显,不写入一个log文件,terminal关了或者重启了,不是也没了么? 如果写一个log 文件, 也有n G大小了?
我不知道你的输出是怎么样的. 如果可以的话在恢复运行时, 例如从201行开始, 那么就把输出也定位在 200行之后, 上次计算的 201~??? 直接抹掉

如果你不能保证"处理, 记录"的原子性, 即使是每处理一条记录一条也是没有实质区别的.
例如你的 log 显示你处理到 100 行, 假设你是先保证写入输出后再同步 log, 你不知道你是写出了第101行输出没有, 因为你可能在101行输出后, log 前中断了
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
回复