Отказ от ответственности: я довольно нуб, что касается 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"
Спасибо всем заранее!