2017-04-19 31 views
0

我有脚本:run.sh清楚我的脚本日志名称为每10秒

这是我的脚本代码:

#!/usr/bin/env bash 


install() { 
     sudo apt-get update 
     sudo apt-get upgrade 
} 

if [ "$1" = "install" ]; then 
    install 
    else 

if [ ! -f ./tg/tgcli ]; then 
    echo "tg not found" 
    echo "Run $0 install" 
    exit 1 
fi 

    #sudo service redis-server restart 
    #./tg/tgcli -s ./bot/bot.lua -l 1 -E [email protected] 
    ./tg/tgcli -s ./bot/bot.lua [email protected] 
fi 

并运行时,这个脚本给我输出这样每秒:

[09:54] 2014 Hello 
[09:55] 2014 Hi 
[09:57] 2014 How Are you ? 
and many like this (thousands in hour !) 

和我的服务器在5小时内变慢。

我检查bot.lua中的打印命令,但没有办法删除打印它。

你可以添加一些代码来清除我的脚本日志每10秒?

非常感谢。

我的脚本输出不存储在任何位置并且只显示我在终端

我希望有一个代码,如Linux终端上的明确命令,清除我的脚本日志每隔10分钟5分钟。

5天脚本的运行,我可以(有时也不能)登录我的服务器和我的服务器变得非常慢,我必须等待3或5分钟登录我的服务器和这个惊人登录后,我的服务器我的服务器之后再次快速!

我忘了说我用byobu屏幕来运行我的脚本,我想屏幕让我的服务器变慢。

+0

您能说清楚1)脚本输出在哪里?在终端或某处的日志文件中2)为什么您认为脚本输出会降低您的服务器速度? –

+0

我在1秒内用ssh连接我的服务器。但经过5天的脚本运行我的服务器变得非常慢,我连接它并等待3分钟。加载日志和3分钟后我的服务器变快! – Nomad

+0

我使用byobu屏幕来运行我的脚本。我不认为byobu得到我的服务器缓慢,我确定我的日志让我的服务器变慢 – Nomad

回答

0

我不认为像这样简单的事情会导致您的服务器变慢,但您可以在脚本中添加一个检查来计算每次运行日志文件的大小或行数。

该函数假定您将输出重定向到日志文件。将变量设置为最有意义的变量。

log_check() { 
    line_count=$(wc -l $log_file | awk '{print $1}') 
    size_check=$(du -ax $log_file | awk '{print $1}') 
    max_file_size="1500" 
    max_file_length="1000" 

    if [[ $line_count >= $max_file_length || $size_check >= $max_file_size ]]; then 
     echo "" > $log_file 
    fi 
} 

我也建议使用[[]]在[],因为这是一个bash脚本,只要你不被它POSIX兼容的和唯一的计划打算用它使用bash [[] ]总是比[]好。

编辑:

既然你日志输出到终端,而不是你可以在你的脚本中使用clear命令的文件。

尝试了这一点,看到的功能是如何工作的

for i in {1..20}; do 
    echo $i 
    if ((i == 10)); then 
     clear 
    fi 
done 

我假设你的代码中有一个循环的地方,如果不这样会更复杂一点清除终端会话。我真的不知道你的代码的一部分实际上是打印任何东西到stdout,我猜这是这首曲子在这里

./tg/tgcli -s ./bot/bot.lua [email protected] 

你可以尝试这样的事情,这将后台您最初的过程,然后运行清晰每60秒清除一次终端窗口。是否有任何理由不将输出写入日志文件?这一点也可以解决你的一些问题。

#!/bin/bash 

./tg/tgcli -s ./bot/bot.lua [email protected] & 
pid="$!" 

check_pid() { 
    ps -ef |grep "$pid"|grep -v 'grep' &>/dev/null 
} 

cnt=1 
until ! check_pid; do 
    if ((cnt == 6)); then 
     clear 
     cnt=1 
    fi 
    sleep 10 
    ((cnt++)) 
done 
+0

谢谢,但我的脚本输出不保存在任何地方!并为我展示。我想每5分钟或10分钟清除一次终端屏幕。 – Nomad

+0

如在linux终端上清除命令 – Nomad

+0

好的,那么,更新我的回应。 – stobiewankenobi