В результате выполнения задания вы:
- познакомитесь с инструментом strace, который помогает отслеживать системные вызовы процессов и является необходимым для отладки и расследований при возникновении ошибок в работе программ;
- рассмотрите различные режимы работы скриптов, настраиваемые командой set. Один и тот же код в скриптах в разных режимах работы ведёт себя по-разному.
- Убедитесь, что у вас установлен инструмент
strace
, выполнив командуstrace -V
для проверки версии. В Ubuntu 20.04 strace установлен, но в других дистрибутивах его может не быть в коплекте «из коробки». Обратитесь к документации дистрибутива, чтобы понять, как установить инструмент strace. - Убедитесь, что у вас установлен пакет
bpfcc-tools
, информация по установке по ссылке.
- Изучите документацию lsof —
man lsof
. Та же информация есть в сети. - Документация по режимам работы bash находится в
help set
или в сети.
-
Какой системный вызов делает команда
cd
?В прошлом ДЗ вы выяснили, что
cd
не является самостоятельной программой. Этоshell builtin
, поэтому запуститьstrace
непосредственно наcd
не получится. Вы можете запуститьstrace
на/bin/bash -c 'cd /tmp'
. В этом случае увидите полный список системных вызовов, которые делает самbash
при старте.Вам нужно найти тот единственный, который относится именно к
cd
. Обратите внимание, чтоstrace
выдаёт результат своей работы в поток stderr, а не в stdout. -
Попробуйте использовать команду
file
на объекты разных типов в файловой системе. Например:vagrant@netology1:~$ file /dev/tty /dev/tty: character special (5/0) vagrant@netology1:~$ file /dev/sda /dev/sda: block special (8/0) vagrant@netology1:~$ file /bin/bash /bin/bash: ELF 64-bit LSB shared object, x86-64
Используя
strace
, выясните, где находится база данныхfile
, на основании которой она делает свои догадки. -
Предположим, приложение пишет лог в текстовый файл. Этот файл оказался удалён (deleted в lsof), но сказать сигналом приложению переоткрыть файлы или просто перезапустить приложение возможности нет. Так как приложение продолжает писать в удалённый файл, место на диске постепенно заканчивается. Основываясь на знаниях о перенаправлении потоков, предложите способ обнуления открытого удалённого файла, чтобы освободить место на файловой системе.
-
Занимают ли зомби-процессы ресурсы в ОС (CPU, RAM, IO)?
-
В IO Visor BCC есть утилита
opensnoop
:root@vagrant:~# dpkg -L bpfcc-tools | grep sbin/opensnoop /usr/sbin/opensnoop-bpfcc
На какие файлы вы увидели вызовы группы
open
за первую секунду работы утилиты? Воспользуйтесь пакетомbpfcc-tools
для Ubuntu 20.04. Дополнительные сведения по установке по ссылке. -
Какой системный вызов использует
uname -a
? Приведите цитату из man по этому системному вызову, где описывается альтернативное местоположение в/proc
и где можно узнать версию ядра и релиз ОС. -
Чем отличается последовательность команд через
;
и через&&
в bash? Например:root@netology1:~# test -d /tmp/some_dir; echo Hi Hi root@netology1:~# test -d /tmp/some_dir && echo Hi root@netology1:~#
Есть ли смысл использовать в bash
&&
, если применитьset -e
? -
Из каких опций состоит режим bash
set -euxo pipefail
, и почему его хорошо было бы использовать в сценариях? -
Используя
-o stat
дляps
, определите, какой наиболее часто встречающийся статус у процессов в системе. Вman ps
изучите (/PROCESS STATE CODES
), что значат дополнительные к основной заглавной букве статуса процессов. Его можно не учитывать при расчёте (считать S, Ss или Ssl равнозначными).
В личном кабинете отправлена ссылка на .md-файл в вашем репозитории.
Зачёт:
- выполнены все задания;
- ответы даны в развёрнутой форме;
- приложены соответствующие скриншоты и файлы проекта;
- в выполненных заданиях нет противоречий и нарушения логики.
На доработку:
- задание выполнено частично или не выполнено вообще;
- в логике выполнения заданий есть противоречия и существенные недостатки.