Eylem Komut Çalıştırmalarını kullanarak Linux sanal makinenizde betikleri çalıştırma

Şunlar için geçerlidir: ✔️ Linux VM'leri ✔️ Esnek ölçek kümeleri

Komut Çalıştırma özelliği Azure Linux sanal makinesinde kabuk betiklerini çalıştırmak için sanal makine (VM) aracısını kullanır. Genel makine veya uygulama yönetimi için bu betikleri kullanabilirsiniz. Vm erişimi ve ağ sorunlarını hızla tanılamanıza ve düzeltmenize ve VM'yi yeniden iyi bir duruma döndürmenize yardımcı olabilir.

Sosyal haklar

Sanal makinelerinize birden çok yolla erişebilirsiniz. Komutunu Çalıştır, SANAL makine aracısını kullanarak sanal makinelerinizde betikleri uzaktan çalıştırabilir. Komutunu Azure portalı, REST API veya Linux VM'leri için Azure CLI aracılığıyla kullanırsınız.

Bu özellik, bir sanal makine içinde betik çalıştırmak istediğiniz tüm senaryolarda kullanışlıdır. Ağ veya yönetici kullanıcı yapılandırması nedeniyle RDP veya SSH bağlantı noktası açık olmayan bir sanal makinede sorun gidermenin ve düzeltmenin tek yollarından biridir.

Önkoşullar

Linux Dağıtımı Desteklenir

Linux Dağıtımı x64 ARM64
Alma Linux 9.x+ 9.x+
Debian 10+ 11.x+
Flatcar Linux 3374.2.x+ 3374.2.x+
Azure Linux 2.x 2.x
openSUSE 12.3+ Desteklenmiyor
Oracle Linux 6.4+, 7.x+, 8.x+ Desteklenmiyor
Red Hat Enterprise Linux 6.7+, 7.x+, 8.x+ 8.6+, 9.0+
Rocky Linux 9.x+ 9.x+
SLES 12.x+, 15.x+ 15.x SP4+
Ubuntu 18.04+, 20.04+, 22.04+ 20.04+, 22.04+

Kısıtlamalar

Run Komutunu kullanırken aşağıdaki kısıtlamalar geçerlidir:

  • Çıkış son 4.096 baytla sınırlıdır.
  • Bu betiği çalıştırmak için minimum süre 20 saniye kadardır.
  • Varsayılan olarak Linux'ta yükseltilmiş kullanıcı olarak çalıştırılan betikler.
  • Aynı anda bir betik çalıştırabilirsiniz.
  • Bilgi isteyen betikler (etkileşimli mod) desteklenmez.
  • Çalışan bir betiği iptal edemezsiniz.
  • Betiğin çalıştırılabileceği maksimum süre 90 dakikadır. Bundan sonra betik zaman aşımına uğradı.
  • Betiğin sonuçlarını döndürmek için sanal makineden giden bağlantı gerekir.

Not

Düzgün çalışmak için Çalıştır Komutu, Azure genel IP adreslerine bağlantı (bağlantı noktası 443) gerektirir. Uzantının bu uç noktalara erişimi yoksa betikler başarıyla çalıştırılabilir ancak sonuçları döndürmez. Sanal makinedeki trafiği engelliyorsanız, etiketini kullanarak AzureCloud Azure genel IP adreslerine giden trafiğe izin vermek için hizmet etiketlerini kullanabilirsiniz.

Kullanılabilir komutlar

Bu tabloda Linux VM'leri için kullanılabilen komutların listesi gösterilir. İstediğiniz özel betiği çalıştırmak için RunShellScript komutunu kullanabilirsiniz. Bir komutu çalıştırmak için Azure CLI veya PowerShell kullanırken, veya -CommandId parametresi için --command-id sağladığınız değer aşağıdaki listelenen değerlerden biri olmalıdır. Kullanılabilir bir komut olmayan bir değer belirttiğinizde şu hatayı alırsınız:

The entity was not found in this Azure location
Ad Açıklama
RunShellScript Linux kabuk betiği çalıştırır.
ifconfig Tüm ağ arabirimlerinin yapılandırmasını alır.

Azure CLI

Aşağıdaki örnekte az vm run-command komutu kullanılarak Azure Linux VM'sinde kabuk betiği çalıştırılır.

az vm run-command invoke -g myResourceGroup -n myVm --command-id RunShellScript --scripts "apt-get update && apt-get install -y nginx"

Not

Komutları farklı bir kullanıcı olarak çalıştırmak için bir kullanıcı hesabı belirtmek için girin sudo -u .

Azure portal

Azure portalında bir VM'ye gidin ve soldaki menüde İşlemler'in altında Çalıştır komutunu seçin. VM'de çalıştırılacak kullanılabilir komutların listesini görürsünüz.

Komut listesi

Çalıştırılacak komutu seçin. Bazı komutların isteğe bağlı veya gerekli giriş parametreleri olabilir. Bu komutlar için parametreler, giriş değerlerini sağlamanız için metin alanları olarak sunulur. Her komut için Betiği görüntüle'yi genişleterek çalıştırılan betiği görüntüleyebilirsiniz. RunShellScript , kendi özel betiğinizi sağlamanıza olanak sağladığından diğer komutlardan farklıdır.

Not

Yerleşik komutlar düzenlenemez.

Komutu seçtikten sonra çalıştır'ı seçerek betiği çalıştırın. Betik tamamlandıktan sonra çıktıyı ve çıkış penceresindeki hataları döndürür. Aşağıdaki ekran görüntüsünde ifconfig komutunu çalıştırmaya yönelik örnek bir çıkış gösterilmektedir.

Komut dosyası çıktısı çalıştırma

PowerShell

Aşağıdaki örnek, Azure VM'de PowerShell betiği çalıştırmak için Invoke-AzVMRunCommand cmdlet'ini kullanır. cmdlet'i, parametresinde başvuruda bulunulduğu betiğin -ScriptPath cmdlet'in çalıştırıldığı yere yerel olmasını bekler.

Invoke-AzVMRunCommand -ResourceGroupName '<myResourceGroup>' -Name '<myVMName>' -CommandId 'RunShellScript' -ScriptPath '<pathToScript>' -Parameter @{"arg1" = "var1";"arg2" = "var2"}

Komut Çalıştırma'ya erişimi sınırlama

Çalıştırma komutlarının listelenmesi veya bir komutun ayrıntılarının gösterilmesi için Abonelik düzeyinde izin gerekir Microsoft.Compute/locations/runCommands/read . Yerleşik Okuyucu rolü ve üst düzeyler bu izne sahiptir.

Komut çalıştırmak için izin gerekir Microsoft.Compute/virtualMachines/runCommands/write . Sanal Makine Katılımcısı rolü ve üst düzeyler bu izne sahiptir.

Komut Çalıştır'ı kullanmak için yerleşik rollerden birini kullanabilir veya özel bir rol oluşturabilirsiniz.

Eylem Çalıştırma Komutu Linux sorunlarını giderme

Linux ortamları için eylem çalıştırma komutunun sorunlarını giderirken, diğer ayrıntılar için genellikle aşağıdaki dizinde bulunan işleyici günlük dosyasına bakın: /var/log/azure/run-command-handler/handler.log

Bilinen sorunlar

Linux eylem çalıştırma komut günlükleri, Windows günlüklerini çalıştırma eylemiyle karşılaştırıldığında birkaç önemli farka sahiptir:

  • Sıra numarası günlüğün her satırı 'seq=#' olarak bildirilir
  • Bunu içeren Awaiting completion... bir satır olmayacaktır çünkü bu işlemde yalnızca Windows çalıştır komutu olacaktır.
  • Satır Command existed with code: # aynı zamanda yalnızca eylem çalıştırma komutu Windows günlüğünde de bulunur.

Eylem Çalıştırma Komutunu Kaldırma

Eylem çalıştırma komutu Linux uzantısını kaldırmanız gerekiyorsa Azure PowerShell ve CLI için aşağıdaki adımlara bakın:

Aşağıdaki kaldırma örneklerinde rgname ve vmname değerini ilgili kaynak grubu adınız ve sanal makine adınızla değiştirin.

 Invoke-AzVMRunCommand -ResourceGroupName 'rgname' -VMName 'vmname' -CommandId 'RemoveRunCommandLinuxExtension'
az vm run-command invoke  --command-id RemoveRunCommandLinuxExtension --name vmname -g rgname

Not

Çalıştırma Komutunu yeniden uyguladığınızda uzantı otomatik olarak yüklenir. Uzantıyla ilgili sorunları gidermek için uzantı kaldırma komutunu kullanabilirsiniz.

Sonraki adımlar

Sanal makinenizde betikleri ve komutları uzaktan çalıştırmanın diğer yolları hakkında bilgi edinmek için bkz . Linux VM'nizde betik çalıştırma.