2017-04-19 29 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