Мне нужно запустить программу bash по расписанию (по местному времени) на моем Ubuntu 16.04. Например, это то, что мне нужно:
Пн-четверг, с 10:00 до 6 вечера и с 10:00 до 18:00 по субботам 6 вечера: bash runme.sh
И как только часы достигли конца, kill -9 выполнение программы.
Каков наилучший способ достичь этого, может быть, через скрипт bash?
Простейший, но далеко не элегантный способ сделать это - написать небольшой монитор процесса.
Допустим, ваш монитор назван monitor.sh, напишите его внутри:
#!/bin/bash
# Runs your runme.sh in background
/location/of/your/runme.sh &
# Gets the PID of runme.sh
RUN_ME_PID=$!
# Sleeps how much time you need:
sleep 8h
# Kills the process:
kill -9 $RUN_ME_PID
Поскольку это запланированное задание, используйте cron, чтобы запустить его для вас:
Добавьте это в конец /etc/crontab (как root):
# m h dom mon dow user command
00 10 * * 1-4 tina /location/of/your/monitor.sh > /your/output.log
Сделайте то же самое для своей пятничной партии, но измените свой monitor.sh для своих нужд.
Не забудьте отметить monitor.sh как исполняемый файл:
$ chmod +x monitor.sh
Для получения дополнительной информации, проверьте cron man-pages или некоторые полезные примеры здесь
Простейший, но далеко не элегантный способ сделать это - написать небольшой монитор процесса.
Допустим, ваш монитор назван monitor.sh, напишите его внутри:
#!/bin/bash
# Runs your runme.sh in background
/location/of/your/runme.sh &
# Gets the PID of runme.sh
RUN_ME_PID=$!
# Sleeps how much time you need:
sleep 8h
# Kills the process:
kill -9 $RUN_ME_PID
Поскольку это запланированное задание, используйте cron, чтобы запустить его для вас:
Добавьте это в конец /etc/crontab (как root):
# m h dom mon dow user command
00 10 * * 1-4 tina /location/of/your/monitor.sh > /your/output.log
Сделайте то же самое для своей пятничной партии, но измените свой monitor.sh для своих нужд.
Не забудьте отметить monitor.sh как исполняемый файл:
$ chmod +x monitor.sh
Для получения дополнительной информации, проверьте cron man-pages или некоторые полезные примеры здесь