سؤال

لقد قمت بإنشاء Amazon Ami مخصص (Fedora) يدير بعض البرامج النصية ثم تغلق.

المشكلة مع AMI هي أنه إذا تغير التعليمات البرمجية، يجب أن تكون هناك طريقة لمثيل AMI للحصول على أحدث البرامج النصية قبل تنفيذها.

كتبت سيناريو شل ووضعها في /etc/init.d/nt_startup

للحفاظ على رمز حتى الآن، أعمل git pull shell script في مستودع التعليمات البرمجية الخاصة بي ثم تنفيذ البرنامج النصي.

المشكلة هي، git pull لا يبدو أنه يعمل عندما يحدق مثيل، لكن البرنامج النصي Python يعمل بشكل جيد. لست متأكدا ما أفتقده ... إليك البرنامج النصي لبدء التشغيل:

#!/bin/bash
#
# ec2 Startup script for EC2 machines
#
# chkconfig: 345 99 02
# description: Script used to issue startup and shutdown commands.
#

if [ "$1" = "start" ]; then
 /usr/scripts/code/git_latest
 python /usr/scripts/code/process.py
 exit
fi

if [ "$1" = "stop" ]; then
#nothing
exit
fi

ال /usr/scripts/code/git_latest SHELT SCRITT يبدو وكأنه هذا:

#pulls in the latest code from the repository
cd /usr/scripts/code
sudo git pull

يجب أن تسحب آخر process.py النصي.

الشيء الغريب هو أنه إذا كنت في مثلي وتنفيذ البرنامج النصي لبدء التشغيل يدويا (/etc/init.d/nt_startup "start")، يعمل البرنامج النصي git على ما يرام.

هل فاتني شيء؟

هل كانت مفيدة؟

المحلول

حسنا، احسبت أخيرا. بعد تجوب إخراج EC2، وجدت هذا الخط:

"بدء ntstartup: sudo: عذرا، يجب أن يكون لديك tty لتشغيل sudo"

يبدو أن فيدورا يغلق أوامر غير TTY Sudo.

بحث سريع أدى إلى الحل:

  1. كجذر تشغيل "Visudo".
  2. ابحث عن الخط باستخدام "المتصلين الافتراضي" والتعليق عليه (#Default StoreTty)

آمل أن يكون هذا مفيدا لأي شخص آخر يعمل في هذه المشكلة.

نصائح أخرى

عليك أن تضع رابط بدء التشغيل في /etc/rc؟.d. يمكنك استخدام Chkconfig (8) أو ntsysv (8) لمساعدتك في إدارة هذه الدلائل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top