我正在使用Ubuntu Sever 12.04。 我有一个nodejs应用程序,我想这样运行: NODE_ENV=production PORT=3001 APP_PATH=/var/www/myapp forever -a -l /var/www/myapp/forever.log -o /var/www/myapp/out.log -e /var/www/myapp/err.log /var/www/myapp/app.js 我想在系统启动时运行它,并在系统closures时“永久停止”。 我读过,首选的方法是使用暴发户脚本。 这就是我所尝试的: description "Upstart script" start on startup stop on shutdown expect fork env MYAPP_PATH="/var/www/myapp" script NODE_ENV=production PORT=3001 APP_PATH=$MYAPP_PATH exec forever -a -l $MYAPP_PATH/forever.log -o $MYAPP_PATH/out.log -e $MYAPP_PATH/err.log $MYAPP_PATH/app.js end script pre-stop script exec forever stop $MYAPP_PATH/app.js >> […]
我正在创build几个正在被注册在CentOS 6.5服务器上执行的脚本。 其中一个脚本有一个while循环阻塞,直到它在启动过程中(init.d)的另一个进程的日志上find成功的启动消息。 如果我的脚本依赖于这个服务,永远不会将成功的开始logging到它的日志文件,并且我的脚本永远挂在while循环上,这个特定的场景是否会使操作系统完全挂起而不会启动? 是否有init.d脚本的超时设置? 我的脚本被注册在rc.local文件上执行。
这里是我在/etc/init/solr.conf下的solr的新贵configuration # /etc/init/solr.conf description "Starts Solr server" respawn start on startup solr_push script echo "Starting solr server…" cd /opt/solr/solr-4.2.1/example exec java -Xms50M -Xmx80M -Djava.util.logging.config.file=/etc/solr/logging.properties -Dsolr.solr.home=/etc/solr -jar start.jar >> /var/log/solr/solr-console.log 2>&1 end script 当我更新这个新贵configuration时,例如将java选项从-Xmx80M更改为-Xmx70M ,然后执行 sudo restart solr ps aux | grep solr 即使solr进程是以新的进程ID开始的,我仍然可以在那里看到-Xm80M 。 当我做sudo stop solr ,然后sudo start solr手动sudo start solr – 一切都看起来如预期,我可以看到ps aux中的新值。 […]
我已经编写了这个代码,以便在主机系统启动时自动启动KVM虚拟机,并在关机或重启主机系统时停止虚拟机。 start on startup start on started networking and started qemu-kvm and started libvirt-bin stop on runlevel [016] kill timeout 70 expect fork pre-start exec /KVM/luc.sh prepara exec /KVM/luc.sh avvia pre-stop script /KVM/luc.sh ferma /bin/sleep 20 end script luc.sh是一个具有以下function的脚本: prepara() – 准备环境 avvia() – 启动KVM ferma() – closuresKVM 除了sleep命令,它工作。 我需要延迟主机系统的关机/重启操作,等待关机完成。 换句话说,我想在/KVM/luc.sh ferma命令后插入~20秒。 看起来,新贵脚本中的sleep呼叫是asynchronous的。 是否有可能在暴发户脚本进行同步调用?
我的暴发configuration看起来像这样 start on filesystem stop on runlevel S respawn exec /path/to/my/script 当这个脚本死亡,重新生成我想收到一封电子邮件。 这是可能的,还是我使用错误的工具? 谢谢!
我有一个接近新的服务器,并得到nginx按预期启动的问题。 我已经configuration了另一台服务器基本上相同的方式,它在那里工作。 我认为两者之间肯定有一些环境差异,但是我一直没有find。 简短版本: Starts – sudo nginx Fails – sudo service nginx start Fails – sudo service nginx restart works – sudo service nginx stop 当命令失败时,他们并没有说出任何其他的内容: * Restarting nginx nginx [fail] 日志文件(nginx [access or error],syslog)中没有其他内容或写入屏幕 更多细节: 两者都说configuration文件是好的 sudo service nginx configtest sudo nginx -t 我检查了nginx.conf的权限,它们都是正常的(与正在运行的服务器相同)双重检查了www-data是否可以访问日志文件, 两个服务器上的/etc/init.d/nginx文件是相同的,所用命令也一样(见上) 日志文件确实存在 用户/组www-data确实存在 Ubuntu 12.04 LTS nginx 1.6 执行请求 […]
如何在不重新启动服务器的情况下获取系统范围内的新环境variables? 作为Ubuntu 11.x服务器,我使用Upstart来启动/重启进程。 我在/ etc / environment中添加了一个新的环境variables,这个variables需要被我的一个应用程序的进程提取出来。 如果我直接从我的shell启动进程,variables正在拾取,一切正常(我已经为我的会话源/ etc /环境)。 但是,当我使用其Upstart服务名称启动/重新启动进程时,variables没有被看到。 sudo start app-name 我很确定,如果我重新启动服务器的新variables将被拿起,但我想尽量避免这一点。 我还有其他一些正在运行的进程,我想尽可能避免中断。
我开始将我们所有的系统转换成使用新贵来pipe理我们的各种应用程序。 我总是缺less的一件事就是能够在stop或restart事件时向进程发送不同的信号。 比如,我们用Unicorn运行我们的web进程。 独angular兽有一个很好的信号处理API。 当我想优雅地重新加载进程时,我发送一个USR2信号的主要PID。 为了优雅地closures它们,我发送一个QUIT命令。 TERM(upstart的默认停止信号)构成立即closures。 另一个例子是使用Resque 。 为了优雅地closures工人,我发送了QUIT信号。 TERM信号再次导致立即closures,无论工人的孩子是否分叉。 新贵支持自定义信号吗? 我似乎无法在任何地方find它,这使我担心我正在使用“错误的工具”。
upstart / initctl使用什么信号重新启动一项工作? 此外,是否有任何方法可以指定使用SIGHUP? 或者,有没有办法来定义一个自定义的reload命令,将发送SIGHUP? 还是我需要走出upstart呢?
在Ubuntu 10.04上,我需要用暴发户来启动我的服务,但是只有当mysql启动并运行的时候。 问题是,mysql本身不是由暴发户,所以我不能使用“开始”function。 我能做什么 ?