linux - 当我通过 SSH 在远程计算机上运行 bash 脚本时,如何在本地计算机上发出声音?

标签 linux bash memory-management ssh

我有一个脚本,当使用太多内存时会发出蜂鸣声。我想将此脚本部署到远程计算机并通过 SSH 运行它。不幸的是,它使远程计算机发出蜂鸣声,而不是我的计算机。有什么办法可以解决这个问题吗?

#!/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

最佳答案

作为 bash,只需打印几次“bell”字符,而不是使用扬声器测试程序... echo -e "\007\007\007" 它使本地声音均匀在您在远程计算机上执行的脚本中。频率和音量是不同的问题......

编辑:更好的是,每次铃声响起后就 sleep ,这样你就能听到铃声! :)

for i in {0..10}
do
    echo -en "\007"
    sleep 0.5
done

关于linux - 当我通过 SSH 在远程计算机上运行 bash 脚本时,如何在本地计算机上发出声音?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30245185/

相关文章:

objective-c - 自定义初始化失败时如何清理内存

c - 从 R 语言调用的 C 函数中的动态内存分配

linux - 获取ttyUSB0上设备的序列号(Ubuntu)

bash - 使用 awk 在文件上追加列

c - C 中的简单 Shell

linux - 将一个文件夹拆分为多个文件夹,而不在终端/bash 中创建子文件夹

c# - 自动完成文本框错误 - 写入 protected 内存

linux - Nvidia 显示驱动程序经常停止工作

linux - 如何恢复或重建露天主题

PHP/服务器 : What architecture do I use?