Автоматический запуск сценария строка за строкой, но с запросом перед каждой строкой, начиная со второй строки и далее.

Единственный IP-адрес, на котором может работать процесс на локальном компьютере, — это 127.0.0.1, lo, петлевое устройство, известное как localhost. Порты могут быть перенаправлены на общедоступный IP-адрес с сетевыми конфигурациями.

Я обычно использую sudo lsof -i :, чтобы узнать, что вызывает EADDRINUSE , потому что так быстрее печатать.

sudo lsof -i :443 | tail -1 | cut -f2 -d' ' | xargs kill

Убьет процесс, работающий на порту 443, если ваш lsofвыдает вывод, подобный:

COMMAND   PID USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
python3 32233  cat    4u  IPv4 24123106      0t0  TCP *:http-alt (LISTEN)

Изlsof --help:

-i i   select by IPv[46] address: [46][proto][@host|addr][:svc_list|port_list]

6
31.08.2019, 01:08
1 ответ

Для отладки сценариев можно использовать отладчик Bash .

Более простой вариант — использовать ловушку DEBUG:

#!/bin/bash

function prompt {
  if [[ -n "$BASH_COMMAND" ]]; then
    echo About to run \'$BASH_COMMAND\'
    read -p 'Continue [Y/n]?' CONT
    if [[ "$CONT" = "n" || "$CONT" = "N" ]]; then
      echo Exiting prematurely
      exit 1
    fi
  fi
}

trap prompt DEBUG

echo Hello
ls
sleep 10

Это будет запускать функцию promptперед каждой командой после установки прерывания, предоставляя вам возможность продолжить или прервать. Строки, начинающиеся с echo Hello, будут заменены любым вашим сценарием, или, что еще лучше, вы можете сохранить функцию и команду trapв отдельном скриптлете, который вы sourceвпишете в скрипт, который хотите отладить.

Есть некоторые тонкости, связанные с ловушкой DEBUG; во-первых, он не запускает внутренние функции, если только он не был повторно -установлен внутри функции (, поэтому вы можете пропустить функции, которые вы не хотите отлаживать, включая саму функцию prompt, но вам нужно не забыть запустить trapвнутри функций, которые вы делаете хотите отлаживать ).

Поведение трассировки можно включать и отключать по желанию в вашем скрипте, соответственно, добавляя

trap prompt DEBUG

и

trap "" DEBUG

в зависимости от обстоятельств.

9
27.01.2020, 20:25

Теги

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