10 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Основные команды Linux для начинающих

Linux — это ядро операционной системы. Возможно, вы слышали о UNIX. Ну, так вот, Linux — это клон UNIX. Он был создан Линусом Торвальдсом из Scratch. Linux является бесплатным и имеет открытый исходный код — вы можете просто изменить что-либо в Linux и распространять это под своим названием! Существует несколько сборок на основе Linux, обычно называемых дистрибутивами.

  • Ubuntu Linux
  • Red Hat Enterprise Linux
  • Linux Mint
  • Debian
  • Fedora

Linux в основном используется на серверах. Около 90% интернета работает на серверах Linux и вот почему.

Linux бесплатный,а основной проблемой использования Windows-серверов является их стоимость. Linux быстрый: ОС, которая работает примерно на 80% смартфонов в мире, Android, также сделана из ядра Linux. Linux безопасный, а большинство вирусов в мире работают на Windows.

Запуск команды top и расшифровка таблицы

Подключитесь к серверу по SSH и введите в консоли top — Enter и вы увидите таблицу, в которой выведен список запущенных процессов. Изначально перечень составлен в порядке убывания нагрузки, приходящейся на процессор.

О том, как сортировать данные по критерию, который нужен вам, поговорим дальше. А сейчас давайте рассмотрим, как расшифровать столбцы в таблице и о чем свидетельствуют значения в каждом из них.

Первые два столбика — номер процесса (PID) и имя пользователя, его запустившего (USER).

Следующие 2 столбца показывают, какой приоритет имеет процесс в данный момент (PR) и приоритет, присвоенный ему командой NICE (NI).

Информация, содержащаяся в других колонках, характеризует непосредственно уровень потребления ресурсов. Расшифровываются они следующим образом:

**VIRT — виртуальная память, которую использует процесс
**RES — физическая память, занятая данным процессом
**SHR — общий объем памяти, которую данный процесс делит с другими
**S — текущий статус процесса: R — running; S — sleeping, Z — zombie
**%CPU — процент используемого времени центрального процессора
**%MEM — процент ОЗУ, используемой процессом
**TIME+ — продолжительность работы процесса с момента запуска
**COMMAND — название команды (программы), которая инициировала процесс.

Базовый цикл командной оболочки

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

  1. Чтение: считывание команды со стандартных потоков.
  2. Парсинг: распознавание программы и аргументов во входной строке.
  3. Исполнение: запуск распознанной команды.

Эта идея реализована в функции lsh_loop() :

Пройдемся по коду. Первые несколько строк — это просто объявления. Цикл с постусловием более удобен для проверки состояния переменной, поскольку выполняется перед проверкой ее значения. Внутри цикла выводится приглашение ввода, вызываются функции для чтения входной строки и разбиения строки на аргументы, а затем исполняются аргументы. Далее освобождается память, выделенная под строку и аргументы. Стоит обратить внимание, что в коде используется переменная состояния, возвращаемая в lsh_execute() и определяющая, когда нужно выйти из функции.

Команды Linux для управления пакетным менеджером

Установку и удаление приложений в Linux выполняют пакетные менеджеры. В Ubuntu и Debian пакетный менеджер называется apt, в Fedora — dnf, в Arch и Manjaro — pacman. Они загружают приложения из сетевых репозитариев, источников пакетов. Давать им команды следует с правами суперпользователя.

apt (Debian/Ubuntu/Mint)

  1. sudo apt install имя_пакета . Установить нужный пакет.
  2. sudo apt-add-repository адрес_репозитария . Добавить сторонний репозитарий.
  3. sudo apt update . Обновить сведения о пакетах.
  4. sudo apt upgrade . Обновить все пакеты до самых свежих (выполнять после apt update ).
  5. sudo apt remove имя_пакета . Удалить ненужный пакет.
  6. sudo apt purge имя_пакета . Удалить ненужный пакет со всеми зависимостями, если хотите освободить больше места.
  7. sudo apt autoremove . Удалить все ненужные зависимости, бесхозные пакеты и прочий мусор.

dnf (Red Hat/Fedora/CentOS)

  1. sudo dnf install имя_пакета . Установить нужный пакет.
  2. sudo dnf config-manager —add-repo адрес_репозитария . Добавить сторонний репозитарий.
  3. sudo dnf upgrade . Обновить все пакеты до самых свежих.
  4. sudo dnf remove имя_пакета . Удалить ненужный пакет.
  5. sudo dnf autoremove . Удалить все ненужные зависимости.
Читать еще:  Как установить жёсткий диск самому

pacman (Arch/Manjaro)

  1. sudo pacman -S имя_пакета . Установить нужный пакет.
  2. sudo yaourt -S имя_пакета . Установить пакет из AUR, если его нет в основном репозитарии.
  3. sudo pacman -Sy . Обновить сведения о пакетах.
  4. sudo pacman -Syu . Обновить все пакеты до самых свежих.
  5. sudo pacman -R имя_пакета . Удалить ненужный пакет.
  6. sudo pacman -Rs имя_пакета . Удалить ненужный пакет со всеми зависимостями.

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

sudo apt install firefox clementine vlc

Если вы хотите установить какой-то пакет, но не знаете его точного названия, введите несколько первых букв имени пакета и дважды нажмите Tab. Пакетный менеджер покажет все пакеты, названия которых начинаются одинаково.

Запуск команды top и расшифровка таблицы

Подключитесь к серверу по SSH и введите в консоли top — Enter и вы увидите таблицу, в которой выведен список запущенных процессов. Изначально перечень составлен в порядке убывания нагрузки, приходящейся на процессор.

О том, как сортировать данные по критерию, который нужен вам, поговорим дальше. А сейчас давайте рассмотрим, как расшифровать столбцы в таблице и о чем свидетельствуют значения в каждом из них.

Первые два столбика — номер процесса (PID) и имя пользователя, его запустившего (USER).

Следующие 2 столбца показывают, какой приоритет имеет процесс в данный момент (PR) и приоритет, присвоенный ему командой NICE (NI).

Информация, содержащаяся в других колонках, характеризует непосредственно уровень потребления ресурсов. Расшифровываются они следующим образом:

**VIRT — виртуальная память, которую использует процесс
**RES — физическая память, занятая данным процессом
**SHR — общий объем памяти, которую данный процесс делит с другими
**S — текущий статус процесса: R — running; S — sleeping, Z — zombie
**%CPU — процент используемого времени центрального процессора
**%MEM — процент ОЗУ, используемой процессом
**TIME+ — продолжительность работы процесса с момента запуска
**COMMAND — название команды (программы), которая инициировала процесс.

Изучите необходимый минимум Linux, чтобы быть продуктивным

Разные операционные системы длительное время обслуживают различные аудитории: Windows — бизнес-профессионалов, Mac — творческих, а Linux — разработчиков. Разработчикам ОС такой тип рыночного спектра сильно упростил концепцию продукта, технические требования, пользовательский опыт и направление рынка. Однако, он также ужесточил нормы рабочего пространства, что деформировало отдельных пользователей под узкие, непересекающиеся области: у бизнесменов нет возможности заглянуть в творческий процесс, а у разработчиков нет представления о проблемах бизнеса.

В реальности знания и опыт — динамичны, они охватывают несколько дисциплин и сфер деятельности. Представление о том, что «можно иметь способности только к чему-то одному» — это не руководство к овладению мастерством, а попытка справиться с преждевременной оптимизацией. Узнать о том, в чём вы хорошо разбираетесь можно только когда вы попробовали себя в нескольких разных вопросах. И может оказаться, что у вас есть способности ко многим видам деятельности.

Для современных бизнес-аналитиков особенно актуален вопрос ликвидации пробела между бизнесом и разработкой. Бизнес-аналитики должны быть двухплатформенными, способными использовать командную строку, доступную только на Linux (или в macOS), но при этом уметь извлекать широкие возможности из Microsoft Office в Windows. Очевидно, что мир Linux пугает тех, у кого образование в сфере бизнеса. К счастью, как и в большем количестве вопросов, вам необходимо изучить 20% информации, чтобы выполнить 80% работы. Вот мои 20%.

Почему современные бизнес-аналитики должны знать Linux

Благодаря своим open source корням, Linux выиграл от вкладов тысяч разработчиков за всё время его существования. Они построили программы и утилиты, чтобы упростить работу не только себе, но и тем программистам, которые последовали за ними. В результате open source разработка создала эффект сетевой выгоды: чем больше разработчики строили утилиты на оригинальной платформе, тем больше других разработчиков могло влиять на эти утилиты, чтобы писать собственные программы.

В результате получился огромный пакет программ и утилит (то есть софт), который был написан на Linux и под Linux. Большая часть его никогда не портировалась в Windows. Один из примеров — популярная система контроля версий (VCS), которая называется git. Разработчики могли написать софт под Windows, но они этого не сделали. Они написали его для работы в командной строке, для Linux, потому что Linux — экосистема, в которой уже были все необходимые инструменты.

Читать еще:  Американские системы работают на мертвом языке программирования

Если вдаваться в подробности, разработка на Windows ведёт к двум основным проблемам:

  1. Базовые задачи, вроде парсинга файлов, рабочего планирования и поиска текста используются чаще, чем запуск утилиты командной строки.
  2. Языки программирования (Python, C++) и связанные с ними библиотеки выкидывают ошибки, потому что они ожидают конкретных параметров Linux или специфических локаций файловой системы.

Если собрать всё вместе, это выльется в трату времени на переписывание базовых инструментов, которые уже доступны в Linux, они позволят избежать ошибок совместимости с ОС. Тут нет никаких сюрпризов — экосистема Windows просто не была задумана и спроектирована под нужды разработки софта.

Теперь давайте рассмотрим базовые идеи Linux.

Фундаментальная единица Linux: «оболочка»

Shell (оболочка, также известная как терминал, консоль или командная строка) — это текстовый интерфейс пользователя, через который команды отправляются машине. На Linux, по-умолчанию, язык оболочки называется bash. В отличие от Windows-пользователей, которые в своём большинстве используют навигацию «навести-кликнуть» по окну, Linux-разработчики привязаны к клавиатуре и пишут команды в оболочке. Хоть этот переход далёк от естественного для тех, у кого нет бэкграунда в программировании, плюсы разработки в Linux сильно перевешивают изначальное вложение в обучение.

Изучаем несколько важных концептов

В сравнении с достаточно зрелым языком программирования, bash имеет всего несколько основных концептов, которые необходимо выучить. Как только вы охватите это, остаток bash — простое запоминание. Я переформулирую понятней: хорошо разбираться в bash значит запомнить 20-30 команд и их часто используемые аргументы.

Linux кажется непроницаемым для тех, кто не касается разработки, из-за способа, которым разработчики (не напрягаясь) извергают эзотерические команды терминала, когда им захочется. Правда в том, что они хорошо знают только несколько десятков команд — за всем более сложным они так же (как и все смертные) обращаются в Google.

Опуская мелкие загвоздки, стоящие на пути, вот главные концепты в bash.

Командный синтаксис

Команды соответствуют синтаксису:

Например, в ‘grep -inr’, grep — это команда (для поиска текстовой строки) и -inr это флаги/аргументы, которые меняют то, что grep выполняет по умолчанию. Единственный способ понять, что это значит, поискать что-то о них через Google или просто ввести ‘man grep’. Я рекомендую выучить команды и их самые используемые аргументы: слишком обременительно помнить, что делает каждый флаг.

Псевдонимы директорий

  • Текущая директория (где я?): .
  • Родительская директория текущей директории: ..
  • Домашняя директория пользователя:
  • Корень файловой системы (или родитель всех родителей): /
  • Например, чтобы поменять текущую директорию на родительскую директорию нужно ввести: cd ..

    Таким же способом, чтобы скопировать файл, расположенный в «/path/to/file.txt» в текущую директорию, нужно ввести cp /path/to/file.txt . (заметьте, что в конце команды точка). Поскольку это всего лишь псевдонимы, вместо них может использоваться реальное имя пути.

    Полезная информация

    У нас есть курс по операционным системам. Зарегистрированные пользователи могут пройти его бесплатно. Другие бесплатные курсы можно найти по ссылке.

    STDIN / STDOUT

    Всё, что вы пишите в окне и подтверждаете (с помощью ENTER), называется стандартным вводом (STDIN).

    Всё, что программа выводит в ответе в терминал (например текст из файла), называется стандартным выводом (STDOUT)

    Конвейер (piping)

    1. |

    Pipe принимает STDOUT от команды слева от pipe и превращает его в STDIN для команды справа от pipe.

    пример: echo ‘test text’ | wc -l

    Символ «больше» принимает STDOUT от команды слева и записывает/перезаписывает в новый файл справа

    пример: ls > tmp.txt

    Два символа «больше» принимают STDOUT от команды слева и добавляют к новому или существующему файлу справа.

    пример: date >> tmp.txt

    Шаблоны поиска (wildcards)

    Можете представить это как символ % в SQL. Например, можно написать WHERE first_name LIKE ‘John%’ , чтобы найти любые позиции, где данные начинаются с имени John.

    В bash можно написать John* . Если вы хотите вывести список всех файлов в какой-то папке, заканчивающихся на «.json», пишете : ls *.json

    Завершение с помощью tab

    Bash часто завершает команды сам, по определённой логике, если вы начинаете вводить команду и нажимаете TAB.

    Однако, стоит попробовать что-то вроде zsh или fish для автозаполнения, потому что запоминать команды и все их параметры очень сложно. Более того, эти инструменты применят автозаполнение, основываясь на вашей истории используемых команд.

    Читать еще:  Что такое Wi-Fi (вай фай) - для новичков

    Выход

    Иногда вы застреваете в какой-нибудь программе и не можете оттуда выйти. Это очень часто повторяющееся событие для новичков в Linux, которое невероятно демотивирует. Часто выход происходит с помощью чего-то, содержащего q. Хорошо бы запомнить то, что будет написано ниже и использовать, когда вы в ловушке.

    • Bash
      • CTRL+c
      • q
      • exit
    • Python: quit()
    • Nano: CTRL+x
    • Vim: :q!

    Что я помню из команд bash

    Это те команды, которые я использую чаще всего в Linux (начиная от самых часто используемых к самым редко используемым). Как я уже писал раньше, знание всего горстки команд поможет выполнять большой набор необходимых программируемых задач.

    • cd изменить директорию
    • ls -lha вывести директорию в виде списка (подробного)
    • vim или nano редактор командной строки
    • touch создать новый пустой файл
    • cp -R скопировать файл или директорию (и всё их содержимое)
    • mv переместить или переименовать файл
    • rm удалить файл
    • rm -rf удалить файл или папку без возможности восстановления [использовать аккуратно!]
    • pwd вывести текущую рабочую директорию
    • cat или less или tail или head -n10 вывести в STDOUT содержимое файла
    • mkdir создать пустую директорию
    • grep -inr найти строку в любом файле этой директории или дочерних директориях

    column -s, -t отобразить разделенный запятыми файл в виде столбцов

    ssh @ соединиться с удалённой машиной

    tree -LhaC 3 показать структуру директории на 3 уровнями вглубь (с размерами файлов и включая скрытые директории)

    htop (или top ) диспетчер задач

    pip install —user пакетный менеджер Python для установки пакетов в

    pushd . ; popd ; dirs; cd — push/pop/view директорию в стек + изменить обратно на последнюю директорию

    sed -i «s///g» заменить строку в файле

    find . -type f -name ‘*.txt’ -exec sed -i «s///g» <> ; заменить строку для каждого файла в этой и дочерней папках с именем типа *.txt

    tmux new -s session, tmux attach -t session создать новую сессию терминала без создания нового окна [продвинутый уровень]

    wgetзагрузить веб-страницу или веб-ресурс

    curl -X POST -d «» http://www.google.com отправить HTTP-запрос на веб-сервер

    find вывести список всего содержимого директории и её дочерних директорий рекурсивно

    Читайте также

    Продвинутые и не часто используемые команды

    Я считаю хорошей практикой хранить список команд, которые полезны в определённых ситуациях, даже если подобные ситуации случаются редко (например, какой процесс блокирует конкретный сетевой порт). Вот несколько нестандартных команд, которые у меня всегда под рукой:

    Linux Shell или «Терминал»

    Linux Shell — это программа, которая получает команды от пользователя и передает их ОС для обработки и показывает выходные данные. Shell Linux является его основной частью. Большинство дистрибутивов поставляются с графическим интерфейсом пользователя (GUI), но в основном в серверных Linux используется CLI (интерфейс командной строки).

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

    Чтобы открыть терминал, нажмите Ctrl + Alt + T в Ubuntu или нажмите Alt + F2, введите gnome-терминал и нажмите ввод. В Raspberry Pi введите lxterminal.

    Примеры

    Прежде чем перейти непосредственно к исполнению команды kill, следует сделать ряд важных замечаний:

    • Пользователь может прервать любой свой процесс.
    • Пользователь не может прервать процесс другого пользователя..
    • Суперпользователь (root) может прервать системный процесс и процесс любого пользователя.
    • Пользователь не может прервать системный процесс

    Чтобы “убить” процесс с указанным PID, нужно выполнить следующую команду (приведен пример для процесса mysqld из предыдущего раздела):

    Будет “убит” процесс с PID=1684, то есть mysqld.

    Можно использовать не только номер, но и название сигнала/ Например, для запроса на прерывание, который можно обработать или проигнорировать:

    Аналогично, команда kill -SIGKILL PID эквивалентна команде # kill -9 PID

    Для прерывания нескольких процессов можно указать их идентификаторы через пробел:

    Подводя итоги

    Очевидно, что эта оболочка не является многофункциональной. Некоторые из ее упущений:

    • аргументы разделяются только пробелами, нет поддержки кавычек или обратного слеша;
    • нет перенаправления и конвейеров;
    • мало встроенных функций;
    • нет подстановки имён файлов.

    Чтобы разобраться в системных вызовах, рекомендуем обратиться к мануалу: man 3p . Если вы не знаете, какой интерфейс вам предлагают стандартная библиотека C и Unix, советуем посмотреть спецификацию POSIX, в частности раздел 13.

    Ссылка на основную публикацию
    Статьи c упоминанием слов:
    Adblock
    detector