Telegram Group & Telegram Channel
🧠 DevOps-задача: неочевидное поведение `exec` в Bash

Вопрос: что произойдёт при выполнении следующего скрипта?


#!/bin/bash

echo "Start script"
exec sleep 10
echo "This will never be printed"


🔍 Варианты:
• a) Скрипт выведет обе строки и "заснёт"
• b) Скрипт выведет только первую строку
• c) Скрипт ничего не выведет
• d) Скрипт завершится с ошибкой

💡 Разбор:

Команда exec в Bash заменяет текущий процесс оболочки на указанную команду — в данном случае, sleep 10. Это значит:

• строка echo "Start script" выполнится
• строка exec sleep 10 заменит текущий процесс на sleep
• строка echo "This will never be printed" никогда не будет выполнена, потому что процесс уже заменён

Правильный ответ: b) Скрипт выведет только первую строку

📌 Вывод: exec — мощная, но коварная команда. Она не запускает процесс в фоне, а заменяет текущий, без возврата. Это может использоваться в:

• заменах PID 1 в контейнерах
• написании минималистичных init-оболочек
• утечках в long-running скриптах, если exec используется не по назначению

🛠️ Совет: если вы хотите просто запустить команду — не используйте exec, если только вы намеренно не хотите завершить текущий процесс оболочки.



tg-me.com/DevOPSitsec/1565
Create:
Last Update:

🧠 DevOps-задача: неочевидное поведение `exec` в Bash

Вопрос: что произойдёт при выполнении следующего скрипта?


#!/bin/bash

echo "Start script"
exec sleep 10
echo "This will never be printed"


🔍 Варианты:
• a) Скрипт выведет обе строки и "заснёт"
• b) Скрипт выведет только первую строку
• c) Скрипт ничего не выведет
• d) Скрипт завершится с ошибкой

💡 Разбор:

Команда exec в Bash заменяет текущий процесс оболочки на указанную команду — в данном случае, sleep 10. Это значит:

• строка echo "Start script" выполнится
• строка exec sleep 10 заменит текущий процесс на sleep
• строка echo "This will never be printed" никогда не будет выполнена, потому что процесс уже заменён

Правильный ответ: b) Скрипт выведет только первую строку

📌 Вывод: exec — мощная, но коварная команда. Она не запускает процесс в фоне, а заменяет текущий, без возврата. Это может использоваться в:

• заменах PID 1 в контейнерах
• написании минималистичных init-оболочек
• утечках в long-running скриптах, если exec используется не по назначению

🛠️ Совет: если вы хотите просто запустить команду — не используйте exec, если только вы намеренно не хотите завершить текущий процесс оболочки.

BY DevOps


Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283

Share with your friend now:
tg-me.com/DevOPSitsec/1565

View MORE
Open in Telegram


DevOps Telegram | DID YOU KNOW?

Date: |

How Does Bitcoin Mining Work?

Bitcoin mining is the process of adding new transactions to the Bitcoin blockchain. It’s a tough job. People who choose to mine Bitcoin use a process called proof of work, deploying computers in a race to solve mathematical puzzles that verify transactions.To entice miners to keep racing to solve the puzzles and support the overall system, the Bitcoin code rewards miners with new Bitcoins. “This is how new coins are created” and new transactions are added to the blockchain, says Okoro.

DevOps from us


Telegram DevOps
FROM USA