Работает следующее:
ps aux | cut -c1-$(stty size </dev/tty | cut -d' ' -f2)
Это тоже работает:
v=$(stty size | cut -d' ' -f2) ; ps aux | cut -c1-$v
Проблема, похоже, в том, что stty
должен иметь tty на стандартном входе, чтобы функционировать. Приведенные выше два подхода решают эту проблему.
Есть еще один вариант. В то время как stdin и stdout stty
перенаправляются в приведенных выше командах, stderr не перенаправляется: он по-прежнему указывает на терминал. Как ни странно, stty
также будет работать, если ему в качестве входных данных указать stderr:
ps aux | cut -c1-$(stty size <&2 | cut -d' ' -f2)
Кажется, ваш вызов wget с --spider
не работает должным образом. Он также должен вернуть HTTP 200, используя запрос HEAD
. См. ответ Дарнира .
if I don't use --spider I assume wget will try to download the index.html somewhere right?
Вы можете установить выходной документ с помощью опции -O
, если вам нужно конкретное имя файла, например.
wget --quiet --tries=1 -O/tmp/docker.html http://localhost:6077
Или, если вам не нужен вывод, вы можете использовать -O -
для вывода результата на стандартный вывод, а затем перенаправить стандартный вывод/stderr на /dev/null
.
wget -O - http://localhost:6077 &>/dev/null
Принятый ответ кажется неверным и на самом деле помогает вам скрыть ошибку в вашем док-контейнере. Добавление опции --spider
в Wget заставит Wget отправлять запрос HEAD
вместо GET
. Особенно в этом конкретном случае, когда вы не вызываете Wget с --recursive
.
Согласно RFC 7231, раздел 4.3.2, запрос HEAD
идентичен запросу GET
, за исключением того, что он не содержит тела сообщения. Однако в вашем случае сервер, похоже, возвращает разные ответы на запросы HEAD
и GET
. Я бы назвал это ошибкой на вашем сервере. Пожалуйста, не запускайте Wget без паука и не заметайте проблему под ковер. Такое поведение противоречит спецификации HTTP и, возможно, приведет к другим проблемам в будущем, поскольку клиенты, подключающиеся к нему, увидят неправильный ответ.