ec2 upstart,等待网络的“start on”命令是什么

ec2 upstart,等待网络的“start on”命令是什么

这是我第一次使用 upstart 并且正在使用 EC2。

os/upstart = aws base AMI latest version - upstart-0.6.5-13.3.13.amzn1.x86_64

等待网络启动时,我无法启动以下脚本。如果使用标准

 start on runlevel [2345]
 stop on runlevel [!2345]

我也尝试过各种组合

start on filesystem and net-device-up IFACE=eth0
start on filesystem and net-device-up IFACE!=lo

任何建议都将不胜感激

description "test for on network start"


start on (started network-interface
      or started network-manager
      or started networking)

stop on (stopping network-interface
     or stopping network-manager
     or stopping networking)


script
    touch /home/ec2-user/myFile.txt
end script 

答案1

Upstart 是一个基于事件的系统。为了使您的作业在正确的阶段执行,它可能需要等待其他启动作业发出的特定事件。

可能的解决方案因系统而异,取决于 upstart 作业的定义方式以及它们发出的事件。它也可能取决于系统上安装的 upstart 版本。

请注意,upstart 可能不会将其日志写入/var/log/upstart。早期版本可能使用 ,syslogd而较新版本更有可能将日志写入/var/log/upstart

以下解决方案仅适用于问题中提到的系统类型:

os/upstart = aws base AMI latest version - upstart-0.6.5-13.3.13.amzn1.x86_64

在这个系统上,upstart 没有echo在任何地方记录作业语句。因此这部分可能需要额外的配置。

职位定义:

description "testjob"

start on started elastic-network-interfaces

script
        echo $(ping -c 1 serverfault.com) > /var/log/testjob.log
end script

在真实的 EC2 实例上测试:

# cat /var/log/testjob.log 
PING serverfault.com (198.252.206.140) 56(84) bytes of data. 64 bytes from stackoverflow.com (198.252.206.140): icmp_seq=1 ttl=51 time=72.9 ms --- serverfault.com ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 73ms rtt min/avg/max/mdev = 72.950/72.950/72.950/0.000 ms

答案2

您的例子非常接近。

Amazon Linux 将其网络服务称为network。因此,如果您尝试使用 upstart 控制的应用程序/服务需要网络连接,请执行以下操作:

start on (runlevel [345] and started network)
stop on (runlevel [!345] or stopping network)

你不需要需要运行级别位,但能够根据运行级别环境限制服务运行并不是一个坏主意。

相关内容