我用 PHP 开发了一个爬虫,它解析带有特定标头的 URL,并将所有内容的 URL 放入队列中。它工作正常。
我在 ubuntu 14.04 中开发了这段代码,并在 /etc/init 文件夹中放置了一个 .conf 文件,其中包含以下内容:
# Info
description "Warm the varnish to get the list of products"
author "Juanjo Aguilella"
# Events
start on startup
stop on shutdown
# Automatically respawn
respawn
respawn limit 100 5
# Run the script
# Note, in this example, if your PHP script return
# the string "ERROR", the daemon will stop itself.
script
[ $(exec /usr/bin/php -f /var/www/crawler.php) = 'ERROR' ] && ( stop; exit 1; )
end script
它在 Ubuntu 14.04 中运行良好,我可以使用“sudo service crawler start”和“sudo service crawler stop”来启动和停止守护进程
现在在生产环境中,我有一个 Ubuntu 16.04 服务器,我将相同的代码放在同一个文件夹中,但是当我尝试启动服务时,我收到消息“无法启动 crawler.service。未找到 Unit crawler.service”
你能给我任何帮助吗?
问候
添加到@Juanjo Aguilella Marés 答案,一旦您将脚本复制/链接到
/etc/systemd/system
,您可能希望在服务器启动时自动启动它:源数字海洋
最好不要以 root 身份运行它。只需更改
user
脚本上的行:我解决了这个问题:
a) 使用以下代码在 /etc/systemd/system 中创建文件 crawler.service:
我的 bash 文件包含与具有此代码的相同 php 文件并行的不同执行:
执行之间的睡眠是解决服务执行速度如此之快的问题所必需的。
如果您对解决方案有任何建议,请发表评论,我在 bash 文件和 systemd 文件方面没有很多经验,但目前工作正常。
14.04 的初始化系统是新贵。16.04 的初始化系统是 systemd。您应该将 upstart 脚本转换为 systemd单元文件。还有很多其他可用资源。
1]。要创建服务,请转到 /etc/systemd/system/
2]。创建一个 serviceName 文件,例如 chatSocket.service
3]。将内容放入文件中,如下所示
4]。通过点击重新加载配置:
sudo systemctl daemon-reload
5]。默认开启服务,系统启动时服务会自动启动:
sudo systemctl enable my_service.service
6]。使用以下命令启动您的服务:
sudo systemctl start my_service.service