我的所有新贵配置文件都在版本控制之下。我使用 upstart 的理想方法是从我的版本控制存储库(mercurial - 这并不重要)创建软链接到 /etc/init 但 upstart 无法看到作业。如果我将文件从存储库目录复制到 /etc/init.d ,一切都很好。
有人知道为什么 upstart 无法处理符号链接甚至硬链接吗?
谢谢
克里斯
我想让 Upstart 做两件事:
在理想的世界中,新贵会尝试在 1 秒后重新启动一个死进程,然后在每次尝试时将延迟加倍,直到达到一个小时。
这样的事情可能吗?
我正在努力将我当前的服务器设置移动到更新的硬件,并从 ubuntu karmic koala 迁移到 lucid lynx。目前我正在使用 gw6c(从 gogo6 网站编译,而不是来自存储库的版本)为我的系统获取 ipv6 访问权限。在 karmic koala 系统上,我使用了简单的 init.d 脚本来启动 ipv6 客户端
#! /bin/sh
/usr/local/gw6c/bin/gw6c -f /usr/local/gw6c/bin/gw6c.conf
Run Code Online (Sandbox Code Playgroud)
我想既然它在任何运行级别运行,它应该转换为
respawn
console none
start on startup
stop on shutdown
script
exec /usr/local/gw6c/bin/gw6c -f /usr/local/gw6c/bin/gw6c.conf
emit free6_ipv6_started
end script
Run Code Online (Sandbox Code Playgroud)
这从 initctrl 开始工作正常,但它在启动时显然无法启动。- 其状态为停止/等待。以其他方式开始时它工作正常(并重新生成)。关于我哪里出错的任何想法,以及适当的“开始”争论是什么?
编辑:确切的错误是“init:gw6c 主进程(xxx)以状态 8 结束”,然后是进程重新生成,xxx 是我怀疑的 PID。我也有一半怀疑这是因为 gw6c 在联网之前启动,我需要在 gw6c 之前启动我的 eth0
我为我在 Ubuntu 12.04 上运行的服务创建了一堆新贵工作。我可以成功启动它们并停止:
service my_service start
service my_service stop
Run Code Online (Sandbox Code Playgroud)
但是当我这样做时它们没有列出
service --status-all
Run Code Online (Sandbox Code Playgroud)
任何想法我可能会错过什么?
为了创建服务,我刚刚在 /etc/init.conf 中添加了 .conf 文件。
我需要从 Debian 中的应用程序创建一个守护进程。在 Debian 中是否有任何标准工具,例如 Ubuntu 中的“新贵”?我只需要启动-停止命令,就可以使用一些选项和 pid 文件将程序作为守护进程启动,并用 pid 文件杀死它。
我查看了 init.d,但似乎这些用于启动时启动。我想手动启动我的守护进程。
新的 CentOS 6 带有 Upstart,取代了 init。我正在尝试将 /etc/inittab 文件转换为新的 upstart 格式。这个特定的服务器只有 15 个左右的 inittab 条目,但是,其他服务器有 >30 个。我们主要想要 inittab 和 upstart 的“重生”部分。但是,我一直在阅读我能找到的所有 upstart 文档(几乎全部基于 Ubuntu,而且显然是在较旧版本的 upstart 上)并且一无所获。我可以创建一个配置文件(我们称之为 /etc/init/test.conf)。该文件包含此(注意,匿名)
start on runlevel [345]
stop on starting shutdown
respawn
#Comment about what it does
exec su -c "/usr/bin/ssh -2CNL 11111:127.0.0.1:11111 10.10.1.1" username
Run Code Online (Sandbox Code Playgroud)
如果我发出一个initctl reload-configuration工作被认可。我可以通过打电话来启动它,initctl start test工作就会开始。
但是,这在重新启动时不起作用,只能手动进行。我尝试将启动命令修改为以下内容,但都没有运气
start on started
start on (local-filesystems and net-device-up IFACE!=lo)
start on net-device-up IFACE=eth0
Run Code Online (Sandbox Code Playgroud)
以及我在不同示例中提到的十几种其他方式。似乎没有人启动脚本。(test.conf 和这个文件夹中的所有其他文件一样,由 root 拥有,并且是 644)
我错过了一些明显的东西吗?
/etc/environment向新贵服务提供定义的环境变量的最佳方法是什么?
我认为简单地.在脚本部分采购它们是行不通的,因为执行脚本时sh需要export在每个定义前添加一个额外的脚本......
我已经使用 upstart 在启动时启动了我的网络服务器应用程序。这是新贵脚本:
# web app node upstart file at /etc/init/webapp.conf
description "web application"
start on started mongodb
stop on runlevel [06]
respawn
respawn limit 10 100
env NODE_ENV=production
pre-start script
ulimit -n 2048
end script
exec start-stop-daemon --start -c mainuser --exec /usr/bin/make -- -C /home/mainuser/app start-prod
Run Code Online (Sandbox Code Playgroud)
这在 Ubuntu 服务器 10.04 LTS 上完美运行,我对此感到非常高兴。
但是,我有一个部署 shell 脚本,它使用 SSH 登录mainuser(这不是 sudoer),然后将工作目录更新为最新的部署版本。
这里的问题是需要重新启动服务,以便应用程序加载新的源文件。然而,mainuser得到一个...
mainuser@Saturn101:~$ stop webapp
-bash: stop: command not found
Run Code Online (Sandbox Code Playgroud)
...当试图阻止它时。我必须运行sudo stop webapp,但该用户不能这样做,因为他不是 sudoer。出于安全原因,我也不希望他成为 sudoer,而且我不想插入 sudo …
将一些新贵工作从 Ubuntu 迁移到 EC2 Linux (ElasticBeanstalk) 是一场噩梦
我什至无法完成最基本的任务。我正在使用下面的脚本,它在 Ubuntu 上运行良好,但是当我尝试在 EC2 Linux 中启动它时返回非常无用的“无法识别的服务”。我读过这通常是一个语法错误,但如果这对于 Ubuntu 来说在语法上是正确的,则不会出现这种错误。非常感谢任何帮助,我只需要任何工作示例。
这是在以 root 用户身份创建的 /etc/init/test.conf 中。
安慰:
# sudo service test start
# test: unrecognized service
Run Code Online (Sandbox Code Playgroud)
/etc/init/test.conf:
description "test"
start on startup
script
echo $(ping -c 1 serverfault.com) > /var/log/testjob.log
end script
Run Code Online (Sandbox Code Playgroud) upstart ×10
ubuntu ×4
ubuntu-10.04 ×2
amazon-ec2 ×1
centos6 ×1
daemon ×1
debian ×1
debian-lenny ×1
deployment ×1
permissions ×1
service ×1
ubuntu-12.04 ×1