Этот пост может помочь. Рекомендация:
- фоновый процесс (с помощью Ctrl-Z, затем bg )
- запустите disown -h% [jobid] (вероятно, bash-ism, так что вам придется переводить для tcsh)
Плохая новость , конечно, является то , что Б.Г. необходимо будет сделать в той же оболочке процесс выполняется в ... но ... это может быть уже в фоновом режиме .
Действительно плохая новость в том , что открестился вызов , возможно , потребуется сделать в одной оболочке. В таком случае, да, ты облажался. Но я не уверен, может быть root может принудительно отключить его.
Хм. Возможные хорошие новости - tcsh автоматически отключается :
Если tcsh завершает работу ненормально, при выходе из него автоматически отключаются задания, работающие в фоновом режиме.
Таким образом, если ваш долгосрочный процесс уже задним числом, уничтожение его родителя tcsh должно позволить его продолжить. Процесс теперь отключен от стартового терминала. (Если нет, см. «Плохие новости» выше.)
К сожалению, это не экран, поэтому реальное переподключение отсутствует. Вы можете подделать его с помощью GDB (опять же, по первой ссылке):
[...] с некоторыми грязными взломами, невозможно повторно открыть процесс 'stdout / stderr / stdin.
Таким образом, вы все равно можете создать пустое окно экрана (например, которое запускает сон).
А затем, например, используйте gdb для присоединения к процессу, выполните некоторые вызовы close (0),
вызов close (1),
вызов close (2),
вызов open ("/ dev / pts / xx", ...)
call dup (0)
call dup (0)
отсоединить
Результат процесса будет показан на экране. Он не будет подключен к этому экранному терминалу, поэтому, например, [sic] убьет команду «сна», а не процесс, но этого может быть достаточно для OP.
Интересно, не должно ли быть в этом процессе "call dup (1)" и "call dup (2)" ...