LINUX.ORG.RU

История изменений

Исправление aureliano15, (текущая версия) :

sleep 300
bash /home/user/script

Нет, так ты рекурсивно вызываешь ещё одну оболочку bash, которой передаётся копия твоего окружения. А из неё - ещё одну. И т. д. Прежние же оболочки остаются в памяти до тех пор, пока всё это безобразие не завершится. А оно не завершится никогда. Поэтому если комп с таким скриптом долго не перезагружать, то скрипт в конце концов засрёт всю имеющуюся оперативную память, после чего вылетит. Но до того, как он вылетит, тебе долго будет не хватать памяти, и всё будет дико тормозить, если ты не догадаешься вырубить его сам. Особенно если имеется своп. Поэтому писать надо так:

# Твои команды

sleep 300
. /home/user/script

или

# Твои команды

sleep 300
source /home/user/script

Команды . и source - суть одно и то же, но . короче. Команду bash внутри скрипта перед или после source писать не надо, т. к. ты вызываешь скрипт в той же оболочке, а не создаёшь новую.

Либо через цикл:

while true
  do
    # Твои команды
    sleep 300
  done

Исходная версия aureliano15, :

sleep 300
bash /home/user/script

Нет, так ты рекурсивно вызываешь ещё одну оболочку bash, которой передаётся копия твоего окружения. А из неё - ещё одну. И т. д. Прежние же оболочки остаются в памяти до тех пор, пока всё это безобразие не завершится. А оно не завершится никогда. Поэтому если комп с таким скриптом долго не перезагружать, то скрипт в конце концов засрёт всю имеющуюся оперативную память, после чего вылетит. Но до того, как он вылетит, тебе долго будет не хватать памяти и всё будет дико тормозить, если ты не догадаешься вырубить его сам. Особенно если имеется своп. Поэтому писать надо так:

# Твои команды

sleep 300
. /home/user/script

или

# Твои команды

sleep 300
source /home/user/script

Команды . и source - суть одно и то же, но . короче. Команду bash внутри скрипта перед или после source писать не надо, т. к. ты вызываешь скрипт в той же оболочке, а не создаёшь новую.

Либо через цикл:

while true
  do
    # Твои команды
    sleep 300
  done