На этот вопрос уже есть ответ здесь:
У меня есть сценарий оболочки в моем 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.
Не могли Вы просто выполнять его в фоновом режиме, внутри некоторое время цикл:
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 &
Это - все.