Запустить и убить программу bash в запланированное время

Мне нужно запустить программу bash по расписанию (по местному времени) на моем Ubuntu 16.04. Например, это то, что мне нужно:

Пн-четверг, с 10:00 до 6 вечера и с 10:00 до 18:00 по субботам 6 вечера: bash runme.sh

И как только часы достигли конца, kill -9 выполнение программы.

Каков наилучший способ достичь этого, может быть, через скрипт bash?

1
задан 13 February 2018 в 04:29

2 ответа

Простейший, но далеко не элегантный способ сделать это - написать небольшой монитор процесса.

Допустим, ваш монитор назван 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 или некоторые полезные примеры здесь

1
ответ дан 17 July 2018 в 20:56

Простейший, но далеко не элегантный способ сделать это - написать небольшой монитор процесса.

Допустим, ваш монитор назван 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 или некоторые полезные примеры здесь

1
ответ дан 23 July 2018 в 21:37
  • 1
    Если в пятницу вы спите 32 часа, если я правильно прочитал область проекта. – WinEunuuchs2Unix 13 February 2018 в 22:12
  • 2
    Да, в самом деле. Другое решение использует подход «самоотключения», как вы указали в ответе выше. :) – Girol 13 February 2018 в 22:15
  • 3
    Другое решение - использовать команду at в конце скрипта и запланировать время kill -9 – Girol 13 February 2018 в 22:21

Другие вопросы по тегам:

Похожие вопросы: