Как запускать сценарий оболочки снова и снова, имея в корне интервал времени X? [дубликат]

На этот вопрос уже есть ответ здесь:

У меня есть сценарий оболочки в моем Ubuntu Server 14.04 LTS по адресу ./ ShellScript.sh . Я настраиваю /etc/rc.local для запуска сценария оболочки после загрузки, но до входа в систему, используя приведенный ниже код.

Чтобы запустить запуск, напишите эту команду в терминале: sudo nano /etc/rc.local, затем добавьте следующее и сохраните.

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

#!/bin/bash

./ShellScript.sh

exit 0

Примечание: имейте в виду, что я работаю в режиме root . Теперь, когда я запускаю crontab -e , я получаю следующее. Что теперь делать?

no crontab for root - using an empty one
Select an editor.  To change later, run 'select-editor'.
1. /bin/ed
2. /bin/nano        <---- easiest
3. /usr/bin/vim.basic
4. /usr/bin/vim.tiny
Choose 1-4 [2]:

После выбора 2 , я получил crontab: "/ usr / bin / sensible-editor" со статусом 2

Теперь я хочу запускать / выполнять этот сценарий оболочки снова и снова с 15-минутным интервалом между запусками после загрузки, но до входа в систему. Итак, могу ли я это сделать?

Ответ:

Во-первых, вы не можете получить доступ к crontab -e через root. Вы должны войти в систему через учетную запись USER. После входа в учетную запись ПОЛЬЗОВАТЕЛЯ перейдите в терминал и введите crontab -e Здесь вы получите текст, как показано ниже.

# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h  dom mon dow   command

Теперь I = в конце файла, вам нужно добавить строку * / 15 * * * * /ShellScript.sh, чтобы каждый скрипт запускался через 15 минут. Теперь сохраните файл и готово.

Примечание: Если вы хотите, чтобы сценарий запускался снова и снова с разными временными интервалами, не запутайтесь. Вот несколько онлайн-инструментов, которые будут генерировать для вас строки Cron.

  1. http://www.cronmaker.com/
  2. http://crontab-generator.org/
  3. http://www.generateit.net/cron-job/
  4. http: // cron.nmonitoring.com/cron-generator.html
  5. http://www.openjs.com/scripts/jslibrary/demos/crontab.php
-1
задан 22 August 2014 в 12:31

1 ответ

Не могли Вы просто выполнять его в фоновом режиме, внутри некоторое время цикл:

while true
 do
    [command]
    sleep [number of seconds]
 done

, Таким образом, конструкция была бы:

  • Добавляют строку в /etc/rc.local для вызова сценария (Ваш ShellScript.sh) + "&"; чтобы заставить его выйти
  • Выполнение команды, Вы хотите ShellScript.sh выполниться в некоторое время цикле (в Shellscript.sh):

    while true
     do
        [command_1]
        [command_2]
        [command_3]
        [command_4]
        sleep 900
     done
    

Тот способ, которым это работало бы на запуске и с тех пор каждые 15 минут

Примечание, что, если Вы хотите выполнить его от cron, необходимо установить полный путь, с тех пор cron выполнения с ограниченным набором переменных среды.

Пример:

я создал глупый сценарий, добавив строку со строкой "обезьяна" в файл test.txt на моем рабочем столе:

сценарий :

#!/bin/bash

while true
 do
    echo monkey>>/home/jacob/Desktop/test.txt
    sleep 5
 done

строка в моем /etc/rc.local файл:

sh /home/jacob/Desktop/while.sh &

Это - все.

3
ответ дан 7 October 2019 в 05:47

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

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