我试图使用暴发户,以便supervisord启动时自动启动。 我的supervisord是在一个虚拟的环境中。 我已经configuration它在-n参数的前台运行模式下运行,如果手动启动,但是拒绝在启动时启动,它会工作。 遵循这里的指南http://upstart.ubuntu.com/cookbook/#how-to-establish-fork-count 我发现supervisord分叉了37次。 > ~/projects/bleh_app$ sudo strace -o /tmp/strace.log -fFv /home/bleh/py_venvs/supe/bin/supervisord -c /home/bleh/projects/bleh_app/supervisord/supervisord.conf & [1] 5662 > ~/projects/bleh_app$ ps -ef | grep strace root 5662 5447 0 21:02 pts/0 00:00:00 sudo strace -o /tmp/strace.log -fFv /home/bleh/py_venvs/supe/bin/supervisord -c /home/bleh/projects/bleh_app/supervisord/supervisord.conf root 5663 5662 36 21:02 pts/0 00:00:03 strace -o /tmp/strace.log -fFv /home/bleh/py_venvs/supe/bin/supervisord -c /home/bleh/projects/bleh_app/supervisord/supervisord.conf bleh […]
我做了这个新贵的脚本,启动一个Node.js服务。 但突然之间服务已经停止,而新贵却没有重新启动。 现在,我正尝试手动启动它,但无法识别我的服务: start: Unknown job: queue 该脚本正确放置在/etc/init ,并且应该具有正确的权限: -rw-r–r– 1 root root 200 Aug 7 13:30 queue.conf 当我用init-checkconf检查configuration文件时,它说它不能以root身份运行: root@production1:~# init-checkconf /etc/init/queue.conf ERROR: cannot run as root 什么原因导致这个错误,我该如何解决? debugging信息: Ubuntu 12.04.3 LTS root@production1:~# service –version service ver. 0.91-ubuntu1 编辑 这里是queue.conf : description "Echo.it command queue" author "Ronni Egeriis Persson <[email protected]>" stop on shutdown respawn respawn […]
我正在使用Ubuntu 14.04,Node.js安装到.nvm,并且我的主目录下的项目方向。 我正在试图在启动时运行脚本。 并有能力重新启动并停止脚本。 我forever使用npm模块来完成这个任务。 我发现的一件事是,当我发出sudo stop myapp时脚本简单地挂起 在/etc/init/myapp.conf中 #!upstart description "My Node app" start on filesystem and started networking stop on shutdown # You need this so Upstart reports the proper process ID of Node and not Forever. expect fork # Monitor Forever respawn respawn limit 5 30 # Node paths (change to suit […]
我有以下testingconfiguration文件,用于在Ubuntu 14.04上运行的暴发户服务: expect stop chdir /home/joe/Projects/Marketplace env RAILS_ENV="development" script ruby -e "STDOUT.sync=true; puts 'loading…'; sleep 5; Process.kill(:STOP, Process.pid); 5.times { puts 'running'; sleep 3 }" > /tmp/upstart_test.log end script embedded的ruby脚本只是睡5秒钟(模拟加载),然后发送一个STOP信号,以便通知Upstart它已经准备好,然后打印几次“运行”(模仿一些服务的发生)。 哇,真棒。 这么简单。 问题是,当我开始这个“服务” start fake-service ,该命令挂起(等待服务完成启动),并且过程结束在停止状态,Upstart从不承认或发送一个“继续”对于。 是什么赋予了?? 更新:执行帮助,但分叉仍然失败 我发现,如果在configuration文件中,我使用exec而不是脚本块来运行启动“守护进程”的命令,它工作得很好: expect stop chdir /home/joe/Projects/Marketplace env RAILS_ENV="development" exec ruby -e "STDOUT.sync=true; puts 'loading…'; sleep 5; Process.kill(:STOP, Process.pid); […]
我将一些服务器configuration从Ubuntu Server 12.04移到CentOS 6.6。 现在我正在处理/etc/init脚本,应该由操作系统上的upstart来处理,据我所知。 这两个服务器上的文件是相同的,我的意思是相同的内容级别,也在path级别和权限级别,是从Ubuntu到CentOS的完全副本。 我在CentOS上遇到一些暴发户的问题,因为脚本无法启动,我无法find原因(原因)。 这是Ubuntu服务器上initctl list的输出: # Ubuntu 12.04 root@qa:/etc/init# initctl list // rest of processes goes here pdoneVendorBroker start/running, process 854 repToolBroker start/running, process 3705 emailBroker start/running, process 3738 cmeBroker start/running, process 3760 messageBroker start/running, process 3727 shareEventHandler start/running, process 3686 edetailBroker start/running, process 3749 pdoneLoginProctor start/running, process 3716 所有的进程已经在操作系统启动,这很好。 这是CentOS服务器的输出: […]
我试图确保我的队列系统在服务器重启时不会失败。 PHP处理的队列系统通过命令行命令启动。 Laravel的文档build议安装一个名为supervisord的进程监视器,这个监视器在我的EC2上没有玩得很好,所以我想知道是否有另一种方法来确保我的命令在重新启动的情况下运行。 AWS AMI linux自带了旧版本的Upstart和chkconfig,但是我还没有能够得到这个工作。 有什么build议么? 我是否需要创build一个Init脚本和RPM或在这里矫枉过正?
我在Ubuntu服务器上使用Upstart来pipe理一些我正在运行的服务器进程。 我的问题是,如果我“停”了几次,这个过程就会消失,但是会自动再次开始运行。 我需要它发出停止命令时,实际上永久停止。 在这种情况下,我使用Upstart来pipe理一些node.js服务器。 这是我的一个init文件的样本。 description "node.js server" start on started stop on shutdown script # We found $HOME is needed. Without it, we ran into problems export HOME="/root" exec sudo -u www-data /usr/local/bin/node /usr/local/apps/servername/app.js end script 我需要在我的configuration中更改什么?
天儿真好, 我试图在启动时使用Upstart作为非特权用户运行命令/服务,同时保留/ etc / environment。 我有一个运气在一个贝壳 exec sudo -u user1 -i "/usr/bin/foo /opt/bar >> /var/log/bar.log 2>&1" 但是,Upstart似乎并不喜欢它(一直无法弄清楚为什么)。 我知道一般的build议是使用su ,我通过手动获取/etc/environment.local这样的文件获得了一些成功,但是却有问题让Upstart监视正确的PID(它继续在bash之后,而不是/usr/bin/foo ,因此sudo的尝试。 任何build议将是一个巨大的帮助。 我在EC2上的Amazon Linux上。
我正在使用下面的/etc/init/jsonlog.conf upstart作业: description "jsonlog" start on runlevel [23] stop on runlevel [06] respawn script cd /tmp echo "about to listen" /bin/nc -l 3333 echo "finished listening" end script post-stop script sleep 1 end script 问题是nc每次客户端连接都立即退出。 所需的行为是收到的所有数据(即utf8 json)都应该以/var/log/upstart/jsonlog.log结尾。 该服务器运行Ubuntu 12.04LTS。 当从bash shell运行时, nc命令可以正常工作。 我在做一个假设 ,这是与stdin 。 我试过使用-q -1选项,但没有帮助。 PS我很好,事实上,这将只听一个客户在一个时间。
我有一些不可靠的连接的networkingpipe理器,不幸的是处理不好。 目前,我需要检查连接,然后重新启动networkingpipe理员,如果我们没有连接,因为这将在大多数情况下处理我们看到他们失败的具体情况。我有以下脚本,运行良好时,我运行它用手: #!/bin/bash host=http://google.com timeout=60 if ! wget -S –spider –timeout=$timeout $host &>/dev/null; then restart network-manager fi 我目前在/etc/cron.d/中有一个条目,它有*/15 * * * * root /usr/bin/check_connectivity 。 我可以看到脚本正在通过阅读cron日志来运行,但是当我观察networkingpipe理器日志时,我可以看到,即使在我没有连接活动的情况下进行testing,也不会重新启动连接。 手动运行脚本成功,NM重新启动。 在cron的日志中没有错误消息,即使我删除了输出转储,我仍然没有得到任何回报。 我不知道为什么它失败了。 我可能认为它不能正确地与dbus交谈,但如果是这种情况,我会看到一些错误输出。