История изменений
Исправление 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