Работа с текстами Неправильно настроенные права доступа - одна из самых распространенных ошибок!
Вывод содержимого файла на экран выполняет команда cat. Также полезными являются head, которая выводит начало файла, и tail, которая выводит его конец. Head и tail понимают полезный параметр -n, указывающий, сколько строк вам надо вывести. Например "head -n 30 myfile.txt" выведет на экран первые 30 строк вашего файла. У команды tail есть еще один очень полезный параметр: -f, который выводит строки по мере их записи в файл. С помощью "tail -f errorlog", например, очень удобно в реальном времени отслеживать появление ошибок, да и вообще смотреть логи при тестировании чего-либо.
Одна из самых используемых в UNIX'e команд - это grep. Она позволяет выбрать только те строки, которые вас интересуют. Использовать ее очень удобно для обработки данных, выводимых другими командами - например, если вы хотите посмотреть все сообщения об открытии какой-то страницы в логе сервера, то можно просто написать "cat /var/log/httpd/access.log | grep mypage" (помните, что вертикальная черта передает выход одной команды на вход другой?). А если таких строк оказывается слишком много, то можно выход grep'а в свою очередь подать, например, на вход tail'а... У grep'а есть огромное количество параметров, разным способом влияющих на его поведение - очень советую почитать и поэкспериментировать, можно обнаружить много полезного. Кроме того, есть вариант этой команды egrep, который в запросах поиска понимает регулярные выражения, что тоже бывает очень удобно.
Просмотр логов - дело нужное!
Одним из самых распространенных текстовых редакторов в Юниксе является vi. В то же самое время, он является одним из наиболее сложных в освоении для пользователей Windows. На самом деле, сложного в нем ничего нет - надо просто понять, что у него два режима - командный и ввода текста. При старте vi запускается в командном режиме.
Использовать vi удобно в тех случаях, когда вам требуется немного подправить какой-то скрипт, страницу или файл конфигурации, лежащий на сервере. Это действительно проще, чем копировать файл к себе, редактировать, а потом снова выкладывать по FTP. Немножко потренируйтесь, и сами в этом убедитесь!
Например, вы заметили, что в файле написали "карова" вместо "корова". Запускаете vi: "vi myfile.htm". Теперь надо перейти к нужному месту (чтобы не листать всю страницу) "/карова" и нажать "ввод". Как только вы нажмете "слэш", курсор перепрыгнет вниз и будет ждать ввода строки для поиска. После того как вы ее введете и нажмете "ввод", редактор найдет первое вхождение этого слова и передвинет курсор туда. В принципе, никто не мешает вам просто прокручивать текст стрелками на клавиатуре, нажимая Ctrl-F (перемещение на страницу вперед) или Ctrl-B (на страницу вверх). Если вам потребуется найти не первое, а второе встречаемое в тексте слово "карова", то повторно текст можно и не вводить - достаточно нажать косую черту и enter. А если вместо косой черты использовать знак вопроса, то поиск будет идти не сверху вниз, а снизу вверх.
Теперь мы подводим курсор к букве "а", которую хотим заменить, и нажимаем "x" (икс) - эта команда удаляет символ справа от курсора. Можно также использовать "X" (большой икс), тогда удалится символ слева от курсора. Полезными являются также команды "dd" (удаление строки) и "D" (удаление от курсора до конца строки). Все это время мы оставались в командном режиме vi - то есть все символы, которые мы нажимали на клавиатуре, редактор считал командами, которые надо выполнить, а не текстом, который надо вставить в файл. Теперь пришла пора переключиться в режим редактирования.
Нажимаем "i" (начать ввод текста перед текущей позицией курсора). В принципе, могут пригодиться и другие команды, в зависимости от того, как написан ваш файл: "a" - начать ввод после курсора, "A" - ввод в конце текущей строки, "I" - ввод в начале текущей строки, "o" - новая строка ниже текущей, "O" - новая строка выше текущей. Но мы уже нажали "i" и теперь нам надо напечатать "о", вместо той "а", которую мы успешно удалили. Просто нажимаем на клавиатуре нужную букву и видим, как она вставилась в текст. Обратите внимание, что редактор все еще находится в режиме ввода текста, то есть можно продолжать печатать. Для того чтобы снова переключиться в командный режим, нажимаем кнопку "Esc" на клавиатуре. Сложность в том, что внешне командный и "редакторский" режимы не различаются. Поэтому, если вы запутались, то просто нажмите ескейп - если вы уже были в командном режиме, то редактор даст звуковой сигнал, а если были в режиме редактирования, то перейдете в командный, после чего никто не мешает снова нажать "i" и продолжать вводить текст.
Теперь отредактированный файл надо сохранить. Нажимаем ":" (двоеточие) и видим, как курсор перепрыгнул вниз, ожидая вашей команды. Нажимаем "w" и ввод. Все, файл сохранен! Но вы все еще в редакторе... Для выхода еще раз нажимаем двоеточие и "q". В принципе, можно было после первого двоеточия набрать "wq", тогда редактор бы сохранил файл и сразу закрылся (так обычно и делают). Здесь может возникнуть еще одна сложность - если вы отредактировали файл, а потом передумали его менять, то при попытке выйти из редактора он вам скажет, что, дескать, файл не сохранен, и откажется вас отпускать. Для того чтобы настоять на своем, можно после команды поставить восклицательный знак, тогда редактор поймет, что вы настроены серьезно, и не станет с вами спорить.
При использовании vi редактирование ведется не над самим файлом, а над его копией. И только когда все работы закончены, исходный файл замещается отредактированным. Это позволяет править даже большие скрипты, расположенные на работающем сервере, не опасаясь того, что во время редактирования пользователи будут получать сообщения об ошибке.
Работа с программами
vi уже отредактировали свои тексты?
Для запуска программы надо просто набрать ее имя, нужные параметры и нажать ввод. Сложность в том, что, пока такая программа работает, вы ничего делать не можете - надо ждать ее завершения. А если программа работает долго? Или вообще это сервер, который должен висеть и ждать запросов? Тоже не беда! Для того чтобы запустить программу в фоновом режиме, надо после нее поставить "&". Посмотреть список фоновых программ, которые вы запустили, можно командой "jobs". В полученном списке все команды будут пронумерованны, и если какую-то из них вы захотите "вытащить на поверхность", то можно сказать, например, "fg 1". Для того чтобы перевести в фон запущенную программу можно использовать "bg". Названия fg и bg - это от слов foreground и background, так что запоминаются легко. Но если программа уже работает, то команду "bg" ввести не получится, так что сначала надо будет сказать Ctrl-Z (после чего программа приостановится), а потом уже воспользоваться jobs и bg.
Однако у фоновых программ есть свои сложности - если вы выйдете из системы, то программа будет "убита". А в фоне часто запускаются такие программы, которые считают что-то довольно долго... Так что же - сидеть и ждать? Нет. Тут пригодится nohup, которая не даст убить программу при вашем отключении. То есть, написав "nohup myverylongprogram &", вы можете спокойно отключаться, а заглянув на сервер через часок-другой, посмотреть результаты работы программы.
Для того чтобы посмотреть, какие программы сейчас запущены, используется команда "ps". У нее довольно много параметров, указывающих, какими именно процессами вы интересуетесь, и в каком формате надо показывать результаты. Полезными параметрами являются "a" (показывать не только ваши процессы, но и других пользователей), "l" (выводит более подробную информацию о каждом процессе) и "w" (не обрезает строку на 80-м символе). Так как на сервере обычно выполняется очень много программ, то для отбора нужных записей удобно бывает перенаправить вывод в grep.
У каждого процесса есть PID - Process ID. Если вы решите какую-то задачу убить, то вам понадобится команда kill. В качестве параметра к ней указывается PID того процесса, к которому вы хотите kill применить. На самом деле, kill не убивает процесс, а передает ему какой-то сигнал, на который процессы реагируют. В частности, можно, например, заставить сервер перечитать файл конфигурации. Более подробно - в справке.
Учтите, что многие серверные программы не любят, когда им напрямую посылают команды, а содержат в своей поставке специальные управляющие утилиты. Например, для Apache это apachectl, для PostgreSQL - pg_ctl и т.д.
Чем занят сервер
Команда ps выводит список процессов, запущенных в данный момент времени. Причем список этот длинный, и для того чтобы дать понять, насколько загружен сервер, мало приспособлен. В отличие от него, команда top выводит и обновляет в реальном времени список запущенных процессов, причем сортирует их по степени использования процессорных ресурсов. То есть вы сразу можете увидеть, какая из программ является наиболее ресурсоемкой, и как себя чувствует сервер в целом - в верхней строке top выводит справочную информацию о состоянии сервера: загрузку памяти, файла подкачки и процессора, разбивку загрузки между системными и пользовательскими программами, количество выполняющихся процессов...
В дополнение к top удобно использовать vmstat и iostat - эти программы тоже выдают информацию о состоянии машины, но в более "техническом" формате... Впрочем, такой формат, пожалуй, даже более удобен для вычисления причин различных неприятностей - достаточно бывает посмотреть на динамику изменения того или иного параметра. О параметрах и выводимой этими программами информации почитайте в справке - вы сможете настроить их на отслеживание именно тех вещей, которые вызывают у вас подозрения...
Часто оказываются полезными команды df и du. Первая позволяет посмотреть, сколько места занято и свободно на дисках, а вторая показывает размер директорий вместе с поддиректориями (параметр -d указывает глубину вложенности, которую надо смотреть). Обе эти (и некоторые другие) утилиты лучше запускать с параметром -h - тогда они будут показывать размер в кило- мега- и т.п. байтах, а не в блоках. Например "du -h -d2 /usr".
Заключение
Вот, пожалуй, и все. Разумеется, я прекрасно понимаю, что этой статьи абсолютно недостаточно для более-менее полного знакомства с UNIX, но я ведь и не ставил перед собой такой задачи. Для этого существуют сотни очень толстых книжек... Я же всего лишь, как и обещал в начале статьи, постарался рассказать о самых базовых вещах, которые могут понадобиться любому веб-мастеру. Надеюсь, что это окажется кому-то полезным.
| Источник: Winsov.ru
Автор: Дмитрий Турецкий