mirror of
https://github.com/Dannecron/netology-devops.git
synced 2025-12-25 15:22:37 +03:00
homework 3.3: add questions 7-9
This commit is contained in:
@@ -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`).
|
||||
|
||||
Reference in New Issue
Block a user