homework 3.3: add questions 7-9

This commit is contained in:
2022-02-21 10:10:35 +07:00
parent e545b8389a
commit 7809040991

View File

@@ -82,12 +82,41 @@ PS. На виртуальной машине не было установлен
7. Чем отличается последовательность команд через `;` и через `&&` в bash? 7. Чем отличается последовательность команд через `;` и через `&&` в bash?
Есть ли смысл использовать в bash `&&`, если применить `set -e`? Есть ли смысл использовать в 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` и почему его хорошо было бы использовать в сценариях? 8. Из каких опций состоит режим bash `set -euxo pipefail` и почему его хорошо было бы использовать в сценариях?
// todo add answer Параметр `-e` уже был рассмотрен в предыдущем вопросе.
`-u` - пишет ошибку в stderr, когда скрипт пытается обратиться к несуществующей переменной, но при этом не останавливает его работу.
Если запущен интерактивный режим, то его работа никогда не прерывается.
`-x` - пишет в stderr трейс (последовательность выполнения системных вызовов) для каждой команды перед её выполнением.
`-o` - устанавливает настройку работы последовательности команд. В данном случае значение `pipefail` говорит о том,
что статус работы всей последовательности будет значение последней команды с ненулевым кодом выхода или 0, если все команды выполнились успешно.
9. Используя `-o stat` для `ps`, определите, какой наиболее часто встречающийся статус у процессов в системе. 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`).