From 7809040991882e8fd0ce82326c4cb987511dbecb Mon Sep 17 00:00:00 2001 From: dannc Date: Mon, 21 Feb 2022 10:10:35 +0700 Subject: [PATCH] homework 3.3: add questions 7-9 --- src/homework/3.3/readme.md | 35 ++++++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) diff --git a/src/homework/3.3/readme.md b/src/homework/3.3/readme.md index 3130a97..1c5b4dd 100644 --- a/src/homework/3.3/readme.md +++ b/src/homework/3.3/readme.md @@ -82,12 +82,41 @@ PS. На виртуальной машине не было установлен 7. Чем отличается последовательность команд через `;` и через `&&` в bash? Есть ли смысл использовать в bash `&&`, если применить `set -e`? -// todo add answer +При использовании `&&` будет учитываться код выхода предыдущей выполненой команды. Если он не 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, +> 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. + +То есть, если данная команда будет выполнена в связке с другими командами, то она не сможет прервать выполнение последовательности. +Таким образом, для данной команды использование `&&` и `;` будет иметь одинаковое поведение. 8. Из каких опций состоит режим bash `set -euxo pipefail` и почему его хорошо было бы использовать в сценариях? -// todo add answer +Параметр `-e` уже был рассмотрен в предыдущем вопросе. + +`-u` - пишет ошибку в stderr, когда скрипт пытается обратиться к несуществующей переменной, но при этом не останавливает его работу. +Если запущен интерактивный режим, то его работа никогда не прерывается. + +`-x` - пишет в stderr трейс (последовательность выполнения системных вызовов) для каждой команды перед её выполнением. + +`-o` - устанавливает настройку работы последовательности команд. В данном случае значение `pipefail` говорит о том, +что статус работы всей последовательности будет значение последней команды с ненулевым кодом выхода или 0, если все команды выполнились успешно. 9. Используя `-o stat` для `ps`, определите, какой наиболее часто встречающийся статус у процессов в системе. -// todo add answer +Выполним данную команду на виртуальной машине +```shell +ps -o stat + +STAT +Ss +R+ +``` + +Таким образом, самым встречающимся статусом является `Ss`. Первая буква - это непосредственно статус (`S - interruptible sleep (waiting for an event to complete)`), +вторая - дополнительная информация (`s - is a session leader`).