Найти Π² Π”Π·Π΅Π½Π΅
Π£Ρ€ΠΎΠΊΠΈ Linux

πŸ”§ *ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° сигналов Π² Bash: ΠΊΠ°ΠΊ Π΄Π΅Π»Π°Ρ‚ΡŒ скрипты ΡƒΠΌΠ½Π΅Π΅ ΠΈ бСзопаснСС

πŸ”§ *ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° сигналов Π² Bash: ΠΊΠ°ΠΊ Π΄Π΅Π»Π°Ρ‚ΡŒ скрипты ΡƒΠΌΠ½Π΅Π΅ ΠΈ бСзопаснСС* ΠŸΡ€ΠΈΠ²Π΅Ρ‚, Π»ΡŽΠ±ΠΈΡ‚Π΅Π»ΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ! πŸš€ БСгодня расскаТу ΠΏΡ€ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Ρ‚Π΅Ρ… самых скрытых инструмСнтов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π΅Π»Π°ΡŽΡ‚ наши скрипты ΠΆΠΈΠ²Ρ‹ΠΌΠΈ ΠΈ ΠΎΡ‚Π·Ρ‹Π²Ρ‡ΠΈΠ²Ρ‹ΠΌΠΈ. Π’ ΠΌΠΈΡ€Π΅ Bash Π΅ΡΡ‚ΡŒ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ β€” ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° сигналов. Он позволяСт Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹Π΅ события ΠΈΠ»ΠΈ прСрывания, дСлая скрипты Π±ΠΎΠ»Π΅Π΅ устойчивыми. ΠŸΠΎΡ‡Π΅ΠΌΡƒ это Π²Π°ΠΆΠ½ΠΎ? ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚Π²ΠΎΠΉ скрипт управляСт Π²Π°ΠΆΠ½Ρ‹ΠΌ процСссом, Π° Ρ‚ΡƒΡ‚ Π²Π΄Ρ€ΡƒΠ³ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π΅Ρ‚ Π΅Π³ΠΎ Ctrl+C β€” ΠΈ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ происходит, Π΄Π°Π½Π½Ρ‹Π΅ слабо Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Ρ‹. А ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π°Ρ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° сигналов ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ, ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡ‚ΡŒ рСсурсы ΠΈΠ»ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ прогрСсс. Π’ΠΎΡ‚ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ: - ΠŸΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ SIGINT (ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅) - ΠžΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° SIGTERM (запрос Π½Π° Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅) - ΠžΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ SIGHUP (ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ°) РазбСрСмся Π½Π° простом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅: trap "echo 'ΠŸΡ€Π΅Ρ€Π²Π°Π½Π½ΠΎ! Π—Π°Π²Π΅Ρ€ΡˆΠ°ΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ'; exit" SIGINT SIGTERM while true; do sleep 1 echo "." done Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ скрипта, Π»ΡŽΠ±Ρ‹Π΅ сигналы прСрывания Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚

πŸ”§ *ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° сигналов Π² Bash: ΠΊΠ°ΠΊ Π΄Π΅Π»Π°Ρ‚ΡŒ скрипты ΡƒΠΌΠ½Π΅Π΅ ΠΈ бСзопаснСС*

ΠŸΡ€ΠΈΠ²Π΅Ρ‚, Π»ΡŽΠ±ΠΈΡ‚Π΅Π»ΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ! πŸš€

БСгодня расскаТу ΠΏΡ€ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Ρ‚Π΅Ρ… самых скрытых инструмСнтов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π΅Π»Π°ΡŽΡ‚ наши скрипты ΠΆΠΈΠ²Ρ‹ΠΌΠΈ ΠΈ ΠΎΡ‚Π·Ρ‹Π²Ρ‡ΠΈΠ²Ρ‹ΠΌΠΈ. Π’ ΠΌΠΈΡ€Π΅ Bash Π΅ΡΡ‚ΡŒ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ β€” ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° сигналов. Он позволяСт Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹Π΅ события ΠΈΠ»ΠΈ прСрывания, дСлая скрипты Π±ΠΎΠ»Π΅Π΅ устойчивыми.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ это Π²Π°ΠΆΠ½ΠΎ? ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚Π²ΠΎΠΉ скрипт управляСт Π²Π°ΠΆΠ½Ρ‹ΠΌ процСссом, Π° Ρ‚ΡƒΡ‚ Π²Π΄Ρ€ΡƒΠ³ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π΅Ρ‚ Π΅Π³ΠΎ Ctrl+C β€” ΠΈ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ происходит, Π΄Π°Π½Π½Ρ‹Π΅ слабо Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Ρ‹. А ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π°Ρ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° сигналов ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ, ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡ‚ΡŒ рСсурсы ΠΈΠ»ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ прогрСсс.

Π’ΠΎΡ‚ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ:

- ΠŸΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ SIGINT (ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅)

- ΠžΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° SIGTERM (запрос Π½Π° Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅)

- ΠžΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ SIGHUP (ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ°)

РазбСрСмся Π½Π° простом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅:

trap "echo 'ΠŸΡ€Π΅Ρ€Π²Π°Π½Π½ΠΎ! Π—Π°Π²Π΅Ρ€ΡˆΠ°ΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ'; exit" SIGINT SIGTERM

while true; do

sleep 1

echo "."

done

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ скрипта, Π»ΡŽΠ±Ρ‹Π΅ сигналы прСрывания Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½ΠΎΠ΅ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅.

Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎ, Π° ΠΊΠ°ΠΊ Ρ‚Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Π΅ΡˆΡŒ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ своих скриптов?

ΠŸΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°ΠΉΡΡ Π½Π° наш ΠΊΠ°Π½Π°Π» https://t.me/LinuxSkill, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ свСТиС Π»Π°ΠΉΡ„Ρ…Π°ΠΊΠΈ, Π° Π² Π±ΠΎΡ‚Π΅ https://t.me/gradeliftbot ΠΈΡ‰ΠΈ вакансии систСмных администраторов.