Как обеспечить завершение дочерних фоновых процессов при использовании `set -e`?

Обязательно проверьте /var/log/audit/audit.logна наличие предупреждений selinux. Он может предложить, какую политику включить.

В противном случае вы можете установить SELinux в разрешительный режим, а затем использовать вышеупомянутый файл журнала для создания пользовательской политики, охватывающей все потребности вашего приложения. Для этого установите SELinux в разрешающий режим, используйте все функции вашего кода, а затем используйте audit2allow для создания пользовательской политики.

Затем вы можете объединить и распространить файл политики с вашим кодом, чтобы SELinux разрешал все и только те специальные разрешения, которые необходимы вашему коду:

# generate a custom policy
grep "AVC" /var/log/audit/audit.log | audit2allow -M yourapp
# install that policy
semodule -i yourapp.pp 

Что бы вы ни делали, не приступайте к работе с выключенным SELinux!

Рекомендуем посмотреть это замечательное введение в SELinux:https://www.youtube.com/watch?v=_WOKRaM-HI4

1
09.03.2020, 20:30
2 ответа

Вот так:

#!/usr/bin/env bash

trap 'kill $(jobs -p)' ERR

set -e

while true; do echo "test"; sleep 1; done &

echo "done"
ueoa
0
28.04.2021, 23:21
#!/bin/bash
set -e
function cleanup()
{
    kill $!
}
trap cleanup ERR
while true; do echo "test"; sleep 1; done &
echo "done"
ueoa
-1
28.04.2021, 23:21

Теги

Похожие вопросы