我有一個腳本會在使用太多內存時發出嘟嘟聲。我想將此腳本部署到遠程計算機並通過SSH運行。不幸的是,它使遠程計算機發出嘟嘟聲,而不是我的。有沒有辦法解決?當我通過SSH在遠程計算機上運行bash腳本時,如何在本地計算機上觸發聲音?
#!/bin/bash
# Peter Black
# alarm.sh
max_percent=94
sleeper=1
frequency=1000
duration=300
# To enable the script:
# chmod u+x alert.sh
# get the total available memory:
function total_memory {
echo "Total memory available: "
TOTAL_MEM=$(grep MemTotal /proc/meminfo | awk '{print $2}')
#Another way of doing that:
#total_mem=$(awk '/MemTotal/ {print $2}' /proc/meminfo)
echo "---------- $TOTAL_MEM ---------------"
}
# alarm function params: frequency, duration
# Example:
# _alarm 400 200
_alarm() {
(\speaker-test --frequency $1 --test sine)&
pid=$!
\sleep 0.${2}s
\kill -9 $pid
}
function total_available_memory {
total_available_mem=$(</proc/meminfo grep MemTotal | grep -Eo '[0-9]+')
total_free_mem=$(</proc/meminfo grep MemFree | grep -Eo '[0-9]+')
total_used_mem=$((total_available_mem - total_free_mem))
#percent_used=$((total_available_mem/total_free_mem))
# print the free memory
# customize the unit based on the format of your /proc/meminfo
percent_used=$(printf '%i %i' $total_used_mem $total_available_mem | awk '{ pc=100*$1/$2; i=int(pc); print (pc-i<0.5)?i:i+1 }')
if [ $percent_used -gt $max_percent ]; then
echo "TOO MUCH MEMORY IS BEIGN USED!!!!!!!! KILL IT!"
_alarm $frequency $duration
fi
echo "Available: $total_available_mem kb - Used: $total_used_mem kb - Free: $total_free_mem kb - Percent Used: $percent_used %"
}
# RUN THE FUNCTIONS IN AN INFINITE LOOP:
# total_memory
echo "Press [CTRL+C] to stop.."
while :
do
total_available_memory
sleep $sleeper
done
然後,您必須爲您的機器編寫一個服務器,並讓遠程主機向您發送一些數據,以便服務器可以處理它併發出嘟嘟聲。 – ForceBru
您可以對來自腳本的特定輸出消息作出反應,並觸發本地計算機上的聲音或執行ForceBru建議的操作。 –
我可以編寫一個在本地計算機上運行的腳本,通過SSH連接到遠程計算機並查詢內存? –