Linux 每10秒清除一次脚本日志

Linux 每10秒清除一次脚本日志,linux,bash,shell,Linux,Bash,Shell,我有一个名为run.sh的脚本 这是我的脚本代码: #!/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"

我有一个名为run.sh的脚本

这是我的脚本代码:

#!/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 $@
   ./tg/tgcli -s ./bot/bot.lua $@
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中的print命令,但无法删除print命令

你能每10秒添加一些代码来清除我的脚本日志吗

非常感谢

我的脚本输出不保存在任何地方,只在终端中显示

我想要一个代码,比如linux终端上的clear命令,每10分钟或5分钟清除一次脚本日志。

在脚本运行5天后,我可以(有时不能)登录我的服务器,而我的服务器变得非常慢,我必须等待3或5分钟才能登录我的服务器,而登录我的服务器后,我的服务器又变得非常快


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

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

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

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 $@
您可以尝试这样的操作,它将为初始进程设置背景,然后每60秒运行一次清除以清除终端窗口。是否有任何原因不将输出写入日志文件?单凭这一点就可以解决你的一些问题

#!/bin/bash

./tg/tgcli -s ./bot/bot.lua $@ &
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

您能否澄清1)脚本输出在哪里?在终端或某个地方的日志文件中2)为什么您认为脚本输出会减慢服务器的速度?我在1秒内用ssh连接服务器。但在5天的脚本运行后,我的服务器变得非常慢,我连接它并等待3分钟。加载日志,3分钟后,我的服务器变得很快!我使用byobu屏幕运行脚本。我不认为byobu会让我的服务器变慢,我确信我的日志会让我的服务器变慢。谢谢你,但是我的脚本输出不会保存到任何地方!给我看看。我想每5分钟或10分钟清除一次终端屏幕。