Я прочитал около 20 вопросов относительно заданий cron и того, что вам не нужно устанавливать, и я сделал все это, не помечайте это как дубликат. Так что мой сценарий такой:
#!/bin/bash
openRTSP_process_ids=(`/bin/ps -fu $USER | /bin/grep "openRTSP" | /bin/grep -v "grep" | /bin/grep -v $0 | /usr/bin/awk '{print $2}'`)
echo $openRTSP_process_ids
for i in "${openRTSP_process_ids[@]}"
do
if [ -n "$i" ]; then
echo $i
kill -1 $i
fi
done
и мой crontab выглядит так:
#SHELL=/bin/bash
PATH=/home/username/bin:/home/username/.local/bin:/opt/OpenPrinting-Gutenprint/sbin:/opt/OpenPrinting-Gutenprint/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap$
43,41,26,21,16,12,1,7,48,46,33,49,54,57,59,4,9,14,19,24,27,29,32,34,39,44 * * * * bash /home/username/Documents/stop_openRTSP &>> /home/username/stop.log
50,55,0,5,10,15,20,25,30,35,40,45 * * * * /home/username/Documents/start_openRTSP
Я пробовал это со стандартной оболочкой sh и оболочкой bash, и обе не работают. Я пробовал перенаправить вывод в файл журнала бота с помощью &>> перенаправления bash и 2>&1 перенаправления sh, но файл журнала просто пуст. Я пробовал кучу вещей, но процесс никогда не завершается, но они завершаются, когда я делаю это через командную строку.
В дополнение к добавлению пути и оболочки я написал все команды с их полным путем. Я проверяю, работает ли это, просматривая ps aux | grep openRTPS и просматривая открытые процессы. Когда я запускаю скрипт из командной строки, процессы закрываются, но через cron job они просто остаются открытыми.
В некоторых версиях в начале было сообщение «touch bla», поэтому я знаю, что этот конкретный скрипт выполняется, но не все команды.
решение1
Если задания или сценарии не выполняют то, что вы ожидаете, один очень полезный совет по устранению неполадок — добавьте set -x
в начало сценария и проверьте вывод, чтобы убедиться, что сценарий выполняет то, что вы ожидаете.думатьэто делает. Вполне возможно, что вы делаете какие-то предположения или допущения относительно вашей среды выполнения, которые не подтверждаются в полевых условиях.