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 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 |
Метки
Рубрики
- Apache (1)
- Highload (4)
- JavaScript (1)
- Linux (3)
- MongoDB (1)
- MySQL (1)
- Perl (1)
- PHP (5)
- Python (5)
- Web-разработка (5)
- Алгоритмы (1)
- За жизнь (2)
- Конференции (6)
Возьму на заметку! Многие комманды делал, но другим способом, например удаление svn, можно делать одной лишь коммандой find, с помощью ключа -exec, ну и так далее