LINUX.ORG.RU

Проверка, что лог бежит

 


0

1

Добрый день!

Есть программа, в которой каждые 5 секунд появляется новая запись в логе. Требуется, чтобы была какая-то программа, которая анализировала размер этого файла, каждые 10 секунд, и если он не изменился с предыдущего, то перегрузить сервис.

Есть ли что то такое штатное? А то писать я пока не «мостак» такое и времени нету.

если про системд, то можно сделать systemd.path с PathChanged или PathModified который будет дергать скрипт.
в скрипте прописать:

  1. если файл /run/myscript.timestap существует и имеет давность больше десяти секунд то рестарт сервиса.
  2. touch /run/myscript.timestap
pfg ★★★★★ ()
#!/bin/bash

log_file=/var/log/service.log
delay=10  # seconds
service_name=gammu-smsd

while :; do
    (( $(date +%s) - $(stat -c %Y "$log_file") > delay )) && service "$service_name" restart
    sleep "$delay"
done

Для отладки можете перед командой service поставить echo - ... && echo service "$service_name" restart

spirit ★★★★★ ()
Ответ на: комментарий от spirit

Вот сделал на pyton, хотя его не знаю вообще.

Единственное не понимаю, как теперь в нём выполнить перезагрузку, по аналогии sysmtemctl restart gammu-smsd

#!/usr/bin/env python3.6
import os
from datetime import datetime
os.system(r' >/var/log/gammu-smsd')

filename = "/var/log/gammu-smsd"
statbuf = os.stat(filename)
print("Modification time: {}".format(statbuf.st_mtime))

ts = int(statbuf.st_mtime)
#value1=datetime.fromtimestamp(time.mktime(ts))

val1=datetime.fromtimestamp(ts)

print(datetime.fromtimestamp(ts).strftime('%Y-%m-%d %H:%M:%S'))

#print(value1)

import datetime,time
dt = datetime.datetime.now()
value =datetime.datetime.fromtimestamp(time.mktime(dt.timetuple())-14)
print(value.strftime('%Y-%m-%d %H:%M:%S'))

if val1<value :
    print(" Перегрузи сервис " )                                     
shtrih ()
Последнее исправление: shtrih (всего исправлений: 1)
Ответ на: комментарий от shtrih

И ещё один вопрос, как правильно записать в cron перезапуск sevice?

*/10 * * * * «Как записать перезапуск сервиса ниже?»

 cat /etc/systemd/gammu-smsd.service
[Unit]
Description=SMS daemon for Gammu
Documentation=man:gammu-smsd(1)
After=mysql.service postgresql.service
After=network.target
Wants=network-online.target
After=nerwork-online.target

[Service]
EnvironmentFile=-/etc/sysconfig/gammu-smsd
# Run daemon as root user
ExecStart=/usr/bin/gammu-smsd --pid=/var/run/gammu-smsd.pid --daemon
# Run daemon as non-root user (set user/group in /etc/sysconfig/gammu-smsd)
#ExecStart=/usr/bin/gammu-smsd --user=${GAMMU_USER} --group=${GAMMU_GROUP} --pid=/var/run/gammu-smsd.pid --daemon
ExecReload=/bin/kill -HUP $MAINPID
ExecStopPost=/bin/rm -f /var/run/gammu-smsd.pid
Type=forking
PIDFile=/var/run/gammu-smsd.pid
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target
shtrih ()