如果我使用 ctrl-z 暂停 bash 中正在运行的作业,有没有办法复制它。这样我现在就有了两个相同的进程。
我正在运行一个 python 脚本,该脚本加载多个文件并对它们进行一些分析,然后它到达一个交互式阶段,我想对分析的数据运行一些测试。这个想法是,需要 20 分钟左右的初始分析可以完成一次,然后可以从头开始测试交互阶段多次。
答案1
答案2
您应该能够使用jobs
- 命令来获取它:
➜ ~ top
[1] + 55990 suspended top
➜ ~ jobs -l
[1] + 55990 suspended top
答案3
/proc/$pid/
我想您可能正在寻找如何列出您感兴趣的进程目录中的文件(至少在 Linux 机器上是这样)。在该目录中,您几乎可以找到在另一个进程中复制/模拟一个进程的状态所需的所有信息。
您需要密切关注进程组、挂载传播标志、numa 亲和力、脏页、大页、共享内存、内存映射、fd 偏移量以及cgroups
、status
、ns/*
、fd/*
、oom*
、 、io
、cmdline
、environ
、中的所有内容maps
,以及......好吧,只要密切注意即可。
无论如何,只要提供正确的权限,您就可以列出所有这些文件,例如......
ls -R /proc/"${pid_of_interest}"/
如果您使用该选项构建 3.3+ 内核CONFIG_CHECKPOINT_RESTORE
,内核还将/proc/$pid/mem_files/
为您填充一个目录,其中包含符号链接(阿拉/proc/$pid/fd/*
)对于mmap()
您的进程当前声明的每个“d”文件,以及它与任何其他进程共享的任何文件。