Intereting Posts
как смонтировать хранилище центров обработки данных на сервере, чтобы пользователь мог получить к нему доступ удаленно? Улимит неограниченное поведение поведения стека Почему gksu запрашивает у меня пароль root, а не мой пароль? Benchmark ssd on linux: как измерять то же, что и crystaldiskmark, в окнах Есть ли Linux-эквивалент супер-администратора Windows? Что делает Linux по-другому, что позволяет мне удалять / заменять файлы, в которых Windows будет жаловаться на файл, который в настоящее время используется? Поиск файлов старше x дней в системе с урезанным занятым ящиком Что означают буквы FTSR и E в Sendmail milter? Задача Cron за каждую минуту выходить из строя? Ограничить доступ пользователей в Linux процесс убийства bash по вызову Два сетевых интерфейса, пытающихся получить IP через DHCP Обратная связь при вводе паролей без раскрытия длины Смущает записи ExecStartPre в файле systemd unit Как я могу получить список попыток входа в систему с помощью журналаctctl?

обработка ошибок runuser

Мы используем runuser внутри некоторых наших сценариев развертывания. При просмотре сценариев мне интересно, как будет работать обработка ошибок, если какая-либо из команд в runuser выйдет из строя. Пытаясь решить это сам, я не придумал никаких окончательных решений, кроме как использовать && как таковую:

 #!/bin/bash -e echo "- next" # this is what we're currently doing, which appears to not handle errors runuser -l $USER -c "echo cmd2; ls non-existant-file; echo done"; echo " exit code $?" echo "- next2" # best solution I've come up with so far runuser -l $USER -c "echo cmd2 && ls non-existant-file && echo done"; echo " exit code $?" echo "- finish" 

Любые предложения по улучшению этой проблемы? Учитывая, что некоторые из отдельных команд внутри скрипта runuser могут быть довольно вовлечены (например, условные runuser и т. П.), Я надеюсь найти более элегантный / очевидный способ обработки любых ошибок.

Другая мысль – сделать что-то вроде этого:

 runuser -l $USER -c "echo cmd2 && ls non-existant-file && echo done" || exit 1