Благодаря @gollum, после нескольких повторных попыток мы выяснили, что проблема связана с gdm, поэтому решением было установить lightdm (apt-get install lightdm), и это устранило проблему.
Вы хотите настроить так, чтобы nc
убивался, как только grep
завершается. Вот один из способов:
( subshell_pid=$BASHPID ; echo 'my_command' | nc $IP $PORT > >(grep -m 1 EXPECTED_OUTPUT ; kill -13 -- -$subshell_pid ; ) )
Все это выполняется в подоболочке, а затем убивает все процессы, запущенные подоболочкой, когда grep
завершается.
>()
— это подстановка процесса , которая позволяет передавать от одной команды к нескольким командам.