2014-02-18 26 views
11

我想运行一个命令每60秒,输出保存到一个日志文件的输出。 我知道我可以通过如何保存“手表”进行文件

watch -n 60 <mycommand> 

但是打印到控制台,如果我想将它保存到一个文件,以及打印到控制台?

+2

已经在这里解决:http://superuser.com/questions/297283/store-the-output-of-date-and-watch-command-to-a-file – fedorqui

+0

使用tee http://linux.101hacks .COM/UNIX /开球命令的例子/ – Deepthought

回答

13

腕表的设计在一个控制台窗口中运行。打印输出到文件是不方便的,因为大量的不可打印格式字符。

你可以试试这个没有手表,如果准确的60秒钟没有不是一个问题:

while <some condition> 
do 
    <mycommand> 2>&1 | tee -a /path/to/logfile 
    sleep 60 
done 

这节省了输出到日志文件,并将其显示在控制台上也是如此。

+0

可以作为后台进程,使其开始每隔60秒,而不是60秒后它最后完成的运行命令。 – chepner

+0

叶普,你说得对。你可以把它添加到你的crontab,以及这样的: “* * * * * /路径/到/ mycommand的2>&1 | /路径/至/三通-a /路径/到/日志文件” 虽然这不会工作,如果你想每60秒更频繁地运行一次。 – sweetkorn

4

尝试:

while true 
do 
    watch -n 60 <command> 2>&1 | tee -a logfile 
done 

我用tee,这样你可以看到你的终端输出,以及捕获它在你的日志。