У меня есть скрипт, который мне нужно запустить после загрузки системы. Поэтому я поместил сценарий в моем /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.
screen -dmS PythonLoader /usr/bin/python2.7 /var/www/html/scripts/load.py
php '/var/www/html/cron/bootup.php'
exit 0
Внутри моего /var/www/html/cron/bootup.php
файл У меня есть следующий код, который загружает файл с удаленного хоста
$head = array_change_key_case(get_headers($url, TRUE));
$remoteFileSize = $head['content-length'];
echo (file_put_contents($this->serverZipLocation . basename($url), fopen($url, 'r')) == $remoteFileSize) ? true : false;
Моя проблема в том, что приведенный выше код загружает только около 60% удаленного файла, после чего он просто останавливает выполнение скрипта. Глядя на мой /var/log/lighttpd/error.log
не дает ничего, кроме сообщения о запущенном сервере.
Если я, однако, запустить скрипт вручную, просто войдите в терминал от имени пользователя root и напишите /etc/rc.local
нет проблем вообще.
Для удобства /var/www/html/scripts/load.py
который также загружен внутри /etc/rc.local
У файла нет проблем.
Почему это не работает?
РЕДАКТИРОВАТЬ: я пытался сейчас поставить sleep 120
как раз перед первой строкой rc.local
и это, кажется, заставляет его работать. Может показаться, что что-то необходимое не готово при запуске сценариев? Может быть, сеть?
Задача ещё не решена.
Других решений пока нет …