Можно ли скопировать приостановленный процесс?

Если я приостановил работу в bash с помощью ctrl-z, есть способ ее скопировать. Так что теперь у меня есть два процесса, которые одинаковы.

Я запускаю скрипт python, который загружает несколько файлов и делает некоторый анализ на них, затем он достигает интерактивного этапа, на котором я хочу запустить некоторые тесты анализируемых данных. Идея состоит в том, что первоначальный анализ, который занимает 20 минут или около того, может быть выполнен один раз, а затем интерактивный этап может быть протестирован с нуля несколько раз.

3 Solutions collect form web for “Можно ли скопировать приостановленный процесс?”

Есть инструмент под названием cryopid, который позволяет моментально отобразить запущенный процесс, чтобы вы могли возобновить его позже. Я не пробовал, но я не вижу причин, по которым вы не могли бы «возобновить» процесс с моментальным снимком, пока оригинал все еще работает. Как подразумевается комментарий Тердона , есть много вещей, которые следует учитывать при мгновенной съемке процесса, поэтому криоида может быть тонкой; лучшим решением в вашем случае было бы изменить исходный процесс, чтобы он сохранял анализ после завершения и загружал его на будущие прогоны.

Вы должны уметь захватить его с помощью команды jobs :

 ➜ ~ top [1] + 55990 suspended top ➜ ~ jobs -l [1] + 55990 suspended top 

Я думаю, вероятно, вы ищете, как перечислять файлы в каталоге /proc/$pid/ процесса, в котором вы заинтересованы (по крайней мере, это будет в случае с Linux-машиной) . Внутри этого каталога вы можете найти практически всю информацию, необходимую для дублирования / эмуляции состояния одного процесса в другом.

Вы захотите обратить пристальное внимание на группы процессов, флаги распространения монтирования, сродство numa, грязные страницы, огромные страницы, shared-mem, memmaps, 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/mem_files/ , который будет содержать символическую ссылку (ala /proc/$pid/fd/* ) для каждого mmap() 'd регистрирует ваш процесс в настоящее время, а также любой, который он разделяет с любым другим процессом.

  • Какой вызов перед вилкой?
  • Являются ли состояния процессов, которые готовы и планируют ждать «S»?
  • Найдите каталог из относительного пути в выводе ps
  • В чем разница между pidof и pgrep?
  • Процессы nonsudo kill соответствуют строке
  • Сценарий, чтобы взять pid, дать имя cmd, сетевые подключения, дерево процессов, родительский / дедушка / ребенок
  • Кнопка «Убить самый большой процесс»
  • Убивание экземпляра процесса
  • Процесс зомби нельзя удалить или убить
  • Определите, какие java-приложения запускаются в имени java-процесса
  • Получение идентификатора процесса родительского процесса из дочернего процесса
  • Linux и Unix - лучшая ОС в мире.