Действительно ли безопасно использовать сценарий удара для создания демона?

Попробуйте опции - noprofile и - rcfile file_name, где file_name является файлом конфигурации, Вы хотите чтение, например:

bash --noprofile --rcfile ~/.bash_profile

Хорошо... кому-то не нравился этот ответ, но это, кажется, точно, что было желаемо:

--noprofile причины все нормальные емкостно-резистивные файлы, которые не будут считаны.
--rcfile <some file> заставляет указанный файл быть считанным вместо этого. Это может, конечно, быть .bash_profile пользователя согласно просьбе.

6
15.10.2014, 15:17
3 ответа

Многие демоны запускаются с использованием bash в качестве языка сценариев. У вас не будет проблем с его использованием.

7
27.01.2020, 20:23

Как правило, довольно сложно создать демона в bash (или shell-script вообще). Некоторые проблемы, такие как фоновая вилка, переадресация сообщений об ошибках или обработка сигналов, нелегко решить.

Для конкретной проблемы, которую вы описываете, уже есть некоторые (свободные) программы, делающие автоматическое соединение ssh с respawn.

Для этой цели я использую autossh . Оно упаковано в Debian и работает отлично.

3
27.01.2020, 20:23

Это вполне безопасно, но может быть менее чем полезным, если только bash не в состоянии справиться с очисткой. Если его по какой-либо причине убьют, скрипт должен быть способен сам выполнить , чтобы при необходимости обновить свое состояние - вы, наверное, не захотите просто сделать:

while :

...например. Это довольно быстро устаревает. Вместо этого можно сделать что-то вроде:

trap '' HUP EXIT
set_state() { echo stuff="'$(otherstuff)'"... ; }
chk_interval() { wait for something... ; }
exec_me() { exec env - $(set_state) "$0" <in >out 2>alsoout & ; }
chk_interval
exec_me

Это также может зависеть от того, кто производит очистку. Самое простое - средство реализации демона - это:

init=path/to/executable/script

...в командной строке ядра для особенно одноразовых установок. Там, где относительное / выведено здесь, это initramfs /.

1
27.01.2020, 20:23

Теги

Похожие вопросы