{"id":28805793,"url":"https://github.com/rustbas/systemd-unit-example","last_synced_at":"2025-08-14T08:14:38.832Z","repository":{"id":298205543,"uuid":"985633451","full_name":"rustbas/systemd-unit-example","owner":"rustbas","description":"Пример службы systemd в рамках тестового задания","archived":false,"fork":false,"pushed_at":"2025-06-09T23:28:06.000Z","size":14,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-10T00:26:23.891Z","etag":null,"topics":["bash","linux","systemd"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rustbas.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-18T07:32:37.000Z","updated_at":"2025-06-09T23:28:10.000Z","dependencies_parsed_at":"2025-06-10T00:26:46.119Z","dependency_job_id":"b38366be-d4f6-4563-bc2e-2b480fd1d418","html_url":"https://github.com/rustbas/systemd-unit-example","commit_stats":null,"previous_names":["rustbas/systemd-unit-example"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/rustbas/systemd-unit-example","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rustbas%2Fsystemd-unit-example","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rustbas%2Fsystemd-unit-example/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rustbas%2Fsystemd-unit-example/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rustbas%2Fsystemd-unit-example/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rustbas","download_url":"https://codeload.github.com/rustbas/systemd-unit-example/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rustbas%2Fsystemd-unit-example/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260531585,"owners_count":23023347,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bash","linux","systemd"],"created_at":"2025-06-18T10:06:12.940Z","updated_at":"2025-08-14T08:14:38.790Z","avatar_url":"https://github.com/rustbas.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Пример службы systemd \n\nВ репозитории реализован пример службы `systemd` в рамках тестового задания.\n\n## Принцип работы \n\n1. Служба мониторит заданный процесс (см. \"Установка службы\").\n2. Если процесс запущен, отправляется запрос по заданной конечной точке. Если\n   точка не доступна, то пишет в лог.\n3. Если процесс был перезапущен, пишет об этом в лог.\n4. Если процесса нет, то пишет в лог.\n\n## Скрипт\n\nСкрипт отправляет запрос со следующими данными:\n\n- `name` -- имя процесса\n- `PID` -- PID процесса\n- `date` -- время выполнения скрипта в формате `YYYY-mm-ddTHH:MM:SS`\n\nДля однократного запуска:\n\n```console\nfoo@bar:~$ ./monitoring -e [ENDPOINT] -p [PROCESS_NAME]\n```\n\n- `[PROCESS_NAME]` -- имя процесса, который нужно мониторить (по умол. `test`)\n- `[ENDPOINT]` -- конечная точка, куда нужно стучаться в случае запущенного процесса (по умол. `https://test.com/monitoring/test/api`)\n\n## Установка службы\n\nДля установки необходимы права администратора.\n\n```console\nfoo@bar:~$ sudo ./install.sh -e [ENDPOINT] -p [PROCESS_NAME]\n```\n\n- `[PROCESS_NAME]` -- имя процесса, который нужно мониторить (по умол. `test`)\n- `[ENDPOINT]` -- конечная точка, куда нужно стучаться в случае запущенного процесса (по умол. `https://test.com/monitoring/test/api`)\n\n## Проверка\n\nДля проверки можно использовать сервис [PutsReq](https://putsreq.com/). Для этого нужно:\n\n1. Зайти на сайт;\n2. Нажать \"Create a PutsReq\";\n3. Вставить в поле \"Responce builder\" код ниже:\n```javascript\n// Build a response\nvar msg = 'Hello World';\n\nif(request.params.name) {\n  msg = 'Process: ' + request.params.name + '\\n';\n}\n\nif (request.params.pid) {\n    msg += 'PID: ' + request.params.pid + '\\n';\n}\n\nif (request.params.date) {\n    msg += 'Date: ' + request.params.date + '\\n';\n}\n\nresponse.body = msg;\n```\n4. Скопировать URL;\n5. Запустить скрипт командой:\n```console\nfoo@bar:~$ ./monitoring -e [URL] -p [PROCESS_NAME]\n```\n\nВ поле \"Responce\" должен появиться ответ, похожий на следующий:\n```\nProcess: emacs\nPID: 448899\nDate: 2025-05-19T21:59:55\n```\n\n# Примечания\n\n1. По умолчанию, служба отрабатывает раз в 20 секунд. Чтобы это\n   изменить, нужно поменять значение `OnUnitActiveSec` в файле\n   `monitoring.timer.template`.\n2. Установочный скрипт копирует исполняемый файл в директорию\n   `/usr/bin/`, которая должна быть включена в переменную `PATH`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frustbas%2Fsystemd-unit-example","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frustbas%2Fsystemd-unit-example","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frustbas%2Fsystemd-unit-example/lists"}