Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js tail-f-n1返回所有内容,而不是更改_Node.js_Linux_Tail_Spawn - Fatal编程技术网

Node.js tail-f-n1返回所有内容,而不是更改

Node.js tail-f-n1返回所有内容,而不是更改,node.js,linux,tail,spawn,Node.js,Linux,Tail,Spawn,第一部分: 我在linux ubuntu中有一个text.txt文件 我想用尾巴观看文件,以便抓取文件的最后内容 # command linux tail -f text.txt 此命令返回所有内容 所以我把它改成: # command linux tail -f -n 1 text.txt 但同样的结果再次出现 我使用以下命令检查文件行: # command linux wc -l text.txt 将内容追加到文件后,行号计数将发生更改 那么首先是什么问题 第二,问题是关于node

第一部分:

我在linux ubuntu中有一个text.txt文件

我想用尾巴观看文件,以便抓取文件的最后内容

# command linux

tail -f text.txt
此命令返回所有内容

所以我把它改成:

# command linux

tail -f -n 1 text.txt
但同样的结果再次出现

我使用以下命令检查文件行:

# command linux
wc -l text.txt
将内容追加到文件后,行号计数将发生更改

那么首先是什么问题

第二,问题是关于nodejs的

nodejs:

我想运行child_进程(spawn):

有没有更好的办法来观看文件内容?私下里,这个文件越来越大。使用spawn处理如此繁重的负载是否明智?

您可以使用文件描述符进行更改:

const fs=require('fs'))
const len=26//要读取多少字节
const offset=0//从文件开头开始
const pos=null//此参数起作用:文件描述符更新为最后读取的字节
fs.open('text.txt','r',(err,fd)=>{
如果(错误){
console.log(错误)
进程。退出(1)
}
//fd是一个文件描述符
常数kill=setInterval(持续加载,1000)
函数keepReading(){
fs.read(fd,Buffer.alloc(len),offset,len,pos,(err,bytes,buff)=>{
如果(错误){
console.log(错误)
进程。退出(1)
}
如果(字节!==0){
console.log(buff.toString())
}
})
}
process.once('SIGINT',()=>{
清除间隔(杀死)
})
})
该解决方案的优点是跨平台

使用spawn处理如此重的负载是否明智

繁殖它比读取文件描述符慢


注:在节点13中,有更友好的界面

tnx用于回复。是否仍要更改文件行的len字节?您可以将其设置为
16384
(16kb),然后将数据推入writer并从文件中读取。读取文件时,文件大小不应导致显著的性能开销。它足够聪明,可以从末尾向后读取块,计算行数,然后向前打印。即使它返回几个块,它们仍将在缓存中。(BusyBox可能有劣质版本。)
let tailing_my_file = spawn("tail -f ./text.txt")    // in root directory of project