昨天晚上八九点钟用at命令设置了一个脚本执行一系列统计运算: 的。也因此,忘了之前想到的一个隐患,我改完了脚本,是不是应该用atrm从任务列表 里删除之前添加的命令,重新设置呢?今天早晨来到办公室,检查完统计结果,发现昨天的 担忧应验了,果然它是按照老脚本执行的。查了一下man at:
经过讨论,又修改了其中的几个地方,改完的时候我已经饿的不得了,赶紧离开办公室找吃at -f /path/stats.sh 3:30am tomorrow
For both at and batch, commands are read from standard input or the file specified with the -f option and executed.这句话可真是暗藏玄机,如果你没有像我这样被陷阱坑过一次,决不会意识到它的二义性。一般说来,参数“-f”是说:从这个文件里找东西。但这里的问题是,对于at这种事后才 执行的程序,这个参数是告诉at记住这个文件的路径,到时候来这里找?还是立马就读,哪 怕你删除了脚本,它依旧能执行?从稳定性的角度来看,立刻读取要执行的脚本并保存下来 是非常好的方式,不过在这一点上没有明示用户是个不太好的习惯。文档里说到"read from",可没告诉我什么时候读。好吧,吃一堑长一智,下次得记得从陷阱上跳过去了。希 望Linux Manual里at这篇写于Nov 1996的文档能早日更新一下。
这个故事告诉我们,任何可能出错的事儿终将出错。这话不是我说的,墨菲法则(Murphy Low)告诉我们事实如此。