Какие скрипты не следует переносить с bash на python? - PullRequest
1 голос
/ 18 мая 2010

Я решил переписать все наши скрипты Bash на Python (их не так много) как мой первый проект на Python. Причина в том, что, хотя я довольно свободно говорю на Bash, я чувствую, что это несколько архаичный язык, и поскольку наша система находится на первых этапах своего развития, я думаю, что переход на Python сейчас будет правильным решением.

Существуют ли сценарии, которые всегда должны быть написаны на Bash? Например, у нас есть скрипт демона init.d - нормально ли для него использовать Python? Мы запускаем CentOS.

Спасибо.

Ответы [ 4 ]

3 голосов
/ 18 мая 2010

Это нормально в том смысле, что вы можете это сделать. Но сценарии в /etc/init.d обычно должны загружать данные конфигурации и некоторые функции (например, для печати красивого зеленого OK на консоли), который будет трудно эмулировать в Python.

Поэтому постарайтесь преобразовать те, которые имеют смысл (то есть те, которые содержат сложную логику). Если вам нужен контроль заданий (запуск / остановка процессов), тогда bash лучше подходит, чем Python.

2 голосов
/ 18 мая 2010

Обычно сценарии в /etc/init.d пишутся в «родной оболочке» ОС (например, bash, sh, posix-sh и т. Д.). Это особенно верно для сценариев, которые будут выполняться на более низких уровнях инициализации (например, не каждый каталог будет монтироваться в однопользовательском режиме, в том числе везде, где могут быть установлены python или библиотеки сайтов).

Большинство ОС предоставляют некоторые «вспомогательные функции», которые облегчают написание сценариев в некоторых собственных оболочках. Эти сценарии определяют определенные коды возврата и сообщения, которые необходимы / желательны при написании служебных сценариев. В системах на базе RedHat см .:

/etc/init.d/functions 

Кроме того, служебные сценарии в /etc/init.d могут быть написаны на любом языке (включая скомпилированные языки). Общий синтаксис вызова должен быть поддержан. Обычно есть три аргумента, которые должны поддерживаться: запуск, остановка и статус. Некоторые дополнительные аргументы могут быть подходящими, в зависимости от назначения сценариев.

% /etc/init.d/foo (start|stop|status)  
1 голос
/ 18 мая 2010

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

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

0 голосов
/ 18 мая 2010

Определенные сценарии, которые я пишу, просто включают в себя циклический переход по глобу в некоторых каталогах, а затем выполняют для них несколько последовательных команд. Такие вещи намного более утомительны в питоне.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...