Несколько полезных вещей при работе с ubuntu

Несколько полезных вещей при работе с ubuntu

В данной статье рассмотрим небольшой список команд, которые довольно часто используются при организации работы на ubuntu server.

Содержание

Создание и применение патча

Чтобы создать патч достаточно воспользоваться простой командой

1
diff -ruN [original] [patched] > [patch.file]

где

  • diff - операция построчного сравнения файлов
  • -ruN - дополнительные опции, означающие следующее
    -r, --recursive - рекурсивное сравнение любых найденных поддиректорий
  • -u, -U NUM, --unified[=NUM] - вывод NUM (по умолчанию 3) строк единого контекста. В патче это будет выглядеть следующим образом: сверху и снизу от модифицированной строки будет добавлено указанное количество строк незатронутого кода.
    -N, --new-file - обрабатывать отсутствующие файлы как пустые

  • [original] - оригинальный файл, "эталон" для сравнения
  • [patched] - измененный файл, с которым сравнивается оригинал
  • [patch.file] - имя патча с расширением .patch, в который будут записаны отличия

Для применения патча можно воспользоваться следующей командой

1
patch < [путь к пропатченному файлу]

Для двух данных команд существует достаточно большее количество опций, ознакомиться с которыми можно по ссылкам[1][2], приведенным в конце статьи.

Прогресс бар для импорта дампа базы данных

pv (Pipe Viewer) - это инструмент для мониторинга прогресса какой либо задачи. Может использоваться для визуальной индикации хода завершения того или иного процесса, как много он занимает времени, сколько времени уже прошло и сколько осталось.
Для установки Pipe Viewer нужно воспользоваться следующей командой

1
sudo apt-get install pv

В частности, замечательно подходит для мониторинга прогресса импорта базы данных (также может использоваться для индикации распаковки архивов и т.д.). Пример использования приведен ниже

1
pv [path to mysql dump] | mysql -u [mysql_user] -p [database name]

где

  • path to mysql dump - путь к дампу базы данных, включая имя самого дампа с расширением .sql
  • mysql_user - пользователь БД
  • database name - имя базы данных, куда планируется импортировать указанный дамп

В командной строке выглядит следующим образом
pv

Установка прав на папки и файлы

Установка прав осуществляется с помощью команды chmod[3]. Существует три варианта установки:

  1. chmod [OPTION]... MODE[,MODE]... FILE... - установка прав в символьном режиме. Символьный режим предполагает использование следующего формата [ugoa...][[+-=][perms...]...], где perms может быть некоторым количеством букв из строки rwxXst, либо одной буквой для формата ugo. Можно задавать несколько прав, разделяя из запятыми. С помощью комбинации букв ugoa можно определить круг пользователей, которым будут установлены определенные права. Расшифровка вышеупомянутой комбинации означает следующее:
    • u - владелец файла (user)
    • g - другие пользователи в файловой группе (group)
    • o - другие пользователи не в файловой группе (other)
    • a - все пользователи (all)

    Оператор "+" добавляет разрешение, "-" удаляет его, "=" добавляет разрешение, если его не было до этого, причем все остальные разрешения, не упомянутые после символа "=" буду удалены. Например, есть файл с разрешением на чтение, запись и выполнение для всех групп пользователей

    1
    
    -rwxrwxrwx 1 ubuntu-root ubuntu-root   13 Dec 12 08:08 file

    если изменить права на файл таким образом,

    1
    
    chmod ugo=r file1

    то все остальные права (на запись, на выполнение) будут удалены

    1
    
    -r--r--r-- 1 ubuntu-root ubuntu-root   13 Dec 12 08:08 file

    Буквы rwxXst означают следующее:

    • r - разрешение на чтение
    • w - разрешение на запись
    • x - разрешение на выполнение (или поиск директорий)
    • X - установка права на выполнение/поиск только если файл является директорией или уже имеет разрешение на выполнение/поиск для какой-либо группы пользователей(user, group, other)
    • s - установка пользователя или идентификатора группы на выполнение
    • t - установка флага на ограничение удаления
  2. chmod [OPTION]... OCTAL-MODE FILE... - установка прав в восьмеричном режиме. Данный вариант предполагает использование цифр (от 0 до 7), которые определяют доступ определенной категории пользователей.
      u g o ug uo go ugo
    Таблица соответствия символьного и восьмеричного представления
    r 0400 0040 0004 0440 0404 0044 0444
    w 0200 0020 0002 0220 0202 0022 0222
    x 0100 0010 0001 0110 0101 0011 0111
    rw 0600 0060 0006 0660 0606 0066 0666
    rx 0500 0050 0005 0550 0505 0055 0555
    rwx 0700 0070 0007 0770 0707 0077 0777
    wx 0300 0030 0003 0330 0303 0033 0333
  3. chmod [OPTION]... --reference=RFILE FILE... - установка прав с помощью файла-ссылки. В данном варианте можно установить права нужному файлу по примеру другого файла, т.е. скопировать полностью права с одного файла на другой. RFILE - это файл, с которого копируются права, а FILE - файл, который их получит.

Дополнительные опции [OPTION]:

  • -c, --changes - вывод подробной информации в случае, если были проведены изменения
  • -f, --silent, --quiet - подавление большинства сообщений об ошибках
  • -v, --verbose - выводить диагностические сообщения для каждого файла
  • --no-preserve-root - не обрабатывать '/' специально (по умолчанию)
  • --preserve-root - прерывать при рекурсивной обработке '/'
  • -R, --recursive - изменять права на файлы и директории рекурсивно
  • --help - отобразить подсказку и завершить задачу
  • --version - вывести информацию о версии и завершить задачу

Смена владельца/группы на папки и файлы

Для смены владельца папки/файла можно воспользоваться командой chown[4]. Существует два варианта использования данной команды:

  1. chown [OPTION]... [OWNER][:[GROUP]] FILE... - установка владельца и группы вручную
  2. chown [OPTION]... --reference=RFILE FILE... - установка владельца и группы с использованием файла-ссылки. Владелец и группа будут скопированы с файла указанного в RFILE и установлены на файл FILE.

Пример использования (установка владельца root и группы www-data)

1
sudo chown root:www-data example_file

Поиск в ubuntu

Поиск имени файла/папки можно осуществить с помощью команды find[5]

1
sudo find -name [имя файла]

Есть также обширный список опций, ознакомиться с которыми можно по ссылке приведенной в конце статьи.

Дополнительная информация по статье

  1. http://manpages.ubuntu.com/manpages/trusty/en/man1/diff.1.html - описание команды diff.
  2. http://manpages.ubuntu.com/manpages/trusty/en/man1/patch.1.html - описание команды patch.
  3. http://manpages.ubuntu.com/manpages/trusty/en/man1/chmod.1.html - описание команды chmod.
  4. http://manpages.ubuntu.com/manpages/trusty/en/man1/chown.1.html - описание команды chown.
  5. http://manpages.ubuntu.com/manpages/trusty/en/man1/find.1.html - описание команды find.
  6. Версии программных продуктов, используемых в статье: ubuntu server 14.04