Как перенаправить вывод csh-скрипта, который выполняется в фоновом режиме

#shell #unix #csh

#оболочка #unix #csh

Вопрос:

Я запускаю несколько csh-скриптов параллельно (каждый скрипт принимает 2 аргумента), которые выполняют множество забавных вещей в фоновом режиме (детали не важны для моей проблемы). Пока я запускаю их как:

 my_script arg1 arg2 amp;
my_script arg3 arg4 amp; 
...
  

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

 my_script arg1 arg2 >! somefile.log
  

Проблема в том, что мне нужно запустить по крайней мере 5 из этих скриптов параллельно (в фоновом режиме для каждого из них). Когда я пытаюсь выполнить следующую последовательность, задания отправляются, но сообщается как «Приостановлено (вывод tty)», а файл журнала не обновляется:

 my_script arg1 arg2 >! somefile.log amp;
my_script arg3 arg4 >! somefile1.log amp;
my_script arg5 arg6 >! somefile2.log amp;
....
  

Есть идеи по этому вопросу. О … также я забыл упомянуть, что мне нужно использовать CSH, к сожалению, я не могу переключиться на bash или что-либо еще.

Большое спасибо!

Комментарии:

1. Вы пробовали запускать с nohup и стандартным перенаправлением вывода «> amp;»?

2. Да, я попробовал оба варианта, результат все тот же. Спасибо!

Ответ №1:

Пожалуйста, попробуйте

 nohup my_script arg1 arg2 < /dev/null >! somefile.log amp;
  

Вы также можете попробовать

 stty -tostop
  

для управления режимом терминала

Комментарии:

1. @Birbal: Какой трюк (или оба) сработал у вас? Удачи всем.

2. Первый вариант сработал… Я не пробовал второй