Я пытаюсь перейти с Solaris на Linux.
С какими препятствиями я могу столкнуться при миграции файловых систем, скриптов и файлов? Нужно ли вносить какие-либо изменения в скрипты sh и ksh?
Я хочу знать, в чем разница между Solaris и Linux с точки зрения конечного пользователя?
В настоящее время мы делаем то же самое. Мы обнаружили проблемы:
sudo
вместо этого, что имеет свои плюсы и минусы. Мне очень нравится в Solaris, что я могу делегировать определенные права пользователю без полномочий root, например для управления определенными сервисами SMF.init
не требуя дополнительных продуктов, таких как monit
.ps -ef
против ps aux
. (В этом случае я вообще считаю, что последний более полезен, но многие скрипты, которые у нас есть, жестко запрограммированы для использования стиля Solaris.)bonding
не кажется таким гибким, как IP Multi-Pathing (IPMP). ifconfig e1000g0 group test
довольно просто!multipathd
в линуксе нет ничего хорошего; на самом деле кажется, что он просто работает, но я не фанат его формата конфигурации :-)По большей части ваши сценарии оболочки должны нормально работать в Linux. Снаряды вроде bash
и dash
(часто обозначается символической ссылкой как /bin/sh
в системах Linux) обычно используют sh
эмуляция при вызове как /bin/sh
.
Помимо отсутствия некоторых более "корпоративных" функций (например, хорошо меры безопасности), миграция на Linux должна быть довольно простой. Если вы переносите базы данных или другие двоичные форматы данных, остерегайтесь различий в порядке байтов (SPARC - с прямым порядком байтов, x86 - с прямым порядком байтов).
Некоторые вещи, которые я испытал за эти годы:
Ksh, предоставляемый redhat, в настоящее время довольно хорош. pdksh менее хорош. ksh имеет оператор печати, которого нет в bash.
Если у вас есть потребность в печати, то lp / lpr / cups нуждаются в тщательной проверке.
Команды Solaris grep / awk могут быть проблемой.
Даже если вы решите использовать ksh, у bash, поставляемого с redhat, есть приятный, малоизвестный флаг функции --rpm-requires, который вы можете использовать для анализа скрипта:
$ bash --rpm-requires conman
executable(/etc/rc.d/init.d/functions)
executable(/etc/sysconfig/network)
executable(/etc/sysconfig/conman)
executable(echo_failure)
executable(echo_failure)
executable(daemon)
executable(touch)
executable(echo_failure)
executable(killproc)
executable(rm)
executable(status)
executable(killproc)
Итак, теперь мы знаем, какие команды этот скрипт должен выполнить. Если вы запустите его со своим каталогом скриптов, вы сможете быстро определить, сколько из них используют awk / sed и т. Д.
Убедитесь, что вы проверили все настройки ulimit, которые находятся в solaris. Проверьте файл solaris / etc / system на предмет настроек семафоров / общей памяти и убедитесь, что соответствующие настройки можно выполнить в linux sysctl.
/ var / adm (Solaris) и / var / log (Linux)
Порядок байтов - если вы переносите данные / двоичные файлы между системами, вам необходимо убедиться, что любое преобразование порядка байтов выполнено, Sparc - это прямой порядок байтов, а Intel - прямой порядок байтов.
Solaris 10 и более ранние версии (я не знаю насчет 11) также имеют другую версию cron, которая может вести себя иначе, чем версия для Linux. В */5
ярлык не работает, другие ярлыки, такие как @daily, могут не работать. Это не должно вызывать проблем при переходе с Solaris на Linux, но может вызвать другие проблемы.
Я смутно помню кое-что о поле дня недели, начинающемся в понедельник в Solaris, но я не нашел ни одного упоминания об этом в быстром поиске в Google.
Очевидно, что любые полные пути к файлам должны быть проверены, поскольку Solaris добавляет множество инструментов в /opt
и /usr/ucb
что Linux вставляет /usr
Имена пользователей и UID для демонов могут вызвать проблемы, если они есть в ваших скриптах, и вам может потребоваться изменить владельца некоторых файлов при их передаче. Просто потому, что они принадлежат www-data
на Solaris не означает, что они все еще будут после переноса в Linux, и в зависимости от вашего дистрибутива и выпуска может потребоваться httpd
или apache
.