我有一个脚本,我需要在系统启动后运行。因此,我已将脚本放在/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
,这似乎使其有效。在脚本运行时,似乎还没有准备好所需的东西?也许网络?