Hier ist mein Skript für Self-Terminating
$ EC2_INSTANCE_ID="`wget -q -O - http://instance-data/latest/meta-data/instance-id || die \"wget instance-id has failed: $?\"`"
$ echo "ec2-terminate-instances $EC2_INSTANCE_ID" | at now + 55 min || die 'cannot obtain instance-id'
Wenn Sie es als zuweisen möchten Selbst Stoppen auf Self-Terminating , können Sie es nur einmal tun.
Gehen Sie in Ihrer EC2-Konsole zu Instanzeinstellungen und ändern Sie das Abschaltverhalten in Stopp . Wenn Sie /etc/cloud/cloud.cfg
konfigurieren, erfahren Sie, wie Sie ein Startskript mit Cloud-Init ausführen .
Folgen Sie der Antwort von Eric Hammond , fügen Sie den Befehl in eine Datei ein und suchen Sie ihn im Skript-pro-Boot- Pfad:
$ echo '#!/bin/sh' > per-boot.sh
$ echo 'echo "halt" | at now + 55 min' >> per-boot.sh
$ echo 'echo per-boot: `date` >> /tmp/per-boot.txt' >> per-boot.sh
$ chmod +x per-boot.sh
$ sudo chown -R root per-boot.sh
$ sudo mv -viu per-boot.sh /var/lib/cloud/scripts/per-boot
Starten Sie Ihre Instanz neu und prüfen Sie, ob das Skript ausgeführt wird:
$ cat /tmp/per-boot.txt
per-boot: Mon Jul 4 15:35:42 UTC 2016
Wenn dies der Fall ist, wird für den Fall, dass Sie vergessen haben, Ihre Instanz zu stoppen, sichergestellt, dass die Instanz selbst beendet wird, wenn sie 55 Minuten lang ausgeführt wird oder zu welcher Zeit auch immer Sie sie im Skript festgelegt haben.
Broadcast message from root@ip-10-0-0-32
(unknown) at 16:30 ...
The system is going down for halt NOW!
PS: Für alle, die Self-Stop verwenden möchten, sollten Sie beachten, dass nicht alle EC2-Typen beim Neustart selbst wiederhergestellt werden. Ich empfehle die Verwendung von EC2-VPC / EBS mit Ein / Aus-Zeitplan .