Речь, конечно же, пойдет не об автомобиле Hyundai Solaris(хотя он мне и симпатичен по многим параметрам), а об операционной системе. Как-то мне в повседневной рабочей деятельности предстояло написать скрипт под операционную систему solaris. В этой заметке поделюсь своим впечатлением.
Стояла задача создать скрипт для удаления старых файлов, в большинстве случаев это используется для удаления логов. Ранее мною писался подобный скрипт для linux, поэтому мне просто необходимо было проверить что в скрипте работает не так как в linux и чуток модифицировать под solaris. Запускаю putty, прошу ее дать мне доступ по telnet к серверу(неожиданно было получить telnet доступ к unix подобному серверу, но разницы для putty никакой — все те же белые буквы на черном фоне ). Первое, что решил сделать — осмотреться(а вдруг тут все по-другому) Печатаю — ls — работает, pwd — работает. Как говорится, и настроение твое улучшилось. Проверим версию, печатаю cat /proc/ve[tab] [tab] — TAB не работает!! Ну как, точнее работает, но не так как это привычно для linux. При нажатии ТАБ курсор сдвигается на расстояние табуляции, а не дополняет твои команды(как это привычно). Думаю, ладно, попробуем без подсказок:
pc# cat /proc/version cat: cannot open /proc/version
o_O
Тут вышеупомянутое настроение уже стало не таким уж и хорошим. Таб — не работает, что-то из простого и привычного(узнать версию) тоже не работает, backspace и тот не работает. Но сдаваться рано, нужно довести дело до конца. Позднее для себя выяснил, чтобы узнать версию операционной системы solaris необходимо выполнить
cat /etc/release
Для создания и редактирования файла пишу
nano tst.txt
Нету нано
Ну что ж, похардкорим:
vi tst.txt
О чудо — есть VI.
Благо, что скрипт пришлось не сильно модифицировать — всего лишь у solaris’а для find нет опции -iname (то же самое, что -name, только нечувствительное к регистру букв). Поэтому я поправил скрипт и в итоге все выглядело так:
#!/bin/sh # Script by Evginey Buchnev Need help? EBuchnev@beeline.ru, joohny@mail.ru helpstring="USAGE: del_logs fpath=\"/var/logs/\" fmask=\"*.*\" days=\"2\" To delete files older than 2 days"; first=$1 second=$2 if [ "$first" = "help" ] ; then echo $helpstring; exit; fi if [ "$first" = "-help" ] ; then echo $helpstring; exit; fi if [ "$first" = "--help" ] ; then echo $helpstring; exit; fi if [ "$first" = "?" ] ; then echo $helpstring; exit; fi if [ "$first" = "-h" ] ; then echo $helpstring; exit; fi if [ "$first" = "--h" ] ; then echo $helpstring; exit; fi ARGS=3 if [ $# -ne "$ARGS" ] ; then echo $helpstring; exit; fi eval $1 eval $2 eval $3 #echo $fpath $fmask $days; if [ "$fpath" = "" ] ; then echo $helpstring; exit; fi if [ "$fmask" = "" ] ; then echo $helpstring; exit; fi if [ "$days" = "" ] ; then echo $helpstring; exit; fi summa=0; summa=`find $fpath -name "$fmask" -mtime +$days -print | awk '{ print "ls -l " $0 }; ' | wc -l` find $fpath -name "$fmask" -mtime +$days -print | awk '{ print "rm " $0 }; ' | sh echo "Deleted " $summa ;