我正在 putty 终端中编辑 python 脚本。复制和粘贴会导致制表符被空格替换,即使在同一终端中也是如此,这会导致问题。这是腻子行为吗?纳米行为?窗户里的东西?因为我使用的是 nano,所以我可以标记和复制,但最终需要将修改后的脚本更改粘贴回我创建脚本的 Linux 系统中。该系统没有 AMD 板,我正在使用 putty 访问每个系统的系统上测试脚本
Joseph Stateson's questions
我跑了以下,不知道它安装在哪里
sudo apt-get install opencl-headers
我以为它去了这里:/usr/include
但它可能已经到了这里:/usr/include/x86_64-linux-gnu 我都试过了,如下所示
-DOPENCL_INCLUDE_DIRS=/usr/include/x86_64-linux-gnu
我得到了重复的定义,例如 time_t 和 time64_t 所以看起来以上都不是 opencl 的实际包含
这里有一个脚本 set intel cpu freq
我过去曾用它来降低我的 INTEL cpu 过热时的频率。通常只下降一步就足够了,并且不会“提升”。自从我不得不这样做以来已经有好几年了,但是最近我组装的一个便宜的挖矿系统出现了问题,当我运行该脚本时它失败了,我不得不用“-eq”替换“==”该脚本来自英特尔开发人员部门,我很肯定它可以在 Ubuntu 14 或 12 上正确运行。忘记我当时使用的是什么。当我运行下面的代码时,我得到了 METHOD 为 0 的分支,它可以正常工作,但我必须输入 -eq 而不是 ==
METHOD=0
..
if [ $METHOD -eq 0 ]; then
--
userspace
Setting /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor to userspace
Setting freq /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed to 2800000
试图编辑一个文件并被告知正在由 PID 24324 编辑。我猜我关闭了一个 SSH 窗口并且未能退出 nano。
我不记得我在做什么,如果能恢复会话就好了。有没有办法做到这一点?
想将我的 bash 脚本转换为 python。剧本
sensors | grep "Core"
返回一个易于解析的漂亮输出,CPU 的每个内核对应一行,如果使用读取到数组中
IFS=' ' read -r -a array <<< "$line"
T="${array[2]}"
U="${T:1:-2}"
所需的温度是数组中的第二个元素,很容易(有点)删除“+”和尾随的摄氏度符号,如上面的代码所示。
尝试使用以下代码在 python 中执行此操作
all_temps = check_output(["sensors"])
exe = Popen(['grep', 'Core'],stdout=PIPE, stdin=PIPE);
cpu_temps = exe.communicate(input=all_temps)[0];
对我来说困难在于 cpu_temps 中的数据是一堆 ascii 字节,包括特殊代码。我认为我可以使用新行作为分隔符轻松拆分数据,以便为每个 cpu 获取一行,然后使用空格拆分以获取当前温度值。这应该有效,并且基本上是我的 bash 脚本的工作方式。我也以同样的方式处理“nvidia-smi”,并以同样的方式将 ATI 温度从传感器中拉出。只是看不到如何在python中做到这一点。问题:
print(cpu_temps.split()) ---
b'Core'
b'0:'
b'+42.0\xc2\xb0C'
b'(high'
b'='
b'+84.0\xc2\xb0C,'
b'crit'
b'='
b'+100.0\xc2\xb0C)'
b'Core'
我不确定我在上面看到的是什么,并且对如何提取每个核心# 和相应的值知之甚少。可能这一切都错了,或者应该坚持使用我的 bash 脚本。当我尝试拆分时,我开始收到 str 预期的错误并且我有字节。
我一直在从我创建的文件中读取行,并希望使用变量并避免写入存储。不确定这是否可以轻松完成。工作代码开始如下
sensors | grep "Core" > temp.tmp
input=./temp.tmp
while IFS= read -r line
do
--etc--
done < "$input"
以上工作正常,但我需要为临时文件找到一个好的位置,并认为我可以完全避免写入存储。尝试了以下
input=`sensors | grep "Core"`
while IFS= read -r line
do
--etc--
done < "$input"
这不起作用,因为删除了换行符分隔符并且变量有一个巨大的“行”,可以一次全部读取。变量字符串的“)”在正确的位置结束以用作分隔符,但“读取”键位于换行符上。有什么简单的解决方法吗?
..感谢您的关注...