вкладений шелл має вийти з кодом 1, через що має спрацювати вторий printf, той, що в зовнішньому шеллі
subshell буде з кодом 1 у прикладах якщо він останній у списку, бо «part of any command executed in a && or || list except the command following...
Валентине, дякую за детальне зауваження. Перечитав свої відповіді й бачу, що помилково змішав два незалежні механізми.
Ви маєте рацію: системний виклик «sync()» і запис змінених даних із кешу на диск не мають стосунку до описаного інциденту.
Еее ви тут щось дуже нове почали розповідати. До чого тут взагалі sync()? У вас один фізичний диск на декілька хостів з паралельним доступом? Або ви вимикаєте живлення компьютера при перезапуску сервіса? Здається, ні.
Ви не туди дивитесь. У прикладі
(set -e; false; printf 'UNCHANGED\n') || printf 'FAILED\n'вкладений шелл має вийти з кодом 1 одразу виконавши false, через що має спрацювати вторий printf, той, що в зовнішньому шеллі.
Ви цитуєте мануал, але це відповідь на інше питання. Задокументована поведінка Bash не скасовує того факту, що системний виклик sync каже «успіх», коли дані ще не на диску. Помилки немає — тому Bash і не спрацьовує.
а що дивного якщо в мануалі прописано bash(1)
-e Exit immediately if ... The shell does not exit if the command that fails is ... part of any command executed in a && or || list ...
типичная поделка быдлокодеров, элементарное отсутсвие сканера уязвимостей и на открытые пароли, поэтому я и не регаю дисконтные карты, жлобская контора — куча тупейших дыр, зашить пароль от прода в апк :DDD
1. Перед переїздом краще зменшити TTL записів NS на щось мале (наприклад, 1800). У більшости випадків там за замовчуванням 86400 (1 доба), при проблемах це забагато. Після стабілізації його краще вернути назад.
2.
поки це питання не буде розв’язано на державному рівні Нещодавно в сусідній темі спілкувалися про це, і часу в них до 1 грудня 2026 року, аби це все запустити. Сподіваюся хоч в цей раз вийде нормально і в строк зроблять, а не як завжди :/
Коментарі