mirror of
https://github.com/Dannecron/netology-devops.git
synced 2025-12-25 23:32:37 +03:00
fix all homeworks in 03-sysadmin
This commit is contained in:
@@ -3,7 +3,9 @@
|
||||
|
||||
## Q/A
|
||||
|
||||
1. Какой системный вызов делает команда `cd`?
|
||||
### Задача 1
|
||||
|
||||
> Какой системный вызов делает команда `cd`?
|
||||
|
||||
Для удобства поиска перенаправим вывод команды `strace` в утилиту `less`
|
||||
|
||||
@@ -14,7 +16,9 @@ strace /bin/bash -c 'cd /tmp' 2>&1 | less
|
||||
Далее, найдём в трейсе упоминание директории `tmp`, указанной в команде. Таким образом, обнаружим, что команда `cd`
|
||||
делает системный вызов `chdir("/tmp")`.
|
||||
|
||||
2. Используя `strace` выясните, где находится база данных `file` на основании которой она делает свои догадки.
|
||||
### Задача 2
|
||||
|
||||
> Используя `strace` выясните, где находится база данных `file` на основании которой она делает свои догадки.
|
||||
|
||||
При использовании команды `file` на любом файле, `strace` выведет такую строку:
|
||||
|
||||
@@ -24,7 +28,9 @@ openat(AT_FDCWD, "/usr/share/misc/magic.mgc", O_RDONLY) = 3
|
||||
|
||||
Предположительно, `/usr/share/misc/magic.mgc` - это и есть база данных для команды `file`.
|
||||
|
||||
3. Предложите способ обнуления открытого удаленного файла (чтобы освободить место на файловой системе)
|
||||
### Задача 3
|
||||
|
||||
> Предложите способ обнуления открытого удаленного файла (чтобы освободить место на файловой системе)
|
||||
|
||||
Зная PID процесса и то, что каждый процесс пишет свои потоки в файлы в директории `/proc/<PID>/fd`.
|
||||
Таким образом, можно найти конкретный поток, который пишет в файл, вызвав команду
|
||||
@@ -48,12 +54,16 @@ lr-x------ 1 vagrant vagrant 64 Feb 16 03:25 3 -> /tmp/do_not_delete_me
|
||||
echo "" > /proc/1988/fd/3
|
||||
```
|
||||
|
||||
4. Занимают ли зомби-процессы какие-то ресурсы в ОС (CPU, RAM, IO)?
|
||||
### Задача 4
|
||||
|
||||
> Занимают ли зомби-процессы какие-то ресурсы в ОС (CPU, RAM, IO)?
|
||||
|
||||
Нет, zombie-процессы не используют никаких ресурсов операционной системы.
|
||||
Единственное, что они занимают - это идентификатор процесса.
|
||||
|
||||
5. На какие файлы вы увидели вызовы группы `open` за первую секунду работы утилиты `opensnoop-bpfcc`?
|
||||
### Задача 5
|
||||
|
||||
> На какие файлы вы увидели вызовы группы `open` за первую секунду работы утилиты `opensnoop-bpfcc`?
|
||||
|
||||
За первую секунду работы утилиты был произведён следующий вывод:
|
||||
|
||||
@@ -68,8 +78,10 @@ PID COMM FD ERR PATH
|
||||
619 dbus-daemon 19 0 /var/lib/snapd/dbus-1/system-services/
|
||||
```
|
||||
|
||||
6. Какой системный вызов использует `uname -a`? Приведите цитату из man по этому системному вызову,
|
||||
где описывается альтернативное местоположение в /proc, где можно узнать версию ядра и релиз ОС.
|
||||
### Задача 5
|
||||
|
||||
> Какой системный вызов использует `uname -a`? Приведите цитату из man по этому системному вызову,
|
||||
> где описывается альтернативное местоположение в /proc, где можно узнать версию ядра и релиз ОС.
|
||||
|
||||
Утилита `uname` использует системный вызов `uname`, мануал к которому можно прочитать командой `man 2 uname`.
|
||||
|
||||
@@ -79,15 +91,17 @@ PID COMM FD ERR PATH
|
||||
PS. На виртуальной машине не было установленных мануалов для системных вызовов. Чтобы их установить,
|
||||
нужно выполнить команду `sudo apt install manpages-dev`.
|
||||
|
||||
7. Чем отличается последовательность команд через `;` и через `&&` в bash?
|
||||
Есть ли смысл использовать в bash `&&`, если применить `set -e`?
|
||||
### Задача 7
|
||||
|
||||
> Чем отличается последовательность команд через `;` и через `&&` в bash?
|
||||
> Есть ли смысл использовать в bash `&&`, если применить `set -e`?
|
||||
|
||||
При использовании `&&` будет учитываться код выхода предыдущей выполненой команды. Если он не 0, то выполнение последовательности будет прервано.
|
||||
В случае же `;` последовательность будет выполнена в любом случае.
|
||||
|
||||
В случае `set -e` параметр имеет следующее определение
|
||||
|
||||
>When this option is on, if a simple command fails for any of the reasons listed in Consequences of Shell Errors or returns an exit status value >0,
|
||||
> When this option is on, if a simple command fails for any of the reasons listed in Consequences of Shell Errors or returns an exit status value >0,
|
||||
> and is not part of the compound list following a while, until, or if keyword,
|
||||
> and is not a part of an AND or OR list,
|
||||
> and is not a pipeline preceded by the ! reserved word, then the shell shall immediately exit.
|
||||
@@ -95,7 +109,9 @@ PS. На виртуальной машине не было установлен
|
||||
То есть, если данная команда будет выполнена в связке с другими командами, то она не сможет прервать выполнение последовательности.
|
||||
Таким образом, для данной команды использование `&&` и `;` будет иметь одинаковое поведение.
|
||||
|
||||
8. Из каких опций состоит режим bash `set -euxo pipefail` и почему его хорошо было бы использовать в сценариях?
|
||||
### Задача 8
|
||||
|
||||
> Из каких опций состоит режим bash `set -euxo pipefail` и почему его хорошо было бы использовать в сценариях?
|
||||
|
||||
Параметр `-e` уже был рассмотрен в предыдущем вопросе.
|
||||
|
||||
@@ -107,7 +123,9 @@ PS. На виртуальной машине не было установлен
|
||||
`-o` - устанавливает настройку работы последовательности команд. В данном случае значение `pipefail` говорит о том,
|
||||
что статус работы всей последовательности будет значение последней команды с ненулевым кодом выхода или 0, если все команды выполнились успешно.
|
||||
|
||||
9. Используя `-o stat` для `ps`, определите, какой наиболее часто встречающийся статус у процессов в системе.
|
||||
### Задача 9
|
||||
|
||||
> Используя `-o stat` для `ps`, определите, какой наиболее часто встречающийся статус у процессов в системе.
|
||||
|
||||
Выполним данную команду на виртуальной машине
|
||||
```shell
|
||||
|
||||
Reference in New Issue
Block a user