В результате выполнения задания вы:
- познакомитесь с инструментом 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-файл в вашем репозитории.
Зачёт:
- выполнены все задания;
- ответы даны в развёрнутой форме;
- приложены соответствующие скриншоты и файлы проекта;
- в выполненных заданиях нет противоречий и нарушения логики.
На доработку:
- задание выполнено частично или не выполнено вообще;
- в логике выполнения заданий есть противоречия и существенные недостатки.