Без скрипта не выловишь и рыбку из пруда
你好! Познакомился вчера на созвоне с китайцем, зовут его что-то вроде АнХуй. Смешной персонаж. Что-то мне 40 минут втирал на сломанном английском. Я ни слова не понял, но уверено махал головой как обезьяна на бананы.🅰️
По итогу встречи я выучил слова «Нихао» и «Херанука», а он всяко выучил — «ты, заебал» и «пиздец». Вот так и работаем. Айти объединяет.
Ну чо, поехали двигать пингвинов
Сегодня изучаем —
Эта такая штука… короче с помощью нее можно запускать команды и скрипты в новых сеансах и группах процессов. Скрипт запущенный через
Это гарантирует, что если родительский процесс получит сигнал SIGHUP, то запущенный скрипт через
Пишем башник
✔️ Скрипт будет нихуя не делать 200 секунд.
Запускаем:
Сразу видим, что оболочка продолжила работать в интерактивном режиме. Можно вводить команды и продолжать работу. А что со скриптом
Это скрипт запущен через
Видишь, он не является частью процессов bash, а работает самостоятельно, в общем дереве процессов. Запущенный скрипт не привязан к текущему терминалу.
А это скрипт
Видим цепочку, скрипт работает в текущей оболочке bash. Если закрыть оболочку, то и скрипт прекратит свою работу.
Давай сравним setsid и nohup
Если запустить так:
Наблюдаем такую картину:
Пишем
Процесс отделился от закрытой оболочки и попал в корень всех процессов. В данный момент он продолжает работу.
Теперь запускаем
А тут сразу процесс отделился от оболочки и стал корневым. Даже если написать
Хм. Не велика разница. Но она все же есть. Команда
Изучай.
tags: #bash #linux
@BАSHDАYS | BАSHDАYS.CОM
你好! Познакомился вчера на созвоне с китайцем, зовут его что-то вроде АнХуй. Смешной персонаж. Что-то мне 40 минут втирал на сломанном английском. Я ни слова не понял, но уверено махал головой как обезьяна на бананы.
По итогу встречи я выучил слова «Нихао» и «Херанука», а он всяко выучил — «ты, заебал» и «пиздец». Вот так и работаем. Айти объединяет.
Ну чо, поехали двигать пингвинов
Сегодня изучаем —
setsid
Эта такая штука… короче с помощью нее можно запускать команды и скрипты в новых сеансах и группах процессов. Скрипт запущенный через
setsid
будет независим от родительского процесса.Это гарантирует, что если родительский процесс получит сигнал SIGHUP, то запущенный скрипт через
setsid
продолжит работу. Nohup? Почти.. Поехали в практику.Пишем башник
bashdays.sh
#!/bin/bash
echo "Starting..."
sleep 200
echo "Finished..."
Запускаем:
setsid ./bashdays.sh
Сразу видим, что оболочка продолжила работать в интерактивном режиме. Можно вводить команды и продолжать работу. А что со скриптом
bashdays.sh
? Давай запустим pstree и визуально глянем.Это скрипт запущен через
setsid
├─sshd─bash
├─sshd─bash─pstree
└─sshd─sshd
├─bashdays.sh─sleep
Видишь, он не является частью процессов bash, а работает самостоятельно, в общем дереве процессов. Запущенный скрипт не привязан к текущему терминалу.
А это скрипт
bashdays.sh
запущен напрямую, без setsid
├─sshd─bash
├─sshd─bash─bashdays.sh─sleep
Видим цепочку, скрипт работает в текущей оболочке bash. Если закрыть оболочку, то и скрипт прекратит свою работу.
Давай сравним setsid и nohup
Если запустить так:
nohup ./bashdays.sh &
Наблюдаем такую картину:
├─sshd─┬─sshd─bash─pstree
├─sshd─bash─bashdays.sh─sleep
Пишем
exit
и видим уже такое:├─sshd─sshd─bash─pstree
├─bashdays.sh─sleep
Процесс отделился от закрытой оболочки и попал в корень всех процессов. В данный момент он продолжает работу.
Теперь запускаем
setsid ./bashdays.sh
├─sshd─┬─sshd───bash───pstree
└─sshd───bash
├─bashdays.sh─sleep
А тут сразу процесс отделился от оболочки и стал корневым. Даже если написать
exit
и закрыть терминал, sleep
продолжит работу.Хм. Не велика разница. Но она все же есть. Команда
setsid
более прямой способ создания нового сеанса, тогда как nohup
просто игнорирует сигнал SIGHUP.Изучай.
tags: #bash #linux
@BАSHDАYS | BАSHDАYS.CОM