Запуск команды, когда время работы >= 20 минут [закрыто]

Мне нужно запустить BASH скрипт, когда время работы >= 20 минут (например). Как я могу это сделать?

Пожалуйста, помогите мне создать скрипт для проверки времени работы системы и проверить, если время работы больше 20 минут - запустить другой скрипт.

Спасибо.

1
задан 20 October 2015 в 16:21

2 ответа

Чтобы управлять сценарием через 20 минут после ботинка, поместите в /etc/rc.local:

nohup your-script >/dev/null 2>&1 &

, где your-script имеет sleep 1200 в начале сценария.

Или создают upstart работа или определяют, что @reboot крон командует или настраивает «Приложения Запуска», и т.д. в зависимости от того, что является самым соответствующим в Вашем случае, см. , Как управлять сценариями на запуске?

<час>

, Чтобы управлять одним сценарием, если продолжительность работы больше, чем 20 минут и другой иначе в ударе:

read -d. uptime < /proc/uptime
if (( uptime > 1200 ))
then
   one_script
else
   another_script
fi
3
ответ дан 3 December 2019 в 06:18

Нет никакой потребности знать, когда эти 20 минут передали. Команда "в" может использоваться, чтобы просто сказать системе делать что-то 20 минут с определенного момента (и в тот момент может быть (ре) начальная загрузка).

В /etc/crontab поместить @reboot {user} /usr/local/bin/script.sh и сделайте /usr/local/bin/script.sh исполняемый файл. Изменение {пользователь} к имени пользователя или "корню.

Создать /usr/local/bin/script.sh и когда Вы помещаете это в него...

 at -f /usr/local/bin/script2.sh now + 20 minutes

/usr/local/bin/script2.sh будет выполняться спустя 20 минут после (ре) начальная загрузка. Фактический период времени мог бы варьироваться немного (так как процесс начальной загрузки, вероятно, уже будет продолжающимся, прежде чем "crontab" будет выполнен. Просто пример, но это - общий метод в создании такого события.

/usr/local/bin/script2.sh может используемый для добавления в большем количестве строк с подобными начальными точками (40 минут от перезагрузки и т.д.)

Это переживет перезагрузку! Так 5 перезагрузок в течение 20 минут =, 5 раз выполняя его. Хм... оставление внутри его здесь все же.


Другой подход:

Если необходимо сделать это из самого сценария, можно также создать переменную, которая будет включена в сценарий. 1-й простой пример:

$uptime
 16:11:31 up 1 day,  7:35,  2 users,  load average: 0,10, 0,07, 0,06
~/tmp$ more test
uptime
~/tmp$ more test2
minutes=20;
at -f test now + $minutes minutes

И выполнение ./test2 покажет

warning: commands will be executed using /bin/sh
job 7 at Tue Oct 20 16:29:00 2015

Теперь все, что необходимо сделать, изменить "минуты" на переменную на основе, например, "времени работы".

Это - пример при получении времени работы в минутах в переменные "минуты":

 minutes=`awk '{print $0/60;}' /proc/uptime`;

И это - метод к созданию его условное выражение:

#!/bin/bash
minutes=`awk '{print $0/60;}' /proc/uptime`;
if [ $(echo "$minutes > 20" | bc) -ne 0  ]
then
  at -f test now + 20 minutes
fi
  • Если минуты, больше, чем 20, выполняют сценарий за 20 минут с этого времени.

Используя чистый удар:

#!/bin/bash
read -d. seconds < /proc/uptime
if (( $seconds > 20*60 ))
then
  at -f test now + 20 minutes
fi

Это должно запустить Вас.

10
ответ дан 3 December 2019 в 06:18

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

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