Часто используемые Linux команды

Автор Itworkroom

В данном материале подобраны ценные команды и выражения, часто используемые Linux команды.

Информация полезна для системных администраторов и специалистов работающих с *nix.
Файловые команды

ls – список файлов и каталогов в текущей директории

ls -al – форматированный список со скрытыми каталогами и файлами

чтобы посмотреть список файлов и их дату модификации:
find . -printf «%T@ %Tc %p\n» | sort -n

  • %Tk: File’s last modification time in the format specified by k.
  • @: seconds since Jan. 1, 1970, 00:00 GMT, with fractional part.
  • c: locale’s date and time (Sat Nov 04 12:02:33 EST 1989).
  • %p: File’s name.

cd /dir – перейти в директорию /dir
cd – сменить на домашний каталог, аналог: cd ~/
pwd – показать текущий каталог
mkdir dir – создать каталог dir

показать разницу файлов в указанных директория:

diff -r dir1 dir2 — покажет файлы существующие только в dir1 and и только существующие в dir2
diff -r dir1 dir2 | grep dir1 — покажет файлы существующие только в dir1
diff -r dir1 dir2 | grep dir1 | awk ‘{print $4}’ > difference1.txt
echo > /dir/file — пресечь файл до нулевой длинны
rm file – удалить file
rm -r dir – удалить каталог dir
rm -f file – удалить форсированно file
rm -rf dir – удалить форсированно каталог dir *
cp file1 file2 – скопировать file1 в file2
cp -r dir1 dir2 – скопировать dir1 в dir2; создаст каталог dir2, если он не существует

примеры:
скопировать файл: cp -rp /dir/file /to/dir/
скопировать директорию dir целиком: cp -rp /dir /to/dir/
скопировать только содержимое директории dir: cp -rp /dir/ /to/dir/

mv file1 file2 – переименовать или переместить file1 в file2. если file2 существующий каталог – переместить file1 в каталог file2

ln -s file link – создать символическую ссылку link к файлу file

touch file – создать file
cat > file – направить стандартный ввод в file
more file – вывести содержимое file
head file – вывести первые 10 строк file

tail file – вывести последние 10 строк file (просмотр последних записей в лог-файл: tail -f /var/log/maillog)

tail -f file – вывести содержимое file по мере роста, начинает с последних 10 строк
sed — потоковый текстовый редактор

примеры:
простая замена: sed -e ‘s|это|на это|g’ /в/файле.txt > /записать/в/файл.txt
замена с экранированем: /usr/bin/sed -e «s|old\[‘SYSTEM’\]|new|g» /input.txt > /output.txt
Несколько замен объединены в одном файле subst.sed: sed -f subst.sed inputFileName > outputFileName

содержание файла subst.sed приблизительно может быть таким:

s|это|на это|g
s|old\[‘SYSTEM’\]|new|g
s|GLOBALS\[‘SYSTEM’\]\[‘config’\]\[‘1’\]|GLOBALS\[‘SYSTEM’\]\[‘config’\]\[‘server_name’\]|g

В свою очередь для замены в множестве файлов можно использовать скрипт:
# ************ Change Variables Here ***********
echo «*****************************************»
echo » Search and Replace in Files Version 1.1 »
echo «*****************************************»

for file in $(find . -type f -name ‘*.php’)
do
sed -f /usr/home/replace.txt $file > tempfile
mv tempfile $file
echo «Modified: » $file
done

echo «*********** All Right **************»

запускается так:
cd /usr/dir
/bin/bash /usr/dir/replace
find — утилита поиска файлов

примеры использования часто используемых Linux команд:

нахождение php-файлов в которые внесены изменения:
c расширением php в прошедшие 7 дней (от текущего дня): find /dir/ -type f -mtime -7 -name ‘*.php’ -print
измененные файлы и директории за последние 10 секунд: find /dir/ -cmin +1 -cmin -10
измененные между 2500 и 2800 минутами тому назад: find -cmin +2500  -cmin -2800
c расширением php между 15 и 17 днями тому назад (от текущего дня): find /dir/ -type f -mtime +15 -mtime -17 -name ‘*.php’ -print
найти и удалить все файлы в директории, кроме файла file.tgz: find /dir/ ! -name ‘file.tgz’ -delete
найти и удалить все файлы в директории, кроме файлов file1.txt и file2.txt: find /dir/ -type f ! -name ‘file1.txt’ ! -name ‘file2.txt’ -delete
узнать количество файлов в директории: find /dir/ -type f | wc -l
найти и удалить директории в глубине уровня 3, относительно указанной find /dir/name/path/ -mindepth 3 -maxdepth 3 -type d | xargs rm -rf

Управление процессами

ps – вывести ваши текущие активные процессы (примеры: ps ax uf | more или ps ax -u | more)

top – показать все запущенные процессы
kill pid – убить процесс с id pid (kill -s 9 SID — чтобы наверняка)
killall proc – убить все процессы с именем proc *
bg – список остановленных и фоновых задач; продолжить выполнение остановленной задачи в фоне
fg – выносит на передний план последние задачи
fg n – вынести задачу n на передний план
kill -STOP 7727 – поставить на паузу процесс 7727. The eyes will stop moving when they are paused.
kill -CONT 7727 – снять с паузы процесс 7727

Права доступа на файлы

chmod octal file – сменить права file на octal, раздельно для пользователя, группы и для всех добавлением:

  • 4 – чтение (r)
  • 2 – запись (w)
  • 1 – исполнение (x)

Примеры:
chmod 777 – чтение, запись, исполнение для всех
chmod 755 – rwx для владельца, rx для группы и остальных.

примеры:

изменяем владельца и группу для директории: chown R yapro:www /usr/home/dir
изменяем владельца и группу всем дочерним директориям и файлам: chown -v -R yapro:www /usr/home/dir/
изменение прав доступа к файлам и папкам, рекурсивно: chmod -R 775 /home/dir/
использование вместе с командой поиска:
выставляем права директориям: find /home/dir/ -type d -exec chmod 775 {} \;
выставляем права php-файлам: find /home/dir/ -type f -name ‘*.php’ -exec chmod 644 {} \;

Дополнительные опции: man chmod.

SSH
ssh user@host – подключится к host как user
ssh -p port user@host – подключится к host на порт port как user
ssh-copy-id user@host – добавить ваш ключ на host для user чтобы включить логин без пароля и по ключам

Поиск

locate file – найти все файлы с именем file
grep pattern files – искать pattern в files
grep -r pattern dir – искать рекурсивно pattern в dir
например найти в текущей директории и вывести пути к файлам: grep -r -l mytext ./*

command | grep pattern – искать pattern в выводе command

примеры:

grep -rl ‘text’ /dir/ — рекурсивный поиск строки во всех файлах директории
grep -rl —include=»*.php» «my text» /dir/ — поиск только по файлам с расширением .php
grep -rl ‘text’ /path/ | grep -v ‘\.svn’ — поиск строки в файлах, расширение которых не заканчивается на .svn
grep pattern file.txt —поиск pattern в файле file.txt, с выводом полностью совпавшей строкой
grep -o pattern file.txt  —поиск pattern в файле file.txt и вывод только совпавшего куска строки
grep -i pattern file.txt  —игнорирование регистра при поиске
grep -bn pattern file.txt   —показать строку (-n) и столбец (-b), где был найден pattern
grep -v pattern file.txt   —инверсия поиска (найдет все строки, которые не совпадают с шаблоном pattern)
grep -A 3 pattern file.txt   —вывод дополнительных трех строк, после совпавшей
grep -B 3 pattern file.txt   —вывод дополнительных трех строк, перед совпавшей
grep -C 3 pattern file.txt  —вывод три дополнительные строки перед и после совпавшей
grep -r pattern $HOME  —рекурсивный поиск по директории $HOME и всем вложенным
grep -c pattern file.txt  —подсчет совпадений
grep -L pattern *.txt  —вывести список txt-файлов, которые не содержат pattern
grep -l pattern *.txt  —вывести список txt-файлов, которые содержат pattern
grep -w pattern file.txt  —совпадение только с полным словом pattern
grep -f patterns.txt file.txt —поиск по нескольким pattern из файла patterns.txt, шаблоны разделяются новой строкой
grep -I pattern file.txt  —игнорирование бинарных файлов
grep -v -f file2 file1 > file3  —вывод строк, которые есть в file1 и нет в file2
grep -in -e ‘python’ `find -type f`  —рекурсивный поиск файлов, содержащих слово python с выводом номера строки и совпадений
grep -inc -e ‘test’ `find -type f` | grep -v :0  —рекурсивный поиск файлов, содержащих слово python с выводом количества совпадений
grep . *.py  —вывод содержимого всех py-файлов, предваряя каждую строку именем файла
grep «Http404″ apps/**/*.py  —рекурсивный поиск упоминаний Http404 в директории apps в py-файлах
tail -n12345 /var/log/apache2/other_vhosts_access.log | grep -v » 200 » | grep -v » 304 » — посмотреть неудачные ответы на запросы
tr -d «\r» < file_from_dos > newfile — вырежет возврат каретки

Системная информация

date – вывести текущую дату и время ( синтаксис: yy]mm]dd]HH]MM[.ss] )
пример установки времени на сервере (секунды вводить не обязательно):
date 1230100509.45 # в Linux и Solaris; или date 0912301005.45 # в FreeBSD
cal – вывести календарь на текущий месяц
uptime – показать текущий uptime
w – показать пользователей онлайн
whoami – имя, под которым вы вошли
finger user – показать информацию о user
uname -a – показать информацию о ядре
cat /proc/version — более подробно
cat /proc/cpuinfo – информация CPU
cat /proc/meminfo – информация о памяти
man command – показать мануал для command
df – показать информацию о использовании дисков
du – вывести вес текущей директории

примеры:

вес указанной директории: du -shc /dir
вес директории указанной директории : du -shc /dir/*
размеры всех всех дочерних директории и файлов: du -hc /dir
размеры всех директории (включая скрытые) в текущей директории: du -sch .[!.]* * |sort -h
free – использование памяти и swap
whereis app – возможное расположение программы app
which app – какая app будет запущена по умолчанию

Архивация

tar cf file.tar dir – создать tar-архив с именем file.tar содержащий files
tar xf file.tar – распаковать file.tar
tar czf file.tar.gz dir – создать архив tar с сжатием Gzip
tar czf ~/архив.tar.gz /путь/к/архивируемому/каталогу/
/bin/tar -czf archive.tar.gz dir dir2/image.gif — запаковать сразу из двух мест
tar xzf file.tar.gz – распаковать tar с Gzip
tar cjf file.tar.bz2 – создать архив tar с сжатием Bzip2
tar xjf file.tar.bz2 – распаковать tar с Bzip2
gzip file – сжать file и переименовать в file.gz
gzip -d file.gz – разжать file.gz в file

примеры:

распаковываем zip-архив: unzip /home/file.zip -d /home/to/dir
создание tar-архива: tar -cz  -f «file.tgz» «/home/dir/»

распаковка tar-архива: tar -xz —directory=»/usr/home/dir/» -f «file.tgz»

Жесткий диск

измерить скорость жесткого диска: dd if=/dev/zero of=testfile bs=64k count=16k conv=fdatasync

Сеть

whois domain – получить информацию whois для domain
dig domain – получить DNS информацию domain
dig -x host – реверсивно искать host
netstat — показать содержимое различных структур данных, связанных с сетью

например:
netstat -an | less
или посмотрим открытые порты:
sudo lsof -i
sudo netstat -lptu
sudo netstat -tulpn
wget file – скачать file

wget -c file – продолжить остановленную закачку

примеры :

скачивание файла с ftp-сервера: ftp http://site.ru/file.tgz
скачивание файла по http: wget http://site.ru/file.tgz

Почта

отправить содержимое файла на почту:
cat /dir/file | mail -s «my config» user@site.ru
отправить прикрепленный файл на почту:
mail -a /dir/file -s «my config» user@site.ru
и программа mail даст возможность ввести сообщение, написали — нажимайте Ctrl+D и письмо отправится.

MySQL

mysqlcheck -u root -pPWD DB_NAME TABLE_NAME -r — починить таблицу
mysqlcheck -u root -pPWD DB_NAME TABLE_NAME -o — оптимизировать таблицу

Клавиатурные сочетания

Ctrl+C – завершить текущую команду
Ctrl+Z – остановить текущую команду, продолжить с fg на переднем плане или bg в фоне
Ctrl+D – тоже самое, что и exit
Ctrl+W – удалить одно слово в текущей строке
Ctrl+U – удалить строку
!! – повторить последнюю команду
exit – выйти

PS Для того чтобы расскрасить консоль:
$ nano ~/.bashrc
добавьте:
PS1=’\[\033[01;31m\]\u\[\033[01;33m\]@\[\033[01;36m\]\h \[\033[01;33m\]\w \[\033[01;35m\]\$ \[\033[00m\]’
иногда, вместо файла .bashrc используется файл .bash_profile

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *