LINUX.ORG.RU

История изменений

Исправление SpaceRanger, (текущая версия) :

import subprocess
import os
import sys



def tail_forever(file, pat):
    os.chdir(sys.path[0])
    with open("log", "a+") as log:
        try:
            p = subprocess.Popen(["tail", "-F", file], stdout=subprocess.PIPE)
            while 1:
                line = p.stdout.readline().decode()
                if pat in line:
                    log.write(line)
                    log.flush()
                elif not line:
                    break
        except KeyboardInterrupt:
            print("KB INT")
            log.write("INTERRUPTED FROM KB: ")
            print("AFTER KB")
            log.flush()
        except Exception:
            log.write("UNEXPECTED ERROR: ", sys.exc_info()[0])
            log.flush()
        finally:
            log.close()
            sys.exit("EXIT")


if __name__ == "__main__":
    tail_forever(sys.argv[1], sys.argv[2])

Подумал, что наверное не стоит открывать файл, за которым идёт наблюдение, ибо tail и так его открывает. ПОнаблюдаю. МОжет быть в этом проблема

Исправление SpaceRanger, :

import subprocess
import os
import sys



def tail_forever(file, pat):
    os.chdir(sys.path[0])
    with open("log", "a+") as log:
        try:
            p = subprocess.Popen(["tail", "-F", file], stdout=subprocess.PIPE)
            while 1:
                line = p.stdout.readline().decode()
                if pat in line:
                    # print(line.strip())
                    log.write(line)
                    log.flush()
                    # print(f"[{datetime.datetime.now()}]  {line.decode().strip()}")
                elif not line:
                    break
        except KeyboardInterrupt:
            print("KB INT")
            log.write("INTERRUPTED FROM KB: ")
            print("AFTER KB")
            log.flush()
        except Exception:
            log.write("UNEXPECTED ERROR: ", sys.exc_info()[0])
            log.flush()
        finally:
            log.close()
            sys.exit("EXIT")


if __name__ == "__main__":
    tail_forever(sys.argv[1], sys.argv[2])

Подумал, что наверное не стоит открывать файл, за которым идёт наблюдение, ибо tail и так его открывает. ПОнаблюдаю. МОжет быть в этом проблема

Исходная версия SpaceRanger, :

import subprocess
import os
import sys

pattern = "pugw_250"


def tail_forever(file, pat):
    os.chdir(sys.path[0])
    with open("log", "a+") as log:
        try:
            p = subprocess.Popen(["tail", "-F", file], stdout=subprocess.PIPE)
            while 1:
                line = p.stdout.readline().decode()
                if pat in line:
                    # print(line.strip())
                    log.write(line)
                    log.flush()
                    # print(f"[{datetime.datetime.now()}]  {line.decode().strip()}")
                elif not line:
                    break
        except KeyboardInterrupt:
            print("KB INT")
            log.write("INTERRUPTED FROM KB: ")
            print("AFTER KB")
            log.flush()
        except Exception:
            log.write("UNEXPECTED ERROR: ", sys.exc_info()[0])
            log.flush()
        finally:
            log.close()
            sys.exit("EXIT")


if __name__ == "__main__":
    tail_forever(sys.argv[1], sys.argv[2])

Подумал, что наверное не стоит открывать файл, за которым идёт наблюдение, ибо tail и так его открывает. ПОнаблюдаю. МОжет быть в этом проблема