Базовые команды Linux
pwd
Вывести текущую (рабочую) директорию.
[user@testhost ~]$ pwd
/home/userdate
Вывести текущую дату и время системы.
[user@testhost ~]$ date
Mon Dec 16 13:37:07 UTC 2019
[user@testhost ~]$ date +%s
1576503430w
Данная команда показывает, кто залогинен в системе. Помимо этого также на экран выводится uptime и LA (load average).
[user@testhost ~]$ w
05:47:17 up 377 days, 17:57, 1 user, load average: 0,00, 0,01, 0,05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
user pts/0 32.175.94.241 05:47 2.00s 0.01s 0.00s wls
Вывести содержимое директории. Если не передать путь, то выведется содержимое текущей директории.
Лично я часто использую опции
l
(long listing format — вывод в колонку с дополнительной информацией о файлах),
t
(сортировка по времени изменения файла/директории) и
r
(обратная сортировка — в сочетании с
t
наиболее «свежие» файлы будут внизу):
Есть 2 специальных имени директории: "
.
" и "
..
". Первое означает текущую директорию, второе — родительскую директорию. Их бывает удобно использовать в различных командах, в частности,
ls
:
Также есть полезная опция для вывода скрытых файлов (начинаются на "
.
") —
a
:
И еще можно использовать опцию
h
— вывод в human readable формате (обратите внимание на размеры файлов):
cd
Изменить текущую директорию.
Если не передавать имя директории в качестве аргумента, будет использоваться переменная окружения
$HOME
, то есть домашняя директория. Также может быть удобно использовать `
~
` — специальный символ, означающий
$HOME
:
mkdir
Создать директорию.
Иногда нужно создать определенную структуру директорий: например, директорию в директории, которой не существует. Чтобы не вводить несколько раз подряд
mkdir
, можно использовать опцию
p
— она позволяет создать все недостающие директории в иерархии. Также с этой опцией
mkdir
не вернет ошибку, если директория существует.
rm
Удалить файл.
Опция
r
позволяет рекурсивно удалять директории со всем их содержимым, опция
f
позволяет игнорировать ошибки при удалении (например, о несуществующем файле). Эти опции позволяют, грубо говоря, гарантированно удалить всю иерархию файлов и директорий (если на это есть права у пользователя), поэтому, их нужно использовать с осторожностью (классический пример-шутка — "
rm -rf /
", при определенных обстоятельствах удалит вам если не всю систему, то очень много важных для её работоспособности файлов).
cp
Копировать файл или директорию.
У этой команды также есть опции
r
и
f
, их можно использовать, чтобы гарантированно скопировать иерархию директорий и папок в другое место.
mv
Переместить или переименовать файл или директорию.
cat
Вывести содержимое файла (или файлов).
Также стоит обратить внимание на команды
head
(вывести
n
первых строк или байт файла) и
tail
(о ней — далее).
tail
Вывести
n
последних строк или байт файла.
Очень полезной является опция
f
— она позволяет выводить новые данные в файле в реальном времени.
less
Иногда текстовый файл слишком большой, и неудобно выводить его командой
cat
. Тогда можно открыть его с помощью команды
less
: файл будет выводиться по частям, доступна навигация по этим частям, поиск и прочий простой функционал.
Также может оказаться удобным вариант использования
less
с конвейером (
pipe
):
ps
Вывести список процессов.
Я сам обычно использую BSD опции "
aux
" — вывести все процессы в системе (так как процессов может быть много, я вывел только первые 5 из них, использовав конвейер (
pipe
) и команду
head
):
Многие также используют BSD опции "
axjf
", что позволяет вывести дерево процессов (здесь я убрал часть вывода для демонстрации):
У этой команды много различных опций, так что при активном использовании рекомендую ознакомиться с документацией. Для большинства же случаев хватит просто знать "
ps aux
".
kill
Послать сигнал процессу. По умолчанию посылается сигнал
SIGTERM
, который завершает процесс.
Так как процесс может иметь обработчики сигналов,
kill
не всегда приводит к ожидаемому результату — моментальному завершению процесса. Чтобы «убить» процесс наверняка, нужно послать процессу сигнал
SIGKILL
. Однако это может привести к потере данных (например, если процесс перед завершением должен сохранить какую-то информацию на диск), так что нужно пользоваться такой командой осторожно. Номер сигнала
SIGKILL
— 9, поэтому короткий вариант команды выглядит так:
Помимо упомянутых
SIGTERM
и
SIGKILL
существует еще множество различных сигналов, их список можно легко найти в интернете. И не забывайте, что сигналы
SIGKILL
и
SIGSTOP
не могут быть перехвачены или проигнорированы.
ping
Послать хосту ICMP пакет
ECHO_REQUEST
.
По умолчанию
ping
работает, пока его не завершить вручную. Поэтому может быть полезна опция
c
— количество пакетов, после отправки которых
ping
завершится самостоятельно. Ещё одна опция, которую я иногда использую —
i
, интервал между посылками пакетов.
ssh
OpenSSH SSH клиент, позволяет подключаться к удаленному хосту.
Есть много нюансов в использовании SSH, также этот клиент обладает большим количеством возможностей, поэтому при желании (или необходимости) можно почитать про это
.
scp
Копировать файлы между хостами (для этого используется
ssh
).
rsync
Также для синхронизации директорий между хостами можно использовать
rsync
(
a
— archive mode, позволяет скопировать полностью всё содержимое директории «как есть»,
v
— вывод на консоль дополнительной информации):
echo
Вывести на экран строку текста.
Здесь заслуживают внимания опции
n
— не дополнять строку переносом строки в конце, и
e
— включить интерпретацию экранирования с помощью "\".
Также с помощью этой команды можно выводить значения переменных. Например, в Linux exit code последней завершенной команды хранится в специальной переменной
$?
, и таким образом можно узнать, какая именно ошибка произошла в последнем запущенном приложении:
telnet
Клиент для протокола TELNET. Используется для коммуникации с другим хостом.
Если нужно использовать протокол TLS (напомню, что SSL давно устарел), то
telnet
для этих целей не подойдёт. Зато подойдёт клиент
openssl
:
Пример использования openssl с выводом ответа на GET запрос
Решение типовых задач в Linux
Изменить владельца файла
Изменить владельца файла или директории можно с помощью команды
chown
:
В параметр этой команде нужно отдать нового владельца и группу (опционально), разделенных двоеточием. Также при изменении владельца директории может быть полезна опция
R
— тогда владельцы изменятся и у всего содержимого директории.
Изменить права доступа файла
Эта задача решается с помощью команды
chmod
. В качестве примера приведу установку прав «владельцу разрешено чтение, запись и исполнение, группе разрешено чтение и запись, всем остальным — ничего»:
Первая 7 (это 0b111 в битовом представлении) в параметре означает «все права для владельца», вторая 6 (это 0b110 в битовом представлении) — «чтение и запись», ну и 0 — это ничего для остальных. Битовая маска состоит из трёх битов: самый младший («правый») бит отвечает за исполнение, следующий за ним («средний») — за запись, и самый старший («левый») — за чтение.
Также можно выставлять права с помощью специальных символов (
мнемонический синтаксис
). Например, в следующем примере сначала убираются права на исполнение для текущего пользователя, а затем возвращаются обратно:
У этой команды есть много вариантов использования, поэтому советую прочитать про неё подробнее (особенно про мнемонический синтаксис, например,
).
Вывести содержимое бинарного файла
Это можно сделать с помощью утилиты
hexdump
. Ниже приведены примеры её использования.
С помощью этой утилиты можно вывести данные и в других форматах, однако наиболее часто могут пригодиться именно такие варианты её использования.
Искать файлы
Найти файл по части имени в дереве каталогов можно с помощью команды
find
:
Также доступны другие опции и фильтры поиска. Например, так можно найти файлы в папке
test
, созданные более 5 дней назад:
Искать текст в файлах
Справиться с этой задачей поможет команда
grep
. У неё есть множество вариантов использования, здесь в качестве примера указан самый простой.
Один из популярных способов использования команды
grep
— использование её в конвейере (
pipe
):
Опция
v
позволяет сделать эффект
grep
'а обратным — будут выводиться только строки, не содержащие паттерн, переданный в
grep
.
Смотреть установленные пакеты
Универсальной команды нет, потому что всё зависит от дистрибутива Linux и используемого пакетного менеджера. Скорее всего вам поможет одна из следующих команд:
Посмотреть, сколько места занимает дерево директорий
Один из вариантов использования команды
du
:
Можно менять значение параметра
d
, чтобы получать более подробную информацию о дереве директорий. Также можно использовать команду в комбинации с
sort
:
Опция
h
у команды
sort
позволяет сортировать размеры, записанные в human readable формате (например, 1K, 2G), опция
r
позволяет отсортировать данные в обратном порядке.
«Найти и заменить» в файле, в файлах в директории
Данная операция выполняется с помощью утилиты
sed
(без флага
g
в конце заменится только первое вхождение «old-text» в строке):
Можно использовать её для нескольких файлов сразу:
Вывести колонку из вывода
Справиться с этой задачей поможет
awk
. В данном примере выводится вторая колонка вывода команды `
ps ux
`:
При этом надо иметь ввиду, что
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:
Last updated
Was this helpful?