Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.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
Linux 命令行:监视日志文件并将数据添加到数据库_Linux_Perl_Unix_Command Line_Tail - Fatal编程技术网

Linux 命令行:监视日志文件并将数据添加到数据库

Linux 命令行:监视日志文件并将数据添加到数据库,linux,perl,unix,command-line,tail,Linux,Perl,Unix,Command Line,Tail,我正在监视一个日志文件。每行的格式如下: 2012 5 29 14 20 438.815 872.737 -1.89976 -0.55156 8.68749 -0.497848 -0.54559 0 0 6 00 0 0 0 0 0 0 0

我正在监视一个日志文件。每行的格式如下:

2012    5       29      14      20              438.815 872.737 -1.89976       -0.55156     8.68749 -0.497848       -0.54559                0       0       6      00       0       0       0               0       0       0       0       0      80       9               0       0       10      0       0       0       8      00       9       0       0       0       0       0       0               2      41       84      0       0       0       1       0
如您所见,每个值都由一个选项卡分隔

如何编写一个Perl脚本来获取每一行新数据(日志文件每十分钟更新一次)并将这些数据插入MySQL数据库

我希望在命令行上尽可能多地执行这些操作

如果我执行
tail-f-n1./Eamorr.out>myPerlScript.pl
,我的perl脚本会在每次附加文件时获取数据吗


提前多谢,

如果这是您想要采取的方法,您需要一个管道,如:

tail -f -n 1 ./Eamorr.out | myPerlScript.pl
其中
myPerlScript.pl
读取的输入行如下所示:

while (<>) {
chomp;
print "Handling: $_\n";
while(){
咀嚼;
打印“处理:$\n”;

}

如果这是您想要采取的方法,您需要一个管道,如:

tail -f -n 1 ./Eamorr.out | myPerlScript.pl
其中
myPerlScript.pl
读取的输入行如下所示:

while (<>) {
chomp;
print "Handling: $_\n";
while(){
咀嚼;
打印“处理:$\n”;

}bash中的另一个问题:

#!/usr/bin/perl -w

use strict;

$|++; # unbuffer output

open FH, "tail -f /var/log/syslog |";

while (<FH>) { chomp; print; }
#/usr/bin/perl-w
严格使用;
$|++; # 无缓冲输出
打开FH,“tail-f/var/log/syslog |”;
while(){chomp;print;}
如果纯shell中没有Perl:

tail -f /var/log/syslog |
    while read a; do
        echo "INSERT INTO FOOBAR VALUES($(
            sed "s/ /','/g; s/^/'/; s/$/'/" <<< "$a")
        );"
    done
tail-f/var/log/syslog|
边读边读;做
echo“插入到FOOBAR值中($(

sed“s//”,“/g;s/^/”;s/$/'/”bash中的另一个方法:

#!/usr/bin/perl -w

use strict;

$|++; # unbuffer output

open FH, "tail -f /var/log/syslog |";

while (<FH>) { chomp; print; }
!/usr/bin/perl-w
严格使用;
$|+++#解除缓冲输出
打开FH,“tail-f/var/log/syslog |”;
while(){chomp;print;}
如果纯shell中没有Perl:

tail -f /var/log/syslog |
    while read a; do
        echo "INSERT INTO FOOBAR VALUES($(
            sed "s/ /','/g; s/^/'/; s/$/'/" <<< "$a")
        );"
    done
tail-f/var/log/syslog|
读一本书的时候;做一件事
echo“插入到FOOBAR值中($(

sed“s//”,“/g;s/^/”/;s/$/”非常好用。非常感谢!我建议使用
tail-F
而不是
-F
,以防日志文件旋转…非常好用。非常感谢!我建议使用
tail-F
而不是
-F
,以防日志文件旋转…它必须是perl吗?您也可以使用一个shell脚本,以及您的数据库命令行客户端(mysql、psql等)。它必须是perl吗?您也可以使用一个shell脚本,以及您的数据库命令行客户端(mysql、psql等)来实现这一点。