Что значит total linux

Обновлено: 06.07.2024

Всем привет! Меня зовут Саша, и я больше шести лет занимаюсь тестированием бэкенда (сервисы Linux и API). Мысль о статье у меня появилась после очередной просьбы знакомого тестировщика подсказать ему, что можно почитать по командам Linux перед собеседованием. Обычно от кандидата на позицию QA инженера требуют знание основных команд (если, конечно, подразумевается работа с Linux), но как понять, про какие команды стоит почитать во время подготовки к собеседованию, если опыта работы с Linux мало или вовсе нет?

Поэтому, хоть про это уже и много раз написано, я всё же решился написать ещё одну статью «Linux для новичков» и перечислить здесь базовые команды, которые нужно знать перед любым собеседованием в отдел (или компанию), где используют Linux. Я подумал, какие команды и утилиты и с какими параметрами я использую чаще всего, собрал фидбек от коллег, и скомпоновал это всё в одну статью. Статья условно делится на 3 части: сначала краткая информация об основах ввода-вывода в терминале Linux, затем обзор самых базовых команд, а в третьей части описывается решение типовых задач в Linux.

У каждой команды есть много опций, здесь все они перечислены не будут. Всегда можно ввести `man <команда>` или `<команда> --help`, чтобы узнать о команде подробнее.

Если какая-то команда выполняется слишком долго, её можно завершить, нажав в консоли Ctrl+C (процессу посылается сигнал SIGINT).


Если мы выведем содержимое файла man_signal, то мы увидим, что оно идентично тому, что было бы при простом запуске команды `man signal`.


Операция перенаправления `2>&1` означает перенаправление stderr туда же, куда направлен stdout.

Еще один удобный инструмент для работы с вводом-выводом (а точнее, это удобное средство межпроцессного взаимодействия) — pipe (или конвейер). Конвейеры часто используются для связи нескольких команд: stdout команды перенаправляется в stdin следующей, и так по цепочке:

Вывести текущую (рабочую) директорию.

Вывести текущую дату и время системы.

Данная команда показывает, кто залогинен в системе. Помимо этого также на экран выводится uptime и LA (load average).

Вывести содержимое директории. Если не передать путь, то выведется содержимое текущей директории.


Лично я часто использую опции -l (long listing format — вывод в колонку с дополнительной информацией о файлах), -t (сортировка по времени изменения файла/директории) и -r (обратная сортировка — в сочетании с -t наиболее «свежие» файлы будут внизу):

Есть 2 специальных имени директории: "." и "..". Первое означает текущую директорию, второе — родительскую директорию. Их бывает удобно использовать в различных командах, в частности, ls:


Также есть полезная опция для вывода скрытых файлов (начинаются на ".") — -a:


И еще можно использовать опцию -h — вывод в human readable формате (обратите внимание на размеры файлов):

Изменить текущую директорию.


Если не передавать имя директории в качестве аргумента, будет использоваться переменная окружения $HOME, то есть домашняя директория. Также может быть удобно использовать `

` — специальный символ, означающий $HOME:

mkdir


Иногда нужно создать определенную структуру директорий: например, директорию в директории, которой не существует. Чтобы не вводить несколько раз подряд mkdir, можно использовать опцию -p — она позволяет создать все недостающие директории в иерархии. Также с этой опцией mkdir не вернет ошибку, если директория существует.


Опция -r позволяет рекурсивно удалять директории со всем их содержимым, опция -f позволяет игнорировать ошибки при удалении (например, о несуществующем файле). Эти опции позволяют, грубо говоря, гарантированно удалить всю иерархию файлов и директорий (если на это есть права у пользователя), поэтому, их нужно использовать с осторожностью (классический пример-шутка — "rm -rf /", при определенных обстоятельствах удалит вам если не всю систему, то очень много важных для её работоспособности файлов).

Копировать файл или директорию.


У этой команды также есть опции -r и -f, их можно использовать, чтобы гарантированно скопировать иерархию директорий и папок в другое место.

Переместить или переименовать файл или директорию.

Вывести содержимое файла (или файлов).


Также стоит обратить внимание на команды head (вывести n первых строк или байт файла) и tail (о ней — далее).

Вывести n последних строк или байт файла.


Очень полезной является опция -f — она позволяет выводить новые данные в файле в реальном времени.

Иногда текстовый файл слишком большой, и неудобно выводить его командой cat. Тогда можно открыть его с помощью команды less: файл будет выводиться по частям, доступна навигация по этим частям, поиск и прочий простой функционал.


Также может оказаться удобным вариант использования less с конвейером (pipe):

Вывести список процессов.


Я сам обычно использую BSD опции "aux" — вывести все процессы в системе (так как процессов может быть много, я вывел только первые 5 из них, использовав конвейер (pipe) и команду head):


Многие также используют BSD опции "axjf", что позволяет вывести дерево процессов (здесь я убрал часть вывода для демонстрации):


У этой команды много различных опций, так что при активном использовании рекомендую ознакомиться с документацией. Для большинства же случаев хватит просто знать "ps aux".

Послать сигнал процессу. По умолчанию посылается сигнал SIGTERM, который завершает процесс.


Так как процесс может иметь обработчики сигналов, kill не всегда приводит к ожидаемому результату — моментальному завершению процесса. Чтобы «убить» процесс наверняка, нужно послать процессу сигнал SIGKILL. Однако это может привести к потере данных (например, если процесс перед завершением должен сохранить какую-то информацию на диск), так что нужно пользоваться такой командой осторожно. Номер сигнала SIGKILL — 9, поэтому короткий вариант команды выглядит так:


Помимо упомянутых SIGTERM и SIGKILL существует еще множество различных сигналов, их список можно легко найти в интернете. И не забывайте, что сигналы SIGKILL и SIGSTOP не могут быть перехвачены или проигнорированы.

Послать хосту ICMP пакет ECHO_REQUEST.


По умолчанию ping работает, пока его не завершить вручную. Поэтому может быть полезна опция -c — количество пакетов, после отправки которых ping завершится самостоятельно. Ещё одна опция, которую я иногда использую — -i, интервал между посылками пакетов.

OpenSSH SSH клиент, позволяет подключаться к удаленному хосту.


Есть много нюансов в использовании SSH, также этот клиент обладает большим количеством возможностей, поэтому при желании (или необходимости) можно почитать про это более подробно.

Копировать файлы между хостами (для этого используется ssh).

rsync

Также для синхронизации директорий между хостами можно использовать rsync (-a — archive mode, позволяет скопировать полностью всё содержимое директории «как есть», -v — вывод на консоль дополнительной информации):

Вывести на экран строку текста.


Здесь заслуживают внимания опции -n — не дополнять строку переносом строки в конце, и -e — включить интерпретацию экранирования с помощью "\".


Также с помощью этой команды можно выводить значения переменных. Например, в Linux exit code последней завершенной команды хранится в специальной переменной $?, и таким образом можно узнать, какая именно ошибка произошла в последнем запущенном приложении:

telnet

Клиент для протокола TELNET. Используется для коммуникации с другим хостом.


Если нужно использовать протокол TLS (напомню, что SSL давно устарел), то telnet для этих целей не подойдёт. Зато подойдёт клиент openssl:

Пример использования openssl с выводом ответа на GET запрос

Изменить владельца файла

Изменить владельца файла или директории можно с помощью команды chown:


В параметр этой команде нужно отдать нового владельца и группу (опционально), разделенных двоеточием. Также при изменении владельца директории может быть полезна опция -R — тогда владельцы изменятся и у всего содержимого директории.

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

Эта задача решается с помощью команды chmod. В качестве примера приведу установку прав «владельцу разрешено чтение, запись и исполнение, группе разрешено чтение и запись, всем остальным — ничего»:


Первая 7 (это 0b111 в битовом представлении) в параметре означает «все права для владельца», вторая 6 (это 0b110 в битовом представлении) — «чтение и запись», ну и 0 — это ничего для остальных. Битовая маска состоит из трёх битов: самый младший («правый») бит отвечает за исполнение, следующий за ним («средний») — за запись, и самый старший («левый») — за чтение.
Также можно выставлять права с помощью специальных символов (мнемонический синтаксис). Например, в следующем примере сначала убираются права на исполнение для текущего пользователя, а затем возвращаются обратно:


У этой команды есть много вариантов использования, поэтому советую прочитать про неё подробнее (особенно про мнемонический синтаксис, например, здесь).

Вывести содержимое бинарного файла

Это можно сделать с помощью утилиты hexdump. Ниже приведены примеры её использования.


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

Искать файлы

Найти файл по части имени в дереве каталогов можно с помощью команды find:


Также доступны другие опции и фильтры поиска. Например, так можно найти файлы в папке test, созданные более 5 дней назад:

Искать текст в файлах


Один из популярных способов использования команды grep — использование её в конвейере (pipe):


Опция -v позволяет сделать эффект grep'а обратным — будут выводиться только строки, не содержащие паттерн, переданный в grep.

Смотреть установленные пакеты

Универсальной команды нет, потому что всё зависит от дистрибутива Linux и используемого пакетного менеджера. Скорее всего вам поможет одна из следующих команд:

Посмотреть, сколько места занимает дерево директорий

Один из вариантов использования команды du:


Можно менять значение параметра -d, чтобы получать более подробную информацию о дереве директорий. Также можно использовать команду в комбинации с sort:


Опция -h у команды sort позволяет сортировать размеры, записанные в human readable формате (например, 1K, 2G), опция -r позволяет отсортировать данные в обратном порядке.

«Найти и заменить» в файле, в файлах в директории

Данная операция выполняется с помощью утилиты sed (без флага g в конце заменится только первое вхождение «old-text» в строке):


Можно использовать её для нескольких файлов сразу:

Вывести колонку из вывода


При этом надо иметь ввиду, что awk обладает гораздо более богатым функционалом, так что при необходимости работы с текстом в командной строке стоит почитать об этой команде подробнее.

Узнать IP адрес по имени хоста

С этим поможет одна из следующих команд:

Сетевая информация

Можно использовать ifconfig:


А можно и ip:


При этом, если, например, вас интересует только IPv4, то можно добавить опцию -4:

Посмотреть открытые порты

Для этого используют утилиту netstat. Например, чтобы посмотреть все слушающие TCP и UDP порты с отображением PID'а процесса, слушающего порт, и с числовым представлением порта, нужно использовать ее со следующими опциями:

Информация о системе

Получить данную информацию можно с помощью команды uname.


Чтобы понять, в каком формате производится вывод, можно обратиться к help'у данной команды:

Информация о памяти

Чтобы понять, сколько оперативной памяти занято или свободно, можно воспользоваться командой free.

Информация о файловых системах (свободное место на дисках)

Команда df позволяет посмотреть, сколько места свободно и занято на примонтированных файловых системах.


Опция -T указывает, что нужно выводить тип файловой системы.

Информация о задачах и различной статистике по системе

Для этого используется команда top. Она способна вывести разную информацию: например, топ процессов по использованию оперативной памяти или топ процессов по использованию процессорного времени. Также она выводит информацию о памяти, CPU, uptime и LA (load average).


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

Дамп сетевого трафика

Для перехвата сетевого трафика в Linux используется утилита tcpdump. Чтобы сдампить трафик на порте 12345, можно воспользоваться следующей командой:


Опция -A говорит о том, что мы ходим видеть вывод в ASCII (поэтому это хорошо для текстовых протоколов), -i any указывает, что нас не интересует сетевой интерфейс, port — трафик какого порта дампить. Вместо port можно использовать host, либо комбинацию host и port (host A and port X). И еще полезной может оказаться опция -n — не конвертировать адреса в хостнеймы в выводе.
Что если трафик бинарный? Тогда нам поможет опция -X — выводить данные в hex и ASCII:


При этом надо учитывать, что в обоих вариантах использования будут выводиться IP пакеты, поэтому в начале каждого из них будут бинарные заголовки IP и TCP. Вот пример вывода для запроса "123" посланного в сервер, слушающий порт 12345:

Вы можете найти определение этой строки в документации ls для вашей платформы. Для coreutils ls (найденного во многих системах Linux) информацию можно найти через info coreutils ls :

Для каждого каталога, который указан, предварите файлы с линией `total BLOCKS ', где BLOCKS - это общее распределение диска для всех файлов в этом каталоге.

  • ls_block_size - произвольная переменная среды (обычно 512 или 1024 байта), которая свободно модифицируется с помощью --block-size=<int> флаг ls , POSIXLY_CORRECT=1 GNU переменная среды (для получения 512-байтовых единиц) или флаг -k , чтобы заставить 1kB.
  • physical_block_size - зависимое от ОС значение внутреннего интерфейса блока, которое может быть или не быть подключено к базовому оборудованию. Это значение обычно равно 512b или 1k, но полностью зависит от ОС. Он может быть обнаружен с помощью значения %B на stat или fstat . Обратите внимание, что это значение (почти всегда) не связано с количеством физических блоков на современном устройстве хранения.

Почему так запутанно?

Этот номер довольно удален от любой физической или значимой метрики. Многие младшие программисты не имели опыта работы с файловыми отверстиями или жесткими/символическими ссылками. Кроме того, документация, доступная по этой конкретной теме, практически не существует.

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

Примеры конфликтной информации: du (или ls -s ) vs stat

Запуск du * в папке проекта дает следующее: (Примечание: ls -s возвращает те же результаты.)

Всего: 2 + 2 + 1 + 3 + 3 + 5 + 26 + 4 + 2 + 14 = 62 Блоки

Однако, когда вы выполняете stat , мы видим другой набор значений. Выполнение stat в том же каталоге дает:

Всего: 3 + 3 + 1 + 5 + 6 + 10 + 51 + 8 + 3 + 28 = 118 Блоки

Примечание.. Вы можете использовать команду stat * --printf="%b\t(%B)\t%n: %s bytes\n" > для вывода (по порядку) количества блоков (в парнах) размера этих блоки, имя файла и размер в байтах, как показано выше.

Далее будут приведены примеры опций и примеры их использования.

-R Рекурсивно обойти встретившиеся подкаталоги.
-a Вывести список всех файлов (без этой опции не выводятся скрытые файлы, имена которых начинаются с точки).
-d Если аргумент является каталогом, то выводить только его имя, а не содержимое. Часто используется с флагом -l для получения сведений о состоянии каталога.
-C Вывод в несколько колонок с сортировкой по колонкам.
-x Вывод в несколько колонок с сортировкой по строкам.
-m Вывод в свободном формате, имена файлов разделяются запятыми.
-l Вывод в длинном формате: перед именами файлов выдается режим доступа, количество ссылок на файл, имена владельца и группы, размер в байтах и время последней модификации (см. ниже). Если файл является специальным, то в поле размера выводится старший и младший номера устройства.
-n То же, что и -l, но идентификаторы владельца и группы выводятся в виде чисел, а не в виде имен.
-o То же, что и -l, но идентификатор группы не выводится.
-g То же, что и -l, но идентификатор владельца не выводится.
-r Изменить порядок сортировки на обратный алфавитный или, при наличии флага -t, сначала выводить более старые файлы.
-t Имена файлов сортируются не по алфавиту, а по времени (сначала идут самые свежие файлы). По умолчанию используется время последнего изменения. См. также флаги -u и -c.
-u Вместо времени последнего изменения использовать время последнего доступа для сортировки (с флагом -t) или для вывода (с флагом -l).
-c Вместо времени последнего изменения использовать время последней модификации описателя файла (т.е. время создания файла, изменения режима доступа к нему и т.п.) для сортировки (с флагом -t) или для вывода (с флагом -l).
-p Если файл является каталогом, то выдавать после его имени символ /.
-F Если файл является каталогом, то выдавать после его имени символ /; если файл является выполняемым, то выдавать после его имени символ *.
-b Выдавать непечатные символы, входящие в имя файла, в восьмеричном виде (ddd).
-q Выдавать непечатные символы, входящие в имя файла, в виде символа ?.
-i Выдавать в первой колонке номера описателей файлов.
-s Выдавать размер файлов в блоках (включая косвенные блоки).
-f Рассматривать каждый аргумент как каталог и выводить его содержимое. Этот флаг отменяет флаги -l, -t, -s, -r и включает флаг -a. Сортировка имен файлов не производится; имена выдаются в таком порядке, в каком они перечислены в каталоге.

Теперь несколько примеров наиболее полезных опций.

Вывести список только каталогов:

Ключ -l весьма полезен, так как позволяет проверять владельца и права на файлы/каталоги:

Для вывода информации о скрытых файлах (начинаются с точки) используйте ключ -a :

Про ошибку с .gvfs можно почитать в статье ls: cannot access .gvfs: Permission denied.

Кратко остановимся на обозначениях прав доступа и обозначениях файлов/каталогов. Первый символ:

Открыть для редактирования последний редактировавшийся файл:

Отсортировать файлы/каталоги по их размеру, начиная с самого большого:

То же самое, но сортировать по дате последнего доступа к файлу, а не дате его модификации, используйте ключ -u :

Вывести список файлов/каталогов, разделённый на 5 колонок, разделённых на всю ширину окна:

Выводить список через запятую:

Вывести список рекурсивно, включая подкаталоги и их содержимое:

./Desktop:
PDF-Viewer.desktop
PDF-Viewer.lnk

Остортировать файлы/каталоги в обратном алфавитном порядке:

Вывести информацию о номерах inode файлов и каталогов:

Вывести информацию о пользователе/группе в виде UID и GID , вместо символьных имён:

Сначала учите вас четырех горячих ключах, узнайте эти четыре ключа и получите всю жизнь.

Кнопка TAB --- Команда пополнения

Ctrl + C Кнопка --- Спортивные программы

Ctrl + D Кнопка --- Эквивалент для выхода, выхода

Ctrl + L КНОПКА --- Цингинг


1. Команда выключения: отключение

Другой Команда Shutdown: Halt, Soweroff

Отмена команды Shutdown Timing: ShutDown -C


2. Перезагрузить команду: перезагрузка


3. Просмотр файловых команд в каталоге: LL

4. Команда отображения каталогов: Ls Показать все команды каталога: ls -a


5. Команда преобразования каталога: CD


6. Отображение текущей команды каталога: PWD


7. Просмотр справочной информации версии: uname -a; lsb_release -a; getconf long_bit

8. Несколько гаджетов


Команда калькулятора: до н.э.


Show Calendar Command: Cal


Дата отображения Команда: Дата

Во-вторых, тяжелая работа

1. Измените команду группы файла: CHGRP




2. Измените команду владельца файла: chowro



3. Измените разрешения файла: chmod

Под системой Linux каждый файл прочитан, запись и запуска разрешений на настройку.



4. Создайте новую команду каталога: MKDIR



5. Показать команды содержимого от первой строки: CAT (соответствующая команда NL: последовательная команда номера строки вывода; TAC: из последней строки)



6. Скопируйте команду файла или каталога: CP



В-третьих, протез этап

1. Некоторые использование команды не особо ясно, и нет сети, чтобы проверить, вы можете использовать Linux, чтобы помочь документации, но иметь определенный фундамент английского языка, это ваши четыре или шестые?

Есть три заказанные команды, информация, CP --help



2. Команда уровня прогона переключения: init

Многие маленькие партнеры не понимают команду init, Linux - это уровень работает, а команда init - это команда для переключения уровня запуска. Вы все еще не понимаете, тогда я скажу это снова. Игра в LOL знает, что каждый раз, когда у вас есть обновления простоя и обновлениями, то вы не можете войти. Это на самом деле переключает уровень запуска и не позволяет пользователю входить в систему.

Favorite

Добавить в избранное

Главное меню » Linux » Что делает команда ls -l в Linux

Linux Fu. Завершение пользовательских команд Bash

В Linux команда ls является одним из основных инструментов. В нем перечислены файлы и каталоги с различной дополнительной информацией или без нее. Команда ls является частью основного пакета служебных программ GNU. Он должен быть доступен в любом дистрибутиве Linux.

В этой статье будет показано, как использовать команду ls, в частности «ls -l», в сочетании с другими параметрами.

Команда ls в Linux

Команда ls берет местоположение каталога и печатает все файлы и каталоги в этом местоположении. Он также может печатать дополнительную информацию о файле, такую ​​как права доступа к файлу, права собственности на файл, размер файла и т. д.

Структура команды

Это командная структура, которой должны следовать все команды ls.

Если каталог не указан, ls выполняет свое действие с текущим каталогом. Например, следующая команда выведет список всех файлов и каталогов (только имя).

Список файлов и каталогов в формате длинного списка

По умолчанию команда ls выводит только имена всех файлов и каталогов. Чтобы получить дополнительную информацию и более четкое представление, используйте флаг «-l».

В формате длинного списка ls показывает следующую информацию о каждом файле.

  • Тип файла
  • Права доступа к файлам
  • Жесткие ссылки
  • Право собственности
  • Группа
  • Размер
  • Дата и время

Дополнительные опции

Для изменения вывода команды ls доступно множество опций. Все следующие параметры объединены с «ls -l», чтобы по умолчанию использовать формат длинного списка.

Отображение обратной косой черты после каталогов

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

В такой ситуации используйте флаг «-F», чтобы после имени каталога отображалась обратная косая черта «/».

Сортировка

Команда ls покажет список в определенном порядке (обычно по имени файла в алфавитном порядке). Однако он также поддерживает сортировку по другим значениям.

Чтобы отсортировать вывод в обратном порядке, используйте флаг «-r».

Чтобы отсортировать файлы и каталоги по времени и дате создания/изменения, используйте вместо этого флаг «-t».

Мы также можем отсортировать вывод в алфавитном порядке по расширению записи. Для этого используйте флаг «-X».

Отображение скрытых файлов

По умолчанию команда ls не отображает скрытые файлы. Это файлы, которые начинаются с символа «.» в начале имени файла.

Чтобы показать скрытые файлы, используйте флаг «-a».

Дерево каталогов

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

Однако команда ls также может продемонстрировать дерево каталогов (хотя и не очень красивое). Чтобы распечатать древовидное представление, используйте флаг «-R».

Отображение номера инода

В Linux каждый файл имеет уникальное значение inode. Inode хранит метаданные для каждого файла в разделе. Эти данные хранятся в начале каждого раздела. В нем хранится вся информация о файле, кроме имени файла и самих данных.

Чтобы показать значение inode каждого файла и каталогов, используйте флаг «-i».

Отображение UID и GID

В Linux каждый файл имеет свой UID (уникальный идентификатор) и GID (идентификатор группы). Чтобы показать UID и GID файлов, используйте флаг «-n».

Удобочитаемый формат

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

Больше опций

Это лишь несколько параметров, которые поддерживает команда ls. Полный список поддерживаемых опций, а также подробные объяснения можно найти на странице руководства.

Последние мысли

В этой статье мы узнали о команде ls в Linux. Это один из основных инструментов, доступных во всех дистрибутивах Linux. В этой статье показано множество распространенных методов использования команды ls. После освоения его может быть удобнее использовать, чем браузер файлов с графическим интерфейсом пользователя.
Удачных вычислений!

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

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