Мар
2
2011

Полезные команды Linux

Так или иначе рано или поздно любой web-разработчик сталкивается с проблемой того, что «надо что-то подковырять на сервачке, где крутится проект». Само собой работая на локали, мы не задумываемся порой над проблемой распаковки архивов и тому подобных рутинных операций. Совсем другое дело, когда работа начинается с удаленный сервером, где крутится проект. В большинстве случаев на таких серверах расположена Unix-like OS без какого-либо user friendly интерфейса (в целях экономии ресурсов конечно же), а все действия с сервером осуществляются через ssh-туннель прямо в консоли. Приведу небольшой список операций, которые мне приходилось выполнять чаще всего.

Итак, погнали:

1. Работа с архивами
Часто приходится таскать с сервера дампы БД, или же наоборот заливать на сервер какие-либо данные. При работе с большим количеством файлов реккомендуется сжимать данные перед транспортировкой. Чаще всего используются архивы вида .tar.gz либо же .tar.bz2.

Начнем с архивов вида .tar.gz.
1.1.1 Просмотр содержимого архива .tar.gz

tar -ztf archive.tar.gz

либо же для постраничного вывода данных:

tar -ztf archive.tar.gz | less

1.1.2 Упаковка данных в архив .tar.gz

tar -czf archive.tar.gz foo bar

Параметры:
с ~ создать архив
f ~ является обязательной опцией. Без неё tar пытается использовать магнитную ленту вместо файла архива.
z ~ gzip
v ~ вывод информации о сжатии
1.1.3 Извлечение данных из архива .tar.gz

tar xvfz archive.tar.gz

Параметр x позволяет извлекать файлы из архива

Теперь аналогично для .tar.bz2:
1.2.1 Просмотр содержимого архива .tar.bz2

tar -jtf archive.tar.bz2

либо же

tar -jtf archive.tar.bz2 | less

1.2.2 Упаковка данных в архив .tar.bz2

tar cjf archive.tar.bz2 dir

1.2.3 Распаковка данных из архива .tar.bz2

tar xjf archive.tar.bz2

2. Удаление .svn
При работе с системой котроля версий Subversion при разворачивании рабочей копии создаются многочисленные скрытые директории .svn, хранящие информацию о произведенных коммитах, апдейтах да и вообще о ревизиях. Зачастую возникает задача удалить подобные директории, и сделать рабочую копию «чистой» от служебной информации. Производится данное действие в одну простую команду из корневой директории рабочей копии:

find . -name .svn|xargs rm -rf

либо же

rm -rf `find . -name .svn`

3. Установка даты и времени
Задача, возникающая не столь часто, но тем не менее:

date MMDDhhmmCCYY.ss

где MM — месяц, DD — день месяца, hh — часы, mm — минуты, CCYY — 4 цифры года, ss — секунды
круто, да? :)

4. Рекурсивный поиск строки в файлах
У нас есть большой развернутый проект, со множеством директорий и скриптов, и нам надо во всех файлах отыскать некую строку…
Делается это так:

grep -rl 'text' /path/

5. Запускаем задачу в фоне, работоспособную даже после закрытия сессии пользователем
Допустим мы работает с сервером через ssh, и нам надо запустить долгоиграющий скрипт, причем после запуска такого скрипта, сеанс ssh больше не требуется

nohup command_name &

например

nohup ping 127.0.0.1 &

nohup — UNIX-утилита, запускающая указанную команду с игнорированием сигналов потери связи (hangup) и увеличением приоритета для планировщика задач на 5; таким образом, команда будет продолжать выполняться в фоновом режиме и после того, как пользователь выйдет из системы. Кстати после выполнения данной команды в домашней директории будет создан файл nohup.out с результатом работы (туда производится вывод данных).

6. Вывод списка процессов
У вас тормозит система? Не хватает оперативной памяти? Используем следующие команды для мониторинга процессов.
Например отобразим список процессов, отсортированных по объему занимаемой памяти:

ps aux --sort -rss

или же отсортированных по загрузке процессора:

ps aux --sort -%cpu

Команда ps может выводить данные в любом формате. Для этого существует опция -o после которой должен идти список полей записанных через запятую которые программа ps будет выводить, например так:

ps ax -o pid,ppid,cputime,pcpu,pmem,vsz,rss,args

Список полей:
c или cmd имя команды
C или pcpu использование центрального процессара
g или pgrp идентификационный номер группы
o или session идентификационный номер сессии
p или pid идентификационный номер процесса
P или ppid идентификационный номер родительского процесса
s или size количество памяти в кило Байтах
t или tty номер терминала
T или start_time процессорное время с момента запуска
U или uid идентификационный номер пользователя
u или user имя пользователя
v или vsize использование Виртуальной памяти в кило Байтах
y или priority приоритет

7. Поиск самых больших файлов
Можно столкнуться с проблемой, когда надо удалить несколько больших файлов. Найти их в текущей директории можно с помощью команды:

ls -lSrh

А чтобы найти самые большие директории используем:

du -kx | egrep -v "\./.+/" | sort -n

8. Отображение примонтированных устройста и распределения места на них

df -h

Пожалуй остановлюсь на этом… И в кульцинации напишу банальную вещь — само собой всегда надо читать man-ы, если что-то хочешь сделать, но не уверен что получится в результате! А то вдруг ненароком рухнет половина системы! :)

Комментарии (1)

  • Возьму на заметку! Многие комманды делал, но другим способом, например удаление svn, можно делать одной лишь коммандой find, с помощью ключа -exec, ну и так далее :)

Оставить комментарий

CAPTCHA image


Поля, отмеченные * обязательны для заполнения


XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">