как выполнить программу Python в сценарии оболочки

Гм... динамично изменение имени хоста сервера, вероятно, заставит очень многих системных демонов неправильно функционировать, и часто способами, которые не сразу очевидны. O/S ожидает, что имя хоста будет установлено, когда система будет установлена, и останьтесь неизменными. hostname почти всегда проверяется только однажды на запуске процесса. Существуют другие способы переключить версии на лету однако...

Самое легкое должно установить уровень абстракции с помощью символьных ссылок...

Вам не нужны два сервера для этого. Вместо этого на том же уровне каталога как "домашний" каталог веб-сайта (т.е. /var/www, hosted/server/html, и т.д.), создают каталог для каждой версии сайта как в...

.../
.../v1.0
.../v1.1a
.../v1.1b
   :

v1.1a и v1.1b будет Ваше "ЖИВОЕ" чередование и "ТЕСТ".

Здесь прибывает косвенность...

Создание символьных ссылок очень быстро, таким образом, можно, вероятно, воссоздать их, когда Вы хотите подкачать версии с сайтом при легкой загрузке без слишком большого разрушения.

Услуга хостинга, на которой я основываю это, требует, чтобы веб-сайт "домашний" каталог был "HTML" как в...

/home/group/subgroup/myuserid/html

Таким образом, мы переименовываем html каталог сервис дает нам каталогу версии как v1.1a и создайте символьную ссылку на названный html.

С нашим набором символьных ссылок список каталогов мог бы быть похожим...

.../
.../TEST -> v1.1b
.../html -> v1.1a
.../v1.0
.../v1.1a
.../v1.1b

После внесения изменений в файлы веб-сайта в .../v1.1b каталог, мы запускаем скрипт, который удаляет (Ubuntu имеет более безопасное unlink команда), и воссоздает символьные ссылки с "HTML" и "ТЕСТОМ", подкачанным как в...

.../
.../TEST -> v1.1a
.../html -> v1.1b
.../v1.0
.../v1.1a
.../v1.1b

Надеюсь, это поможет.

16.02.2013 дополнительное 18:15:12 EST...

Сегодняшнее исследование показывает, что существует большое конфликтующее мнение об этом, это кажется.

Мой собственный опыт прибывает из пребывания в течение большого количества времени, восстанавливая Xwindows и Ubuntu "zeroconfig" функциональность после изменения имени хоста, как несколько моих примечаний от инцидента указывают...

  • Ubuntu 10.04
  • Сеть

    • С обновлений в мае 2011 требования параметров сети изменились существенно для поддержки Zeroconf!
    • Основной вопрос, с которым встречаются, имеет отношение к команде 'имени хоста'.

      • Метод использование Ubuntu для поддержания имени хоста, IP-адреса, и т.д. изменился.
      • /etc/hostname и/etc/hosts файлы являются теперь полномочиями для всех этих значений
      • Больше не может быть нескольких псевдонимов для хоста в/etc/hosts
      • В/etc/hosts имя должно быть Полностью определенным доменным именем (FQDN) - другими словами, hostname.domainname.
      • SSH теперь отправляет FQDN вместо просто имени хоста, таким образом,/etc/hosts.allow должен быть изменен от...

        ВСЕ: ЛОКАЛЬНЫЙ
        кому..
        ВСЕ: ЛОКАЛЬНЫЙ *.DORIS

  • Выборка из http://www.oldapps.com/linux/ubuntu.php?old_ubuntu=35?changelog...

    • 'Avahi будет всегда запускаться, даже если будет присутствовать .local домен. Пакет avahi-демона, который реализует стандарт mDNS "zeroconf", раньше включал проверку, чтобы не работать, когда конфликт .local домен DNS присутствует, поскольку сообщалось, что некоторые ISPs рекламируют такой .local домен в своих сетях, оставляя хосты Ubuntu не могущими видеть имена, рекламируемые в локальной сети (327362). В Ubuntu 9.10 avahi-демон запускается независимо. Возможно, что это может вызвать другие проблемы. Если Ваша сеть настроена этот путь, можно отключить mDNS использование следующей команды':

      sudo останавливают avahi-демона sudo sed-e '/^start/, + 1s/^/# /'/etc/init/avahi-daemon.conf

Несколько соответствующих статей...

7
01.03.2014, 13:12
3 ответа

Чтобы иметь возможность выполнять как ./ disk.py , вы нужны две вещи:

  1. Измените первую строку на эту: #! / usr / bin / env python
  2. Сделайте скрипт исполняемым: chmod + x disk.py
11
27.01.2020, 20:13

Сценарий оболочки должен иметь вид:

#!/bin/sh
python disk.py
18
27.01.2020, 20:13

Как упомянул @SHW, вопрос на самом деле касается выполнения программы python в сценарии оболочки (без запуска сценария python напрямую с помощью./disk.py)

Таким образом, расширяя ответ @SHW, ваш сценарий оболочки должен выглядеть примерно так:

#!/bin/bash
/usr/bin/python /absolute/path/to/your/disk.py

Обратите внимание на /usr/bin/pythonвместо просто python; использование абсолютных путей помогает сценарию точно знать, какой python использовать (, чтобы найти абсолютный путь к вашему установленному python usewhich python).

Та же история с использованием абсолютных путей в скрипте Python вместо простого disk.py. В моем случае я пытался запустить приложение Django из своего сценария bash, поэтому мне пришлось добавить абсолютный путь к моему manage.py, чтобы оно работало правильно.

Кроме того, что касается заголовка вашего bash-скрипта, есть несколько альтернатив #!/bin/bash. Пожалуйста, взгляните на этот вопрос, чтобы узнать больше об этом.

Удачи.

5
27.01.2020, 20:13

Теги

Похожие вопросы