Ctrl + C Выходят неправильное приложение

вы также можете просто отбросить подоболочку. очевидно, это вложенные оболочки, которые мешают друг другу:

TIMESEC=$(
    echo blah |
    /usr/bin/time -f %e grep blah 2>&1 >/dev/null |
    awk -F. '{print $1}'
)

Если вы это сделаете:


...| ( subshell ) 2>pipe | ...

... вы получите подоболочку, запущенную для обработки этого участка конвейера , содержащего подоболочку внутри . Поскольку оболочка без перенаправления даже отладочного вывода подоболочки в (как и для любого другого вида составной команды { ;}> перенаправить , вы можете выбрать use) на свой участок конвейера накручиваете смешивание потоков. Это связано с порядком перенаправления.

Вместо этого, если вы сначала просто перенаправляете только вывод ошибок команд, которые вы пытаетесь измерить, и позволяете выводам оболочки хоста передавать его на stderr, вы не столкнетесь с той же проблемой. .

и так ...


... | command 2>pipe 1>/dev/null | ...

... оболочка хоста может продолжать писать свой stderr там, где ей заблагорассудится, перенаправляя только вывод команд, которые она вызывает, в конвейер.


bash -x time.sh
+++ echo blah
+++ /usr/bin/time -f %e grep blah
+++ awk -F. '{print $1}'
++ TIMESEC=0
++ echo ABC--0--DEF
ABC--0--DEF
++ '[' 0 -eq 0 ']'
++ echo 'we are here!'
we are here!

Если на то пошло ...


TIMESEC=$(
    echo blah |
    /usr/bin/time -f %e grep blah 2>&1 >/dev/null
)
printf %s\\n "ABC--${TIMESEC%%.*}--DEF"
if [ "${TIMESEC%%.*}" -eq 0 ] ; then
   echo "we are here!"
fi
0
18.08.2018, 12:53
2 ответа

Ctrl + C здесь убивает ваш скрипт. Все дети получают сигнал, и они реагируют на сигнал о том, что их родитель умирает.

Вы можете попробовать nohupвместоatom

#!/bin/bash
cd /home/jhn/src/eth/ten
nohup atom. &
npm start
2
28.01.2020, 04:13

Это потому, что atomзапускается в текущем скрипте текущей оболочки. Запустите его как демон -, если этот параметр доступен -, или запустите его в фоновом режиме, в конечном итоге с помощью команды nohup, или disownпосле нее.

0
28.01.2020, 04:13

Теги

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