Задать вопрос
@Massacre_Rage

Почему скрипт не работает через systemctl?

Есть простенький скрипт на баше который через утилиту mtr отправляет 5 пакетов до 8.8.8.8 и выводит результат в файл, через 20 секунд процедура повторяется.

При ручном запуске скрипт работает.
При попытке запускать скрипт как systemd сервис файлы с результатом 0 размера.

#!/bin/bash

# Указываем IP-адрес назначения
DESTINATION="8.8.8.8"

# Количество пакетов
PACKETS=5

# Бесконечный цикл
while true; do
    # Генерация уникального имени файла
    OUTPUT_FILE="/home/mtr_results_$(date +%Y-%m-%d_%H:%M:%S).log"

    # Выполняем команду mtr и сохраняем результат в файл
    mtr -r -c $PACKETS $DESTINATION > "$OUTPUT_FILE"

    echo "Отчет сформирован и сохранен в файл $OUTPUT_FILE."

    # Пауза между итерациями
    sleep 20
done


[Unit]
Description=MTR Monitoring Service
After=network.target

[Service]
ExecStart=/home/mtr.sh

[Install]
WantedBy=multi-user.target


Права выдал chmod +x /home/mtr.sh

systemctl daemon-reload
systemctl enable mtr.service
systemctl start mtr.service
Прописал

[root@CENTOS7_TEST_MACHINE home]# systemctl status mtr
● mtr.service - MTR Monitoring Service
   Loaded: loaded (/etc/systemd/system/mtr.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2024-12-25 09:46:25 MSK; 12min ago
 Main PID: 1466 (mtr.sh)
   CGroup: /system.slice/mtr.service
           ├─1466 /bin/bash /home/mtr.sh
           └─2145 mtr -r -c 5 8.8.8.8

Dec 25 09:53:24 CENTOS7_TEST_MACHINE mtr.sh[1466]: Отчет сформирован и сохранен в файл /home/mtr_results_2024-12-25_09:53:12.log.
Dec 25 09:53:55 CENTOS7_TEST_MACHINE mtr.sh[1466]: Отчет сформирован и сохранен в файл /home/mtr_results_2024-12-25_09:53:44.log.
Dec 25 09:54:26 CENTOS7_TEST_MACHINE mtr.sh[1466]: Отчет сформирован и сохранен в файл /home/mtr_results_2024-12-25_09:54:15.log.
Dec 25 09:54:58 CENTOS7_TEST_MACHINE mtr.sh[1466]: Отчет сформирован и сохранен в файл /home/mtr_results_2024-12-25_09:54:46.log.
Dec 25 09:55:29 CENTOS7_TEST_MACHINE mtr.sh[1466]: Отчет сформирован и сохранен в файл /home/mtr_results_2024-12-25_09:55:18.log.
Dec 25 09:56:00 CENTOS7_TEST_MACHINE mtr.sh[1466]: Отчет сформирован и сохранен в файл /home/mtr_results_2024-12-25_09:55:49.log.
Dec 25 09:56:31 CENTOS7_TEST_MACHINE mtr.sh[1466]: Отчет сформирован и сохранен в файл /home/mtr_results_2024-12-25_09:56:20.log.
Dec 25 09:57:03 CENTOS7_TEST_MACHINE mtr.sh[1466]: Отчет сформирован и сохранен в файл /home/mtr_results_2024-12-25_09:56:51.log.
Dec 25 09:57:34 CENTOS7_TEST_MACHINE mtr.sh[1466]: Отчет сформирован и сохранен в файл /home/mtr_results_2024-12-25_09:57:23.log.
Dec 25 09:58:05 CENTOS7_TEST_MACHINE mtr.sh[1466]: Отчет сформирован и сохранен в файл /home/mtr_results_2024-12-25_09:57:54.log.


centos-release-7-9.2009.2.el7.centos.x86_64
  • Вопрос задан
  • 331 просмотр
Подписаться 4 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 1
@pfg21
ex-турист
системд не использует интерпретатор командной строки, потому запись ExecStart=/home/mtr.sh не правильна в корне. ты пытаешься исполнить баше-скрипт, а системд не подставляет баш в качестве дефолтного исполнителя.

говоря проще, первым параметром ExecStart должон быть бинарный исполняемый файл.
ExecStart=/bin/bash /home/mtr.sh
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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