Я прочитав через 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 вони просто залишаються відкритими.
У деяких версіях у мене був сенсорний благ на початку, тому я знаю, що цей конкретний скрипт виконує, але не всі команди.
set -x
до вершини своїх сценаріїв, а потім перегляньте файли журналів, щоб переконатися, що вони роблять те, що ви думаєте, що роблять.
cron
оточення налаштоване$USER
?