Могу ли я использовать вывод из файла журнала, чтобы остановить сценарий bash, который сгенерировал этот журнал? - PullRequest
0 голосов
/ 19 апреля 2020

Отказ от ответственности: я довольно нуб, что касается cronjobs и bash сценариев. Любые предложения по улучшению процесса, упомянутые ниже, или мои скромные знания приветствуются; -)

Хорошо, я запускаю этот «основной» скрипт, основной задачей которого является получение определенного количества пакетов с сервера каждый 6 часов. В настоящее время это делается с помощью другого (вспомогательного) скрипта, который я написал для запуска в качестве cronjob. Если вам интересно, почему два скрипта, то это а) см. Отказ от ответственности выше и б) потому что я хотел, чтобы каждая строка выходных данных первого скрипта была помечена, и не знал, как поместить все это в crontab.

Есть еще один скрипт ;-), который убивает основной (вспомогательный останавливается в соответствии с настройками cron), если последний не может покончить с собой после выполнения своей работы, которая, как я сказал, извлекает определенный ( определяется пользователем в настройках основного скрипта) количество пакетов с сервера.

Теперь я хотел бы сделать следующее:

1) использовать определенную строку из файл журнала вспомогательного сценария для уничтожения основного сценария с помощью вспомогательного сценария уничтожения, о котором я говорил ранее, или каким-либо другим способом. Средства не важны, пока цель достигнута, цель состоит в том, чтобы убить основной скрипт, как только я получу необходимое количество пакетов с сервера (который записывается в журнал).

2) консолидировать весь процесс (возможно, по крайней мере, объединить оба вспомогательных), чтобы минимизировать вероятность того, что что-то пойдет не так.

Это запись в crontab:

 # Execution of the primary script daily at 3AM CET
 9 1 * * * /home/user/primaryscriptfolder/aux_script.sh
 40 1 * * * /home/user/primaryscriptfolder/kill_script.sh

Это вспомогательный скрипт:

#!/bin/bash
# A simple script to enable running the package download tool in crontab

exec &> >(while read line; do echo "$(date +'%h %d %H:%M:%S') $line" >> /home/user/primaryscriptfolder/logs/aux_script.log; done;)
mono /home/user/primaryscriptfolder/primaryscript.exe
echo "Ran OK"

#!/bin/bash

Это второй вспомогательный скрипт:

# A simple job to kill the primary script

# Kill 1
# https://stackoverflow.com/questions/13910087/shell-script-to-capture-process-id-and-kill-it-if-exist

exec &> >(while read line; do echo "$(date +'%h %d %H:%M:%S') $line" >> /home/user/primaryscriptfolder/logs/aux_script.log; done;)
ps -ef | grep primaryscript.exe | grep -v grep | awk '{print $2}' | xargs kill
echo "Zed's dead, baby"

Спасибо всем заранее!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...