我使用此命令跟踪ubuntu上文件的更改:
tail -f /var/log/auth.log
随着文件的更改,我看到控制台上打印的输出。非常好。
因此我的bash脚本看起来像这样:
#!/bin/bash
tail -fn0 /var/log/auth.log | \
while read line ; do
x=$(echo "$line" | grep -o "sftp-server")
# if line contains sftp-server then:
if [ "$x" == "sftp-server" ]; then
# ... do work with line <------------------
fi
done
我需要在mono(c#)中运行这个bash脚本。 所以我的问题是如何用c#做到这一点?如果我在c#bellow中执行某些代码,它会做同样的事情吗?
var fileStream = File.OpenRead("/var/log/auth.log");
while (true)
{
Thread.Sleep(500);
byte[] buffer = new byte[1024];
StreamReader reader = new StreamReader(fileStream);
if (fileStream.CanRead)
{
var line = reader.ReadLine();
if (string.IsNullOrEmpty(line) == false)
{
// do work with line.... <-----------------------
}
}
}