我使用一些日志系统,每小时创建一个日志文件,如下所示:
SoftwareLog.2010-08-01-08
SoftwareLog.2010-08-01-09
SoftwareLog.2010-08-01-10
Run Code Online (Sandbox Code Playgroud)
我试图跟踪最新的日志文件给出一个模式(例如SoftwareLog*),我意识到:
tail -F (tail --follow=name --retry)
Run Code Online (Sandbox Code Playgroud)
但这只遵循一个特定的名称 - 这些名称按日期和小时分列.我尝试过类似的东西:
tail --follow=name --retry SoftwareLog*(.om[1])
Run Code Online (Sandbox Code Playgroud)
但是,通配符语句在传递给尾部之前会被重新发送,并且不会在每次尾部重试时重新执行.
有什么建议?
我正在研究Tail调用递归,并且遇到了一些提到的文档.Sun Java没有实现尾调用优化.我写了以下代码以3种不同的方式计算斐波纳契数:1.迭代2.头递归3.尾递归
public class Fibonacci {
public static void main(String[] args) throws InterruptedException {
int n = Integer.parseInt(args[0]);
System.out.println("\n Value of n : " + n);
System.out.println("\n Using Iteration : ");
long l1 = System.nanoTime();
fibonacciIterative(n);
long l2 = System.nanoTime();
System.out.println("iterative time = " + (l2 - l1));
System.out.println(fibonacciIterative(n));
System.out.println("\n Using Tail recursion : ");
long l3 = System.nanoTime();
fibonacciTail(n);
long l4 = System.nanoTime();
System.out.println("Tail recursive time = " + (l4 - l3));
System.out.println(fibonacciTail(n));
System.out.println("\n Using Recursion : ");
long …
Run Code Online (Sandbox Code Playgroud) tail */filename
Run Code Online (Sandbox Code Playgroud)
有效,但是
tail -1 */filename
Run Code Online (Sandbox Code Playgroud)
没有.为什么是这样?是否有一个衬垫来执行此任务没有循环?
head -1 */filename
Run Code Online (Sandbox Code Playgroud)
适用于一些奇怪的原因.
Swift Array
有一个first
返回数组第一个元素的函数(如果数组为空,则返回nil.)
是否有内置函数将返回没有第一个元素的数组的其余部分?
我已经看了一千次,我总是忘记它,所以,这里是永恒的:
Solaris有一些尴尬的语法tail
.
我该如何做相当于BSD的?tail -nN
我想要的是尾部输入的最后N行.
我注意到tail +2
Solaris ksh支持,但在Red Hat Linux中,会出现错误:
c008>> ps -p 4009,6282,31401,31409 | tail +2
tail: cannot open `+2' for reading: No such file or directory
Run Code Online (Sandbox Code Playgroud)
在Solaris中,
bjbldd>> ps -p 2622,16589,11719,846 |tail +2
16589 ?? 0:00 xterm
846 pts/180 0:00 cscope
11719 pts/180 0:00 cscope
2622 pts/114 0:00 apxcscop
Run Code Online (Sandbox Code Playgroud)
该行PID TTY TIME CMD
被"tail +2"排除.
我知道grep -v PID
会工作.但我想知道Linux尾部是否有类似的选项?
我正在使用tail -f
打印不断变化的文件的内容.截断文件时,它显示如下:
blah (old)..
blah more (old)..
tail: file.out: file truncated
blah..
blah more..
Run Code Online (Sandbox Code Playgroud)
当我经常更改文件时,这会变得很混乱,因此很难看到文件的开始/结束位置.clear
当文件被截断时,是否有某种方法以某种方式显示屏幕,以便它显示如下?
tail: file.out: file truncated
blah..
blah more..
Run Code Online (Sandbox Code Playgroud) 我不知道怎么说这个,所以我会打出来然后编辑并回答任何问题.
目前在我的本地网络设备(基于PHP4)上我使用它来定制一个实时系统日志文件:http://commavee.com/2007/04/13/ajax-logfile-tailer-viewer/
这很好用,并且每1秒加载一个执行a的外部页面(logfile.php)tail -n 100 logfile.log
.脚本不进行任何缓冲,因此它在屏幕上显示的结果是日志文件中的最后100行.
logfile.php包含:
<? // logtail.php $cmd = "tail -10 /path/to/your/logs/some.log"; exec("$cmd 2>&1", $output);
foreach($output as $outputline) {
echo ("$outputline\n");
}
?>
Run Code Online (Sandbox Code Playgroud)
这部分运作良好.
我已经调整了logfile.php页面,将$ outputline写入一个新的文本文件,只需使用 fwrite($fp,$outputline."\n");
虽然这有效但我在创建的新文件中存在重复问题.
显然每次运行tail -n 100都会产生结果,下次运行它会产生一些相同的行,因为重复这一点我最终会在新的文本文件中出现多行重复.
我不能直接比较我要写入前一行的行,因为可能有相同的匹配.
有没有什么方法可以比较当前100行的块与前一个块,然后只写不匹配的行..再次可能的问题,块A和B将包含所需的相同行...
是否可以更新logfile.php以记录它在我的日志文件中最后占用的位置,然后只读取那里的下一行并将其写入新文件?
日志文件可能高达500MB,所以我不想每次都读取它.
任何建议或建议欢迎..
谢谢
更新@ 16:30
我有点使用这个:
$file = "/logs/syst.log";
$handle = fopen($file, "r");
if(isset($_SESSION['ftell'])) {
clearstatcache();
fseek($handle, $_SESSION['ftell']);
while ($buffer = fgets($handle)) {
echo $buffer."<br/>";
@ob_flush(); @flush();
}
fclose($handle);
@$_SESSION['ftell'] = ftell($handle);
} else {
fseek($handle, -1024, SEEK_END); …
Run Code Online (Sandbox Code Playgroud) 使用dplyr时,我无法更改数据帧的最后一个值.我想按用户和标记进行分组,并将时间更改为0,以获取组中的最后一个值/行.
user_id tag Time
1 268096674 1 3
2 268096674 1 10
3 268096674 1 1
4 268096674 1 0
5 268096674 1 9999
6 268096674 2 0
7 268096674 2 9
8 268096674 2 500
9 268096674 3 0
10 268096674 3 1
...
Run Code Online (Sandbox Code Playgroud)
期望的输出:
user_id tag Time
1 268096674 1 3
2 268096674 1 10
3 268096674 1 1
4 268096674 1 0
5 268096674 1 0
6 268096674 2 0
7 268096674 2 9
8 268096674 2 …
Run Code Online (Sandbox Code Playgroud) 对于Pandas中的DataFrame,如何选择前5个值和后5个值?例如
In [11]: df
Out[11]:
A B C
2012-11-29 0 0 0
2012-11-30 1 1 1
2012-12-01 2 2 2
2012-12-02 3 3 3
2012-12-03 4 4 4
2012-12-04 5 5 5
2012-12-05 6 6 6
2012-12-06 7 7 7
2012-12-07 8 8 8
2012-12-08 9 9 9
Run Code Online (Sandbox Code Playgroud)
如何显示第一行和最后一行?