我为一个相当难的数学问题开发了一个算法,这个问题可能需要几个月才能完成。由于我的资源有限,我在我的 Ubuntu 12.04 (x86) 笔记本电脑上开始了这个。现在我想安装一些更新并实际重新启动笔记本电脑(“请重新启动”消息很烦人)。
有没有办法保存整个进程,包括其分配的内存,以便在重启后继续?
以下是有关您可能需要的流程的一些信息。如果需要,请随时询问更多信息。
./binary > ./somefile &
”或“time ./binary > ./somefile &”调用了该进程,我真的记不清了。我有一个小脚本,它循环遍历文件夹的所有文件并执行(通常是持久的)命令。基本上是
for file in ./folder/*;
do
./bin/myProgram $file > ./done/$file
done
Run Code Online (Sandbox Code Playgroud)
(请忽略语法错误,这只是伪代码)。
我现在想同时运行这个脚本两次。显然,如果 ./done/$file 存在,则不需要执行。所以我把脚本改成了
for file in ./folder/*;
do
[ -f ./done/$file ] || ./bin/myProgram $file >./done/$file
done
Run Code Online (Sandbox Code Playgroud)
所以基本上问题是:两个脚本(或通常不止一个脚本)是否可能实际上处于同一点并检查done
失败且命令运行两次的文件是否存在?
这将是完美的,但我非常怀疑。这太容易了 :D 如果他们处理同一个文件可能发生,是否有可能以某种方式“同步”脚本?
我当前的 WiFi 网络(我是在 Windows -.- 的帮助下编写的)在其 SSID 中有一个变音符号:“ö”。
如果更改 SSID 不是一个选项,如何连接到这样的网络?
这不适用于 Ubuntu 12.04 或 Android 2.3.6 或 Android 4.0,所以我猜这是一个普遍的 Linux 问题。网络适配器是“Broadcom 4313”。
问题似乎是,网络是隐藏的。Android 和 Ubuntu 都无法正确解释手动输入的 SSID 字符串。然而,如果网络没有被隐藏,两个系统都可以看到网络。Ubuntu 正确地看到了 SSID 名称,Android 在变音符号“ö”处失败并且也错过了以下两个字符(因此,它看到的是“[某些字符] [某些其他字符]而不是“[某些字符]örc[某些其他字符]”) ]”)。
因此,导致问题的是隐藏 SSID 和特殊字符 SSID 的组合。
我有大量数据,其中每个(数据-)行都应该是唯一的。
一个文件夹中有很多文件,这已经是正确的。它大约有 15GB,分为大约 170 个文件,1000000 行。我们称该文件夹为foo
。
现在有第二个文件夹 ( bar
) 包含更多数据:在每个文件中,没有多个条目。两个文件的交集bar
不一定是空的。那里的每个文件大约有 15k 行(并且bar
.
现在我正在使用
awk 'NR==FNR{a[$0]=$0;next}!a[$0]' foo/file bar/file > tmp
mv tmp bar/file
Run Code Online (Sandbox Code Playgroud)
和一个循环中的所有文件foo
和循环中的所有文件bar
。foo
如果bar/file
为空,我会打破循环。我通过锁定(用于多个节点)和并行执行(在每个节点上)来并行化。但是,这仍然需要很长时间。
提高性能的可能性有哪些?中文件的理想文件大小是foo
多少?当然,这取决于机器(RAM/CPU/存储),但这里有什么好的经验法则?
tl;dr:foo
包含唯一的数据线,bar
包含可以在bar
和 中多次出现的数据线foo
。消除重复项,bar
以便它们可以合并foo
[更新]没有空行[/更新]
我有几个(准确地说是 427 个)文本文件,每行一百万行,每行包含 31 个数字,由空格(可能是双空格)分隔。但是,可能存在一些数据损坏,并且可能存在包含垃圾的行。
我现在想检查每一行是否满足包含 31 个由空格分隔的项目的属性(我假设这些项目是数字。检查它的方法也会更好)。
我现在的方式是
while read line;
do
if [ $(echo "$line" | sed 's/ /\n/g' | grep -v "^$" | wc -l) -ne 31 ]
then
echo "$file bad";
fi
done < $file
Run Code Online (Sandbox Code Playgroud)
这将用换行符替换一行的所有空格,过滤空行,计算行数并将其与 31 进行比较。
这种方法很慢,可能有更好的方法涉及一些花哨的正则表达式。什么是更快的方法?
bash ×2
android ×1
awk ×1
broadcom ×1
files ×1
parallelism ×1
performance ×1
process ×1
reboot ×1
scripting ×1
shell-script ×1
ubuntu ×1
wifi ×1