Вопрос или проблема
В OpenSUSE 11.4 пакет sysvinit-tools
содержит бинарные файлы startproc
, killproc
и checkproc
, которые, согласно файлу /etc/init.d/skeleton
и документации OpenSUSE, должны использоваться в инициализационных скриптах типа Sys-V. В чем идея этих бинарных файлов? Разве нельзя достичь той же функциональности startproc
, killproc
и checkproc
с помощью nice
, sudo
, sleep
и других подобных инструментов?
Сначала определим конкретные программы: startproc
startproc: startproc и варинат LSB start_daemon проверяют все процессы указанного исполняемого файла и запускают его, если процессы не найдены. startproc не использует pid для поиска процесса, а полный путь к соответствующей программе, который используется для идентификации исполняемого файла.
killproc отправляет сигналы всем процессам, которые используют указанный исполняемый файл. Если имя сигнала не указано, отправляется сигнал SIGTERM. killproc не использует pid для отправки сигнала процессу, а полный путь к соответствующей программе, который используется для идентификации исполняемого файла.
checkproc проверяет запущенные процессы, которые используют указанный исполняемый файл. checkproc не использует pid для проверки процесса, а полный путь к соответствующей программе, который используется для идентификации исполняемого файла.
nice, sudo, sleep не имеют ничего общего с вышеуказанными программами.
Конечно, вы могли бы реализовать ту же логику, что и в kill/start/checkproc, на любом языке сценариев (например, bash) или другом компилируемом языке. Но цель этих программ — предоставить эту функциональность всем пользователям, которым это необходимо, чтобы им не пришлось заморачиваться с написанием/переписыванием одной и той же логики на разных дистрибутивах и различных ОС.
Ответ или решение
Использование утилит startproc
, killproc
и checkproc
в сценариях инициализации Sys-V в OpenSUSE предоставляется в пакете sysvinit-tools
. Эти инструменты предназначены для упрощения управления процессами, и их применение имеет ряд значительных преимуществ.
Определения утилит
-
startproc: Эта утилита проверяет, запущены ли процессы указанного исполняемого файла. Если процессы не найдены,
startproc
запускает указанный исполняемый файл. Он делает это, используя полный путь к программе для идентификации, а не pid процесса. -
killproc: Утилита отправляет сигналы всем процессам, связанным с указанным исполняемым файлом. По умолчанию используется сигнал SIGTERM, если не указано иное. Как и в случае с
startproc
, для идентификации процесса используется полный путь к исполняемому файлу. -
checkproc: С помощью этой утилиты можно проверить, запущены ли процессы, связанные с конкретным исполняемым файлом. В отличие от других методов,
checkproc
также использует полный путь для проверки.
Преимущества использования
Использование этих утилит в сценариях Sys-V обеспечивает ряд преимуществ по сравнению с использованием стандартных утилит, таких как nice
, sudo
, sleep
и т.д.:
-
Стандартизация: Утилиты
startproc
,killproc
иcheckproc
обеспечивают единый интерфейс для управления процессами в разных дистрибутивах и операционных системах. Это позволяет избежать дублирования кода и различных реализаций логики, которая управляет процессами. -
Упрощение разработки: Разработчики и администраторы могут не беспокоиться о реализации проверки наличия процессов или их управления. Они могут полагаться на надежную и проверенную функциональность утилит из пакета
sysvinit-tools
. -
Безопасность и контроль: Утилиты предоставляют контролируемый способ управления процессами с ограничением прав доступа, что повышает безопасность. Каждый пользователь может использовать эти утилиты, не имея необходимости писать собственный скрипт, что снижает вероятность ошибок.
-
Эффективность: Эти утилиты оптимизированы для выполнения своей задачи. Это позволяет уменьшить затраты времени и ресурсов, необходимых для старта, завершения и проверки процессов.
Заключение
Хотя теоретически можно достичь аналогичной функциональности с использованием языков сценариев (таких как Bash) или других инструментариев, цели использования startproc
, killproc
и checkproc
более широки. Они не только обеспечивают реализацию необходимого функционала, но и упрощают жизнь разработчикам и системным администраторам, стандартизируя управляемые операции по всему спектру дистрибутивов Linux. В результате эти инструменты становятся важной частью управления системными сервисами в OpenSUSE и других дистрибутивах, основанных на Sys-V.