更具体地说,情况是这样的。
我当时正在用空白文档操作 MyPaint,几个小时后,我没有保存任何内容(当然……),程序就死机了。我没有关闭它。
在 MyPaint 自动保存目录中,文件已损坏(仅限 1,4 ko)。
所以,我想知道我是否可以从 RAM 中转储文件(该过程仍在运行)以及如何转储。
谢谢。
答案1
比节省内存稍微好一点的方法是让程序为您保存您的工作。
首先获取正在运行的程序的 pid(进程 ID)。可以使用以下命令从命令行执行此ps
操作:
$ ps x
PID TTY STAT TIME COMMAND
(... lots of usual programs omitted)
3039 ? Sl 40:59 /usr/lib/someprogram
...
30263 pts/8 R+ 0:00 ps x
假设我想触发someprogram
清理并保存文件,假设它是一个专业级程序(按顺序尝试每个程序,直到一个有效):
$ kill -HUP 3039 # trigger the program's "terminal disconnect by hang up"
# logic (which might save the file)
$ kill -INT 3039 # Interrupt
$ kill -STOP 3039 # Stop
$ kill -CONT 3039 # Continue
更稳妥的方法是将程序的内存写入核心文件。这样至少熟悉 MyPaint 内部结构的人可以将其加载到调试器中并重建数据以供后续使用。不过这很“困难”,需要专家花费数小时甚至数天的时间。
要转储核心,请尝试这些。您的系统配置中可能未启用核心转储。
$ kill -ABRT 3039 # abort
$ kill -QUIT 3039 # quit
$ kill -SEGV 3039 # illegal memory access
$ kill -TRAP 3039
答案2
您可能知道 RAM 不保存任何文件。所以您将无法从中恢复任何内容。我建议您下次重新做一次并经常保存(或设置一个脚本为您自动保存)。我很抱歉,但您无法做任何其他事情来恢复它(据我所知)。