Как правильно закрыть порт вручную или освободить порт на машинах rhel?

Ошибка возникает из-за попытки выполнить файл ~/.profileс sh, который не понимает source(sh, вместо этого использует.(точку ), которая также работает в bashи всех других оболочках POSIX ).

Кроме того, выполнение ~/.profileне установит переменные среды, которые этот файл устанавливает в оболочке, которая его выполняет. Это потому, что он работает в своей собственной подоболочке.

Дочерняя оболочка (, которую вы получаете при выполнении ~/.profile, а не из источника ), никогда не повлияет на среду родительской оболочки (оболочки, из которой вы выполняете скрипт ). Поэтому вы не можете установить переменные в ~/.profileи ожидать, что они будут затем установлены в вашем скрипте, если только вы не sourceфайл.

Запуск sudo source ~/.profileздесь не поможет, так как sudoбудет дочерним процессом текущей оболочки.


Связанная, дополнительная информация:

Чтобы настроить среду для сценария, который не запускается из интерактивной оболочки (, где ~/.profileи ~/.bashrcуже получены ), установите переменную BASH_ENVв соответствующий файл при вызове сценарий. Это сделает bashисходным файлом $BASH_ENV, прежде чем передать управление вашему сценарию.

Например:

BASH_ENV="$HOME/.profile" "$HOME/scripts/myscript.sh"

Это необходимо только при вызове сценария из не -интерактивной оболочки, например из задания cron, и если вам нужен доступ к переменным среды, установленным в ~/.profileили к любому файлу. что ~/.profileисточники.

В сеансе интерактивной оболочки переменную BASH_ENVне нужно задавать таким образом, и сценарию не нужно использовать источник ~/.bashrcили ~/.profile, поскольку они уже были получены.

-1
22.07.2020, 08:32
1 ответ

Вы не убиваете порт, вы убиваете демон/службу, которая его открыла. Вы можете заблокировать трафик на порт с помощью firewalld или iptables.

Прежде всего, попробуйте telnet localhost 50070. Вы можете подключиться?

Если да, выполните эту команду:

sudo ss -tulp
(sudo не требуется, если вы выполняете команду от имени пользователя root. -Параметр p показывает процессы и требует повышенных прав)

Найдите строку с упоминанием порта 50070. Используйте grep, если у вас много прослушиваемых портов. В последнем столбце будет показано имя и PID, открывший порт. Убейте это, и оно должно закрыться.

1
18.03.2021, 23:18

Теги

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