Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Запуск задачи (jobs) в конвеере (pipe)  (Прочитано 775 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн vento1980

  • Автор темы
  • Новичок
  • *
  • Сообщений: 32
    • Просмотр профиля
Запуск задачи (jobs) в конвеере (pipe)
« : 03 Апреля 2018, 13:49:40 »
Всем добрый день!

Есть вопрос по запуску задач (jobs) в конвеере (pipe).

Есть небольшой скрипт test.sh:
#!/bin/bash

sleep 5 &
echo 'done'

exit 0

В нем две основные команды. Первая эмулирует "сложную работу" - это "sleep 5", причём запускается она как задача (job). Вторая команда - информационная "echo 'done'".

Тест1: Если запустить скрипт с измерением параметров вермени ("time") выполнения:
$ time ./test.sh
done

real 0m0.005s
user 0m0.000s
sys 0m0.000s
Здесь мы видим, что скрипт выполнился быстро (время не затрачено на команду "sleep 5 &").

Тест2: Если запустить тот же скрипт, но в конвейере:
$ time ./test.sh | tail
done

real 0m5.012s
user 0m0.000s
sys 0m0.000s
то видим, что время, затраченое на конвейер равно времени выполнения команды "sleep" и "echo". Т.е. фоновая задача держит весь конвейер.

Вопрос: как запустить команду "sleep" (фоновую задачу) в крипте "test.sh", чтобы она не "держала" весь конвейер?

Заранее спасибо!

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 6723
  • 20% Cooler
    • Просмотр профиля
Re: Запуск задачи (jobs) в конвеере (pipe)
« Ответ #1 : 03 Апреля 2018, 15:24:49 »
вам надо перенаправить весь вывод команды куда-нибудь. В файл, в null, итд
#!/bin/bash

sleep 5 &> /dev/null &
echo 'done'

exit 0
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн vento1980

  • Автор темы
  • Новичок
  • *
  • Сообщений: 32
    • Просмотр профиля
Re: Запуск задачи (jobs) в конвеере (pipe)
« Ответ #2 : 03 Апреля 2018, 15:29:43 »
Работает!

Ещё раз спасибо!

 

Страница сгенерирована за 0.031 секунд. Запросов: 22.