当前位置: 首页 > 面试题库 >

编写一个bash shell脚本,该脚本在用户定义的时间内消耗恒定数量的RAM。

祖翰音
2023-03-14
问题内容

我正在尝试编写一个bash shell脚本,该脚本在用户定义的时间内消耗嵌入式设备上的大量RAM。不使用数组怎么办?


问题答案:

即使不支持传统的Bash数组,也仍然可以使用eval特定Shell中内置的命令来创建类似数组的变量。

以下示例脚本基于我在嵌入式Linux项目中使用BusyBox时执行的一些脚本。
BusyBox使用Almquist
Shell
(也称为A Shell,ash和sh),它不支持数组。

#!/bin/ash

for index in 1 2 3 4 5; do
    value=$(($index * 1024))
    eval array$index=\"array[$index]: $value\"
done

for i in 1 3 5; do
    eval echo \$array$i
done

使用时请小心报价eval

输出:

array[1]: 1024
array[3]: 3072
array[5]: 5120

根据您的特定情况,类似于以下内容的脚本可能就足够了。

#!/bin/ash

echo "Provide sleep time in the form of NUMBER[SUFFIX]"
echo "   SUFFIX may be 's' for seconds (default), 'm' for minutes,"
echo "   'h' for hours, or 'd' for days."
read -p "> " delay

echo "begin allocating memory..."
for index in $(seq 1000); do
    value=$(seq -w -s '' $index $(($index + 100000)))
    eval array$index=$value
done
echo "...end allocating memory"

echo "sleeping for $delay"
sleep $delay

在我的简短测试中,此脚本在指定的5分钟时间段内消耗了约570M至〜575M的物理内存*。

*在单独的测试中使用top和memprof程序进行监视



 类似资料:
  • 问题内容: 我今天才开始学习Python。我一直在阅读Byte Python。现在,我有一个涉及时间的Python项目。我在Byte of Python中找不到任何与时间有关的东西,所以我问你: 如何在用户指定的时间内运行块然后中断? 例如(用一些伪代码): 甚至更好: 问题答案: 我建议生成另一个线程,使其成为守护程序线程,然后休眠直到您希望任务终止。例如: 当所有非守护程序线程都退出时,Pyt

  • 拉斯宾(杰西)-root@RaspberryPi-腻子 在我输入的终端中 现在我得到了一个包含此代码的脚本 有一个cronjob每小时启动一次这个脚本 苏。一定有什么地方出错了。因为他将变量$finalanswer解读为nothing。 这意味着在此脚本之外定义的变量将不起作用? 我该如何解决这个问题?

  • 变量定义 nsi脚本的变量定义用Var关键字,后跟变量名,变量是全局的并且是大小写敏感的。变量引用时需要加上前缀$。 除了用户自定义的变量外,nsi脚本中与定义寄存器变量$0~$9,$R0~$R9用于参数传递,以及系统变量用于特定用途,这些变量主要有: $INSTDIR,$OUTDIR,$CMDLINE,$LANGUAGE(这些变量都是可写的)。 $PROGRAMFILES,$COMMONFILE

  • 编写HTTP/1.1和HTTP/2.0脚本 有时,我们希望编写一个快速的脚本而不会遇到创建类的麻烦。addons机制具有一种速记方式,可以将模块作为一个整体视为一个addon对象。这使我们可以将事件处理程序函数放在模块作用域中。例如,下面是一个完整的脚本,它向每个请求添加标头。 def request(flow): flow.request.headers["myheader"] = "v

  • 当 Gradle 执行一个脚本时,它会将这个脚本编译为实现了 Script 的类. 也就是说所有的属性和方法都是在 Script 接口中声明的,由于你的脚本实现了 Script 接口,所以你可以在自己的脚本中使用它们.

  • 我正在使用TestNG框架编写一个selenium脚本。我已经将显式等待定义为在selenium抛出NoSuchElement异常之前的20秒。但脚本在执行过程中没有等待20秒,并在41毫秒内抛出异常。我希望这个脚本在抛出任何异常之前等待(使用显式的wait only)或搜索web元素20秒。 下面是脚本,后面是执行结果。