В tcsh, как я могу заставить замолчать вывод уже запущенного фонового процесса?

1123
Ross Rogers

Если я запустил задание в фоновом режиме, как я могу перенаправить его вывод /dev/nullили каким-то образом заставить его замолчать?

Я не начал работу, как:

CMD >& /dev/null & 

Я начал это так:

CMD & 

Теперь, когда CMDон уже запущен, могу ли я заставить его замолчать?

3
Подобный вопрос здесь: http://stackoverflow.com/questions/1323956/how-to-redirect-output-of-an-already-running-process dogbane 14 лет назад 1

1 ответ на вопрос

2
quack quixote

Взятые по ссылке «перенаправление вывода из запущенного процесса», приведенной в этом StackOverflow ответ на аналогичный вопрос. Вы можете сравнить эти указания с этим ответом, в котором обсуждается тот же трюк для других целей.

Вот основной процесс, предполагая, что команда уже запущена. Это хорошо работает для обычного вывода STDOUT. Исходная запись используется cat > foo1в качестве примера длительной программы вывода.

В зависимости от особенностей процесса, который вы хотите отключить, вам может потребоваться выполнить этот процесс на STDERR (или других выходных потоках) вместо или в дополнение к STDOUT.

  1. Найдите процесс PID.

    $ ps aux | grep cat user 6760 0.0 0.0 1580 376 pts/5 S+ 15:31 0:00 cat 
  2. Подключитесь к процессу с помощью GDB.

    $ gdb -p 6760 /bin/cat GNU gdb 6.4.90-debian Copyright (C) 2006 Free Software Foundation, Inc [lots more license stuff snipped] Attaching to program: /bin/cat, process 6760 [snip other stuff that's not interesting now] 
  3. В GDB закройте процесс STDOUT. («(gdb)» - это приглашение GDB; введите то, что вы видите в этих строках. Другие строки - пример вывода.)

    (gdb) p close(1) $1 = 0 
  4. В GDB откройте новый файл. Примечания: возвращаемое значение «1» указывает, что новый файл был открыт как STDOUT; «0600» - это режим (права доступа к файлу) нового файла (что означает «доступный для чтения и записи владельцу, а не кому-либо другому»).

    (gdb) p creat(“/tmp/foo3″, 0600) $2 = 1 
  5. Выйти из GDB; оставьте процесс запущенным.

    (gdb) q The program is running. Quit anyway (and detach it)? (y or n) y Detaching from program: /bin/cat, process 6760 

Источник

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