После совершения удаленный nohup с tcsh

У меня есть tcsh экземпляр в xterm, который выполняет долгосрочное (недели?) процесс. Сервер Xvnc, под которым это работает, вышел в сорняках; это использует 100% ЦП и безразлично. (Это - известная ошибка, и я знаю, что это неисправимо.)

Долгосрочный процесс в настоящее время блокируется на stdout.

Есть ли какой-либо способ, которым я могу уничтожить базовый процесс — tcsh, xterm, безотносительно — и поддерживать тот долгосрочный процесс в рабочем состоянии?

(Никакие ответы о screen. Я знаю. Это не мой процесс; это - пользователь. Они не будут учиться.)

11
задан 02.10.2009, 18:26

2 ответа

Это сообщение может помочь. Рекомендация:

  1. фон процесс (с Ctrl-Z, затем bg)
  2. выполненный отрицают-h % [jobid] (вероятно, изм удара, таким образом, необходимо будет перевести для tcsh),

Плохие новости, конечно, то, что bg должен был бы быть сделан в той же оболочке, в которой работает процесс..., но... это мог бы уже быть фон.

Действительно плохие новости - то, что отрицать вызов, возможно, должен был бы быть сделан в той же оболочке. В этом случае, да, Вы завинчены. Но я не уверен, возможно, базируюсь, может разъединение силы это.

Хм. Возможные хорошие новости - tcsh делают отрицание автоматически:

Если tcsh выходит неправильно, он отрицает задания, работающие в фоновом режиме автоматически, когда он выходит.

Так, если Ваш долгосрочный процесс уже является фоном, уничтожение его родителя tcsh должно позволить ему продолжаться. Процесс теперь разъединяется от стартового терминала. (В противном случае см. "плохие новости" выше.)

К сожалению, это не экран, таким образом, нет никакого реального повторного подключения. Можно фальсифицировать его с gdb, возможно (снова из первой ссылки):

[...] с некоторыми грязными взломами, не невозможно вновь открыть stdout/stderr/stdin процесса.

Таким образом, Вы могли все еще создать окно пустого экрана (например, который выполняет сон).

И затем используйте gdb, например, чтобы присоединить к процессу, сделать некоторый вызов близко (0)
звоните близко (1)
звоните близко (2)
назовите открытыми ("/dev/pts/xx"...)
назовите дубликат (0)
назовите дубликат (0)
отсоединение

Вывод процесса перешел бы к экрану. Это не было бы присоединено к тому экранному терминалу, таким образом, например [так] уничтожит команду "сна", не процесс, но это могло быть достаточно для OP.

Интересно, не должно ли быть "дубликата вызова (1)" и "дубликата вызова (2)" в том процессе также...

17
ответ дан 07.12.2019, 12:17

Эти вопросы обращаются к программе под названием Cryopid, который может помочь Вам. У меня нет опыта с ним, как бы то ни было.

Перемещение процесса между хостами

Перемещение xterms между X сессиями

Nohup и экран процесс

3
ответ дан 07.12.2019, 12:17

Теги

Похожие вопросы