Написать многопоточный демон на bash
20 USDИтак, есть скрипт script1.php, который вызывается с параметрами: script1.php?id=1
Нужно написать демон под Centos7, который будет делать следующее:
1. Запускаем скрипт daemon.sh через ssh.
2. Демон запускает скрипт script3.php и получает в ответ такую строку: "1,5,147,2058" - т.е. набор номеров через запятую.
3. Демон создает столько потоков, сколько было номеров в той строке, и в каждом потоке запускает скрипт script1.php?id=1, где для параметра "id" подставляется очередной номер из этой последовательности.
Т.е. если от script3.php получена строка "1,5,147,2058", то будут запущены такие потоки:
script1.php?id=1
script1.php?id=5
script1.php?id=147
script1.php?id=2058
Номеров (а значит потоков) может быть и 1000 и 2000.
4. От каждого скрипта нужно дождаться ответ. Если скрипт завершился нормально, без ошибок, то ничего не делаем, а текстовый ответ скрипта (он написан для запуска в браузере) перенаправляем в пустоту. Если же запуск скрипта завершился ошибкой (503, "Server is temporarily unavailable" и т.д.), то дополнительно запускаем скрипт script2.php?id=1, где id - все тот же номер, который был использован для запуска скрипта script1.php
Что делает script2.php? Он просто логирует номера, которые завершились ошибкой сервера.
5. Итак, script1.php в текущем потоке выполнился (нормально или с ошибкой, неважно). Демон должен перезапустить его. И так он должен отслеживать все запущенные потоки, асинхронно (т.е. чтобы перезапустить скрипт в потоке, не нужно ждать когда завершаться скрипты в остальных потоках). И так бесконечно, до пункта 6.
6. Чтобы остановить демон, должна быть предусмотрена какая-то команда для терминала, или запуск какого-то второго скрипта daemon_stop.sh
7. Демон должен продолжать работу даже после закрытия терминала. А после открытия чтобы можно было продолжать наблюдать работу демона. Насколько я понимаю это делается через screen и ему подобные. Т.е. когда мы снова заходим на daemon.sh, то не запускаем его снова, а просто вновь видим его продолжающуюся работу.
8. Нужно придумать какой-то вывод в консоль, чтобы наблюдать за работой скрипта. Например такие показатели:
- количество запущенных потоков
- количество запусков скрипта script1.php по всем потокам за все время работы демона (должно накапливаться в какой-то переменной)
- в т.ч. количество положительных ответов по всем потокам за все время работы демона (должно накапливаться в какой-то переменной)
- в т.ч. количество аварийных завершений по всем потокам за все время работы демона (должно накапливаться в какой-то переменной)
Все 8 пунктов обязательны.
Очень желательно, чтобы демон был написан на bash. Или обоснуйте другие варианты.
Скрипты php будут находится в той же папке, что и daemon.sh. В скрипте должно быть предусмотрено автоопределение текущей папки и php-интерпретатора.
По срокам - чем быстрее, тем лучше.
Client's review of cooperation with Aleksey T.
Написать многопоточный демон на bashБыстро, четко, рекомендую
![]()
Freelancer's review of cooperation with client
Написать многопоточный демон на bashЧеткое ТЗ, быстрая проверка и оплата, рекомендую к сотрудничеству! 🙂
-
Winning proposal1 day20 USD
3381 213 0 Winning proposal1 day20 USDМожно написать на .Net core, более читабельный код будет
Current freelance projects in the category Desktop Apps
Account reconciliation tool with the bank, cards, and accountantTechnical Assignment: Tool for Reconciling Accounts with Bank, Cards, and AccountantGeneral Goal A local tool (script/small application in Python) is needed, which is manually run once every 1-2 months on my computer and performs reconciliation between: Invoices I issued to… Python, Desktop Apps ∙ 1 day 7 hours back ∙ 37 proposals |
Add pauses of 10-30 seconds between sending emails.Hello! I am looking for an experienced 1C / BAS (BAF) programmer to promptly resolve a technical issue with email distribution.Problem essence: We use the accounting program BAF (Business Automation Framework), version 2.0. Once a month, there is a need to send about 300 emails… Web Programming, Desktop Apps ∙ 6 days 23 hours back ∙ 10 proposals |
Reverse engineering of console utilities for querying SSD controllers (Flash ID)1. Purpose of the work Extraction of the application programming interface (API) for interaction with SSD/NVMe controllers from the provided set of console utilities (Phison, Silicon Motion, Realtek, Maxiotek, Marvell, JMicron, etc.). The result should be working code in C/C++… C & C++, Desktop Apps ∙ 7 days 10 hours back ∙ 6 proposals |