Home » Блог Eleven Labs — Несколько советов по оптимизации рабочей среды Linux

Блог Eleven Labs — Несколько советов по оптимизации рабочей среды Linux

В этой статье я поделюсь некоторыми советами по оптимизации рабочей среды Linux. Все, что мы собираемся здесь рассказать, представляет собой вещи, которые я лично реализовал и использую ежедневно. Мы рассмотрим настройку множественного доступа SSHнастраивая наш интерфейс командной строки CLI с bashи как отказаться от использования zsh и др. Oh My Zsh.

Настройка множественного доступа по SSH в вашей среде Linux

В этом первом совете мы сосредоточимся на SSH. Возможно, у вас уже было несколько доступов SSH с различной информацией для входа, такой как адрес сервера, пользователь, секретные и открытые ключи и т. д. И вы, вероятно, использовали SSH указав всю информацию о подключении, как в примере ниже:

ssh -i path-to-ssh-public-key user@host:port

Если у вас есть множественный доступ к разным серверам SSHвам, вероятно, нужно сделать что-то похожее на это:

ssh -i path-to-ssh-public-key-server-1 user-server-1@host-server-1:port-server-1 ssh -i path-to-ssh-public-key-server-2 user-server-2@host-server-2:port-server-2 ssh -i path-to-ssh-public-key-server-3 user-server-3@host-server-3:port-server-3

Если вы немного ленивы, возможно, вы настроили некоторые aliases. Это хорошо, но не оптимально! Посмотрим, как настроить наш клиент SSH чтобы все это упростить. Вот так !

Сначала вы создадите файл .ssh/config со следующими разрешениями: 0600 или, если хотите, - rw- --- ---. Затем вы отредактируете его в своем любимом редакторе: вим. 😉

В этот файл мы добавим блоки конфигурации ssh как следующее:

Host <> Property value Property value

Понимаете, это совсем не сложно! Давайте возьмем более конкретный пример с учетной записью Gitlab самостоятельный хостинг, одна учетная запись Gitlabаккаунт Githubи два доступа к виртуальному серверу:

Host my-private-gitlab.com PreferredAuthentications publickey User git HostName my-private-gitlab.com IdentityFile ~/.ssh/id_my-private-gitlab.com Host github User git HostName github.com IdentityFile ~/.ssh/id_github.com Host gitlab PreferredAuthentications publickey User git HostName gitlab.com IdentityFile ~/.ssh/id_gitlab.com Host my-private-server-1 User root HostName my-private-server-1.com IdentityFile ~/.ssh/id_my-private-server.com Host my-private-server-2 User root HostName my-private-server-2.com IdentityFile ~/.ssh/id_my-private-server.com

Здесь для каждого блока конфигурации мы задаем свойства Host, User, HostName, IdentityFile и, в случае Гитлаб, PreferredAuthentications.

И вот! Если мы проверим соединение с Гитхаб и др. Гитлабэто дает следующее:

# Test de connexion github $ ssh -i ~/.ssh/id_github.com -T [email protected] Hi nicolas-grevin! You've successfully authenticated, but GitHub does not provide shell access. $ ssh -T github Hi nicolas-grevin! You've successfully authenticated, but GitHub does not provide shell access. # Test de connexion gitlab $ ssh -i ~/.ssh/id_gitlab.com -T [email protected] Welcome to GitLab, @ngrevin! $ ssh -T gitlab Welcome to GitLab, @ngrevin!

Все работает нормально, и мы видим, что свойство Host действует как «псевдоним» SSH позволяющий использовать определенную конфигурацию. Итак, эта команда ssh -i ~/.ssh/id_gitlab.com -T [email protected] сводится к тому, чтобы сделать ssh gitlab.com.

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

Чтобы пойти еще дальше, вы можете иметь общие конфигурации, разделив блоки конфигурации. Вот пример:

Host my-private-gitlab github gitlab my-private-gitlab.com github.com gitlab.com User git Host my-private-gitlab gitlab my-private-gitlab.com gitlab.com PreferredAuthentications publickey Host my-private-gitlab my-private-gitlab.com HostName my-private-gitlab.com IdentityFile ~/.ssh/id_my-private-gitlab.com Host github github.com HostName github.com IdentityFile ~/.ssh/id_github.com Host gitlab gitlab.com HostName gitlab.com IdentityFile ~/.ssh/id_gitlab.com* Host my-private-server-1 my-private-server-2 my-private-server-1.com my-private-server-2.com User root IdentityFile ~/.ssh/id_my-private-server.com Host my-private-server-1 my-private-server-1.com HostName my-private-server-1.com Host my-private-server-2 my-private-server-2.com HostName my-private-server-2.com

Это позволяет избежать повторения свойств в каждом блоке, оставляя при этом возможность перезаписи одного. Вот и все, теперь вы знаете, как настроить клиент. SSH. Если вы хотите пойти дальше, вот полная документация ssh_config: человек openBSD ssh_config.

Настройте свой интерфейс командной строки

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

И terminal — физическое устройство, расположенное на конце компьютерной сети (телефон, компьютер). А émulateur de terminal это программное обеспечение, которое позволяет нам выполнять командные строки для взаимодействия с операционной системой. Для простоты его обычно называют terminal. И shell это программное обеспечение, обеспечивающее пользовательский интерфейс операционной системы. Буквально это оболочка(shell) ядра (kernel) Линукс. Встречается в двух формах:

  • тот CLI (Command Line Interface) который представляет собой интерфейс командной строки.
  • тот GUI (Graphical User Interface) который представляет собой графический интерфейс.

Итак, чтобы схематизировать все это, у нас есть terminal который содержит kernel Линукс. kernel обеспечивает shell общаться с ним. ТО shell может быть либо графический интерфейс GUI либо интерфейс командной строки CLI. Эмулятор терминала — это графическое программное обеспечение, позволяющее выполнять командные строки.

flowchart LR
    subgraph Terminal
			subgraph Kernel
		    subgraph Shell
					GUI
					CLI
				end
			end
    end

		et[Émulateur de terminal]

		GUI --> et
		et --> CLI

Вот и закончилась небольшая чистка. Хорош дляémulateur de terminalмы будем использовать простую и распространенную форму, которая terminal. Теперь перейдем к сути вопроса: настройке вашего CLI с bash. Мы найдем файлы конфигурации, а также лучшие практики, чтобы не потерять вашу конфигурацию.

В системах Linux необходимо знать два файла: ~/.profile (или ~/.bash_profile) и др. ~/.bashrc. И вот для чего они используются. Файл ~/.profile (или ~/.bash_profile в зависимости от дистрибутивов Linux) выполняется при открытии оболочки входа. Это означает, что этот файл выполняется только тогда, когда оболочка открывается вошедшим в систему пользователем. Файл ~/.bashrc выполняется при открытии оболочки без входа в систему, в отличие от файла ~/.profile. Он используется для пользователей, которые не вошли в систему.

При запуске терминала файл ~/.profile взимается. И в файле ~/.profileвы найдете следующие строки, которые указывают, что файл .bashrc загружается, если найден. Вот эти несколько строк:

if [ -n "$BASH_VERSION" ]; then # include .bashrc if it exists if [ -f "$HOME/.bashrc" ]; then . "$HOME/.bashrc" fi fi

И вот схематично, что происходит:

flowchart LR
    subgraph shell
			subgraph login
				direction TB
				sl{{Start}}-->|1st load|pl[~/.profile]
				sl-->|2nd load|bl[~/.bashrc]
			end
			subgraph non-login
				direction TB
				snl{{Start}}-->|1st load|bnl[~/.bashrc]
			end
    end

Теперь, когда мы увидели, как это работает, вот «хорошая практика», по крайней мере, та практика, которую я использую, чтобы иметь возможность повторно использовать мою конфигурацию в случае переустановки. Я создаю файл ~/.bashrc персонализированный, в котором я настраиваю свои различные программы и которые я включаю в свой ~/.profile.

if [ -n "$BASH_VERSION" ]; then # include .bashrc if it exists if [ -f "$HOME/.bashrc" ]; then . "$HOME/.bashrc" fi if [ -f "$HOME/.bashrc_custom" ]; then . "$HOME/.bashrc_custom" fi fi

И вот начало моего файла ~/.bashrc_custom :

# /* vim: set filetype=sh : */ # set PATH so it includes user's private bin if it exists if [ -d "$HOME/bin" ] then PATH="$HOME/bin:$PATH" fi # set PATH so it includes user's private bin if it exists if [ -d "$HOME/.local/bin" ] then PATH="$HOME/.local/bin:$PATH" fi # set PATH so it includes user's private npm-global if it exists if [ -d "$HOME/.npm-global" ] then PATH="$HOME/.npm-global/bin:$PATH" fi # ...

Если мы возьмем приведенный выше график, включая этот файл, то вот как он будет выглядеть:

flowchart LR
    subgraph shell
			subgraph login
				direction TB
				sl{{Start}}-->|1st load|pl[~/.profile]
				sl-->|2nd load|bl[~/.bashrc]
				sl-->|3rd load|bcl[~/.bashrc_custom]
			end
			subgraph non-login
				direction TB
				snl{{Start}}-->|1st load|bnl[~/.bashrc]
				snl-->|2nd load|bcnl[~/.bashrc_custom]
			end
    end

Как видите, здесь нет ничего особо сложного, а достаточно продуманная логика нарезки. Этот метод позволяет очень быстро создавать версии и находить конфигурацию благодаря суть из Github или фрагменты из Гитлаба.

Следуя той же логике разделения, мы можем сделать то же самое с псевдонимами bash. Действительно, в файле ~/.bashrcу нас есть несколько строк, которые загружают файл ~/.bash_aliases. А что касается нашего предыдущего файла, мы можем очень быстро создать его версию и найти конфигурацию благодаря суть из Github или фрагменты из Гитлаба.

Если мы возьмем приведенный выше график, включая этот файл, то вот как он будет выглядеть:

flowchart LR
    subgraph shell
			subgraph login
				direction TB
				sl{{Start}}-->|1st load|pl[~/.profile]
				sl-->|2nd load|bl[~/.bashrc]
				bl-->|load|cal[~/.bash_aliases]
				sl-->|3rd load|bcl[~/.bashrc_custom]
			end
			subgraph non-login
				direction TB
				snl{{Start}}-->|1st load|bnl[~/.bashrc]
				bnl-->|load|canl[~/.bash_aliases]
				snl-->|2nd load|bcnl[~/.bashrc_custom]
			end
    end

И это все, что касается конфигурации нашего CLI с bash.

Скажи стоп zsh и др. О, мой Зш су Linux

Часто можно увидеть, как многие люди используют zsh и др. Oh My Zsh даже не понимая, что это такое.

ТАК, zsh или Z shell это оболочка командной строки (CLI) как sh, bash, ksh, ashи многие другие. zsh добавляет функциональность вашему CLIвключая выполнение заказов, добавление функций и многое другое.

Вы действительно планируете использовать функциональные возможности zsh ? Я сомневаюсь, что это так! Кроме того, использование zsh может вызвать проблемы с переносимостью при написании сценариев оболочки, поскольку вы добавляете определенные функции в интерфейс командной строки (CLI), что есть не у всех. Это немного похоже на создание программы, предназначенной для системы Linux, но предназначенной для пользователей Windows. Необходимость установки и использования zsh в основном проявляется, если вы выбираете Oh My Zsh.

Если вы используете Oh My Zshто использование zsh является обязательным. Oh My Zsh это платформа для управления конфигурациями zshи он использует некоторые особенности zsh для предоставления расширенной функциональности, тем и плагинов. Так что в этом случае у вас действительно нет выбора, и вам придется использовать zsh. Однако, если вы предпочитаете использовать Bash или любую другую оболочку, вам не нужно устанавливать zsh или Oh My Zsh. Это вопрос личных предпочтений и конкретных потребностей.

Но зачем использовать Oh My Zsh ? Иметь 300 псевдонимов и использовать только два? Персонализировать свой терминал?

Я собираюсь показать вам две вещи, которые позволят вам выполнить то же самое или даже больше, но более простым способом.

Используйте свои псевдонимы

Я говорил об этом немного ранее. Но если вы хотите персонализировать свой CLI с псевдонимами вам просто нужно создать файл ~/.bash_aliases и вы можете создавать свои собственные псевдонимы.

Ле плагины Oh My Zsh Чаще всего определяют псевдонимы, которые вам нужно выучить, но вы на самом деле не знаете, что они делают. Посмотрите плагин сами история.

Итак, посмотрите на команды, которые вы используете чаще всего, и создайте свои собственные псевдонимы в файле. ~/.bash_aliases.

Напомним, псевдоним определяется следующим образом:

alias my_aliase_name='my_command and my args --or options'

С одной стороны, вы упрощаете команды, которые собираетесь выполнять, с другой стороны, вы сами определяете нужные вам псевдонимы. У вас есть сила!

⚠️ Но следите за псевдонимами! Слишком большое количество псевдонимов убивает псевдоним, и вы рискуете перестать знать основные команды и потеряться в том случае, если вам придется действовать на сервере, где установлен самый минимум, или на машине одного из ваших коллег.

Персонализируйте свой терминал с помощью Starship

Если вы используете Oh My Zsh Чтобы персонализировать свой терминал, вы, вероятно, используете существующие темы? Если вы не являетесь профессионалом в области сценариев sh или zsh. Когда смотришь на то, как сделаны те или иные темы, приходится зацепиться, чтобы понять, что происходит (пример темы агностер).

prompt_status() { local -a symbols [[ $RETVAL -ne 0 ]] && symbols+="%{%F{red}%}✘" [[ $UID -eq 0 ]] && symbols+="%{%F{yellow}%}⚡" [[ $(jobs -l | wc -l) -gt 0 ]] && symbols+="%{%F{cyan}%}⚙" [[ -n "$symbols" ]] && prompt_segment black default "$symbols" }

Если вы не профессиональный сценарист, то starship.rs здесь для вас. Starship это программа, разработанная на Rust, доступная для Linux, macOS и Windows, легко устанавливаемая и настраиваемая с помощью файла TOML. Для Linux для установки Starshipвам просто нужно выполнить несколько команд:

curl -sS https://starship.rs/install.sh | sh #### echo 'export STARSHIP_CONFIG=$HOME/.config/starship.toml' >> ~/.bashrc echo 'export STARSHIP_CACHE=~/.starship/cache' >> ~/.bashrc echo 'eval "$(starship init bash)"' >> ~/.bashrc #### # Ou ajouter les lignes suivantes dans ~/.bashrc_custom ### if command -v starship 1> /dev/null then export STARSHIP_CONFIG=$HOME/.config/starship.toml export STARSHIP_CACHE=~/.starship/cache eval "$(starship init bash)" fi

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

После этого все, что вам нужно сделать, это создать и реализовать файл ~/.config/starship.toml, который также можно будет версионировать. Вот пример конфигурации использования памяти, часов, времени выполнения команд и форматирования каталога.

[memory_usage] format = "$symbol[${ram} - ${ram_pct}( | ${swap} - ${swap_pct})]($style) " threshold = 0 symbol = "󰍛 " style = "bold dimmed white" disabled = false [time] time_format = "%T" format = "[](bold yellow) [$time](yellow) " disabled = false [cmd_duration] min_time = 1_000 format = "[󰔚 $duration]($style) " disabled = false [directory] truncation_length = 10 truncate_to_repo = true format = "[$path]($style)[$lock_symbol]($lock_style) "

А вот как может выглядеть ваш терминал:

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

Заключение : вы готовы улучшить свой опыт работы с Linux

Вот несколько советов, которые могут улучшить вашу работу на терминале.

Нам еще многое предстоит изучить, чтобы создать исключительную рабочую среду. Если вы хотите углубиться дальше, я рекомендую изучить текстовые редакторы интегрирован в ваш терминал, например Нео или ЛунарВимау терминальный мультиплексор tmuxисследователь l’изоляция по номиналуи, конечно же, погрузиться в сценарии оболочка.

Даже если вы не бородатый мужчина в темном подвале, вы можете вернуть себе контроль над своим терминалом. 😜

Источники

2024-02-19 11:12:15


1708533716
#Блог #Eleven #Labs #Несколько #советов #по #оптимизации #рабочей #среды #Linux

Read more:  «Мафия» медицинских компаний рождается с 4T

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.