При установке любой UNIX подобной операционной системы, вам рано или поздно прийдется столкнуться с работой в командной строке терминала. Что такое командная строка – это текстовый интерфейс, в котором команды выполняются путем ввода текстовых строк с клавиатуры. Другое название командной строки – консоль.
Консоль - это совершенно необходимый инструмент, причем не только для профессионалов, но и для обычных пользователей. Сегодня я постарался собрать полезные команды для работы во FreeBSD, но большинство из них будет работать и в других UNIX/Linux подобных операционных системах.
- Работа с каталогами;
- Работа с процессами;
- Работа со встроенной справкой;
- Работа с поиском;
- Работа с сообщениями;
- Работа с пользователями;
- Работа с портами;
- Работа с файлами;
- Работа с устройствами;
- Работа с правами доступа;
- Работа с сетевыми интерфейсами;
- Работа с системой
cd – переход по каталогам
cd / – перейти в корневой каталог
cd ~ – Переход в домашнюю директорию пользователя
cd .. – вернуться да одну директорию назад
cd ../.. – вернуться на несколько директорий назад
pwd – вывести полный путь к директории, в которой находитесь
ls – вывести содержимое директории
ls -la – вывести список всех файлов (обычно не выводятся файлы, имена которых начинаются с точки), а также режим доступа, количество ссылок на файл, имена владельца и группы, размер в байтах и время последней модификации
du - подсчет размера заданной папки и всех вложенных папок в битах
du -h - выводит на экран размер каждой вложенной папки в MB
du -hsx /var - показывает общий размер папки /var
du -h -d 1 /var - показывает размер всех папок в папке /var
du -hs - показывает общий размер папки и всех вложенных в MB
df - показывает информацию о объеме и занятом пространстве жесткого диска
df -h - Вывод информации о объеме и занятом пространстве жесткого диска в Mb
history – показывает последние введенные команды пользователя (их же можно посмотреть в домашнем каталоге пользователя , который называется history)
jobs – показывает список конвейеров и их статус, перечисляет запущенные в фоновом режиме процессы и объясняет выполняются они или остановлены. В квадратных скобках jobs сообщает номер задания, следующее число — PID процесса. Если у задания стоит знак +, то это «текущее задание»
fg - переводит конвейер выполняющийся в "фоновом режиме" (background) на передний план (foreground) "текущее задание"
fg [%n] - номер задания, которое необходимо перевести
logout – завершение текущего сеанса
source – используется для выполнения скрипта внутри текущей сессии shell-оболочки bash
test – осуществляющая математические проверки, проверки на существование файловых объектов и равенство строк, в зависимости от результата сравнения возвращает либо ноль, либо единицу (ложь)
umask – получение или установка маски режима создания файлов, она задает какие биты прав доступа НЕ надо ставить при создании файла. Если необходимо, чтобы у категории "все остальные" вообще не было никаких прав, а "группе допущенных" не ставился бит разрешающий запись, то umask должна выглядеть как 027
mkdir – создать паку.
mkdir папка1 папка2 – создать две папки в данной директории.
mkdir -p /tmp/папка1/папка2/папка3/папка4 – создать полный путь.
kill - завершает процессы или посылает им сигналы
kill -1 - посылается демонам для перечитывания ими конфигурационных файлов, а так же всем процессам-потомкам при уничтожении родителя.
kill -2 - прерывание процесса, он посылается процессу, когда в оболочке пользователь нажимает сочетание клавиш ctrl+С
kill -9 - уничтожение процесса,он не перехватывается приложением, больше того, оно даже ничего не узнаёт о том, что применён данный сигнал. Фактически это сигнал ядру о том, что данный процесс должен быть уничтожен.
killall - отправляет сигналы процессам, уничтожает процессы по имени
killall -d - выдает список процессов, которым будет послан указанный сигнал, либо предупреждение, если подходящих процессов не найдено
killall -v - отчёт о ходе выполнения программы killall
killall -u - пользователь посылает сигнал процессу, принадлежащий указанному пользователю
killall -t - терминал - посылает сигнал процессу, запущенному на указанном терминале
killall -l - выдает список сигналов операционной системы в виде символических имён
# killall -d ping nprocs 69 sig:15, cmd:ping, pid:69235, dev:0x5a uid:0 # killall -l HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM URG STOP TSTP CONT CHLD TTIN TTOU IO XCPU XFSZ VTALRM PROF WINCH INFO USR1 USR2
man [команда] – вывод мануала по заданной команде (по-умолчанию выводит только первую найденную страницу)
man -a [команда] -выводить все найденные страницы, соответствующие аргументу название (данной команде)
man -d - вместо страниц руководства, вывести отладочную информацию
man -f - аналог запуска программы whatis
man -h - краткая справка по программе man
man -k - аналог запуска программы apropos
man -w - вывести только местоположение файлов страницы руководства, сама страница при этом не выводится
для доступа к справочному руководству по команде kill используется:
man kill
для доступа ко 2-ому разделу справочного руководства по команде kill используется:
man 2 kill
manpath – путь для поиска справочного руководства
manpath -d - выводит дополнительную отладочную информацию
manpath -L - показывает список локализаций ( если существует ) для справочной системы
manpath -q - тихий режим, показывать только конечный результат
type – помогает отличить встроенную команду от обычной
# type jobs jobs is a shell builtin # type grep grep is /usr/bin/grep # type ps ps is aliased to `ps -waux'
whatis, apropos [ключевое слово] – искать в базе данных whatis. Утилита apropos ищет данные, соответствующие заданному критерию ключевое_слово, в файлах баз данных, содержащих короткие описания системных команд, и выводит результаты на стандартный вывод. Утилита whatis отображает только полностью совпавшие слова
which – ищет исполняемый файл программы в пользовательском пути поиска
which -a - выводит все найденные экземпляры исполняемых файлов для каждой команды, а не только первый из них
which -s - ничего не выводить, а только установить код возврата 0, если все исполняемые файлы были найдены, либо 1, если хотя бы один не был найден.
# which -a mysql /usr/local/bin/mysql # which -s mysql echo "mysql запущен" || echo "mysql не запущен" mysql запущен
whereis - ищет расположение бинарного файла, соответствующей ему страницы man и расположение каталога с исходным кодом для этой программы
whereis -m - показывает расположение страницу руководства
whereis -u - ищет "необычные'' записи
# whereis -m -u /usr/local/bin/* (отображает список приложений, для которых нет страниц помощи man) # cd `whereis -sq ls` (показывает расположение исходного кода)
finger – утилита поиска информации о пользователях, выводит пользователей работающих в данный момент на этом терминале
finger -l - производит многострочный вывод, отображающий всю информацию, описанную для опции -s, а также о домашнем каталоге пользователя, домашнем номере телефона, командной оболочке, наличии почты
find – поиск файлов и папок:
find / -name ports – поиск начиная с корневого каталога все файлы и папки с названием ports
find / -user user1 – поиск всех файлов и папок которые принадлежат пользователю user1
find /usr/local/etc/ -make “*.bin” – поиск файлов в заданной директории с расширением bin
find / -type f –atime +30 – поиск всех файлов в которые не использовались последний месяц
find / -type f –mtime -10 – поиск файлов которые были изменены не менее 10 дней назад
find / -name *.rpm -exec chmod 755 '{}' \; – найти все rpm файлы и выдать им права
find dir/ -type d -exec chmod 755 {} \; - в папке dir всем папкам заменить права доступа на 755
find dir/ -type f -exec chmod 644 {} \; - в папке dir всем файлам заменить права доступа на 644
which – поиск бинарных файлов
whereis – быстрый поиск папок и бинарных файлов.
make search name=”название” – удобный поиск портов, по их названию. При этом будут выведены все найденные варианты с описанием порта, полным названием, адресом, официальным сайтом разработчиков и зависимостями, необходимо находиться в директории /usr/ports/
locate - позволяет искать файлы в индексированной базе данных обновление базы данных производится программой locate.updatedb
wall – отправляет сообщение на все терминалы
wall [ message ]
wall ПРЕДУПРЕЖДЕНИЕ: Через 5 минут система будет перезагружена
write – отправить сообщение другому пользователю, позволяет общаться с другими пользователями, копируя строки с вашего терминала на их терминал
write пользователь [терминал]
talk – поговорить с другим пользователем (консольный чат, интересная вещь)
talk пользователь[@имя_узла] терминал
нажатие control-L `^L' приведёт к перерисовке экрана, нажатие control-D `^D' очистит обе части вашего экрана, а также отошлет этот символ удалённой стороне (где он будет просто отображён этим клиентом talk)
mesg - управляет доступом на запись для вашего терминала (если никакие опции не указаны, то mesg отображает текущий статус доступа к терминалу)
mesg y - разрешить другим пользователям доступ на запись к вашему терминалу
mesg n - запретить доступ на запись к вашему терминалу
adduser - создание учетной записи с помощью специального помощника
adduser -C - настройка помощника
rmuser - вызов помощника для удаления пользователя
rmuser user1 - удалить учетную запись user1
pw - позволяет быстро создать/отредактировать учетные записи
pw useradd user1 - быстрое создание учетной записи с именем user1. Этот пользователь не будет имень свой shell, домашнюю директорию, почтовый ящик, пароль и прочее. Что значит и работать под этой учетной записью будет невозможно.
pw useradd user1 -m - создание нового пользователя user1 с настройками по умолчанию и с автоматическим созданием скелетных файлов. (UID, /home/user1, /bin/sh/, /var/mail, eth).
pw useradd user1 -D user2 - создаем пользователя user1 используя настройки взятые у пользователя user2.
pw usermod user1 -s /usr/local/bin/bash - устанавливаем для пользователя user1 shell по умолчанию bash.
pw usermod user1 -d /home/users/user1 - установить домашнюю директорию пользователя.
pw usermod help - вывести весь список команд.
passwd - установить пароль.
passwd user1 - установить пароль пользователю user1 (если не user1 то должны быть в группе wheel)
env – В основном используется для изменения значений переменного окружения
env HOME=/usr/users/Kevin/notes – изменение домашней директории пользователя.
env LOGNAME=user2 - изменение имени пользователя.
env SHELL=/bin/ksh – изменить командный интерпретатор.
env MAIL=/usr/mail/user2 – изменить файл в который будет складываться почта.
users - Просмотреть список всех пользователей.
groups - Просмотреть список всех груп.
make - команда для упрощения работы с другими портами
make fetch - скачивает приложение(порт)
make fetch-recursive - скачать исходники для порта учитывая зависимости
make extract - распаковывает порт в рабочую директорию (обычно /usr/ports/category/portname/work)
make depends - перестроить зависимости
make patch - применить патчи к приложению
make build - собрать приложение из исходных тестов
make clean - включаем/выключаем опции и говорим принимать настройки по умолчанию (запрос настроек порта или зависимостей) установить и провести очистку от временных файлов
make install - установить порт
make deinstall - деинсталлировать приложение
make reinstall - переустановить приложение после удаления
make package - построить из порта package
make configure - конфигурирование порта, но не установка
make serach name="название" - поиск по названию порта
make serach key="ключевое слово" - поиск по ключевому слову
make update - Обновление портов (необходимо находиться в папке /usr/ports)
rehash - некоторые командные процессоры для ускорения поиска выполнимых файлов и команд кэшируют имена программ, доступных для вызова из каталогов, перечисленных в переменной окружения PATH, если используется один из таких командных процессоров, то перед использованием только что добавленных программ может понадобиться вызвать эту команду, при использовании в качестве оболочки bash то нужно воспользоваться командой hash -r
make config - выбор зависимостей для порта
make WITH_ИМЯОПЦИИ=yes WITHOUT_ИМЯОПЦИИ=yes BATCH=yes install $$
cp – копировать файл в директорию.
cp /usr/ports/* ~ – копировать все файлы, что есть в директории ports в домашнюю директорию пользователя
dd – копирует указанный входной файл в указанный выходной, совершая при необходимости преобразования
if=файл - задает входной файл
of=файл - задает выходной файл
skip=n - пропускает n входных блоков (используя указанный размер блока) перед началом копирования
bs=n - устанавливает размеры входного и выходного блока равными n байтов
count=n - копирует только n входных блоков
# dd if=/dev/ad0 of=/dev/null bs=1m (проверяет, что диск не содержит сбойных блоков) # dd if=1234 of=1235 (копирование из файла1234 в файл 1235)
ln - создает ссылки между файлами. По умолчанию делаются жесткие ссылки; при указании опции -s , делаются символьные (или мягкие) ссылки.
Жесткая ссылка является всего лишь именем какого-либо файла. (Таким образом, файл может иметь несколько имен. Он будет удален с диска только тогда, когда будет удалено последнее из его имен. Количество имен, которые имеет файл, показывает команда ls. Нет такого понятия, как настоящее имя: все имена имеют одинаковый статус.)
Мягкая ссылка (или символьная ссылка, или symlink) полностью отличается от жесткой ссылки: она является маленьким специальным файлом, который содержит путь к файлу. Таким образом, мягкая ссылка может указывать на файлы, которые находятся на других файловых системах (например, смонтированных по NFS с другой машины) и не нуждается в наличии того файла, на который она указывает. Когда происходит попытка доступа (с помощью системных вызовов open или stat ), ядро операционной системы заменяет ссылку на тот путь, который она содержит. (Однако, команда rm(1) и системный вызов unlink удаляют саму ссылку, а не файл, на который она указывает. Для чтения состояния символьной ссылки, а также имени файла, на который она указывает, используются системные вызовы lstat и readlink. Для других системных вызовов, которые зависят и различаются для разных операционных систем, может осуществляться работа как с самой символьной ссылкой, так и с файлом, на который она указывает.)
mv – переименовывание файла, или перемещение в другой каталог.
mv –i file1 /home/user1 – перемещение файла file1 в папку user1, при этом если файл user1 уже существует, нужно будет подтвердить замену.
rm – удалить указанный файл.
rm –rf – удалить директорию и все файлы которые находятся в ней
rmdir – удалить пустую директорию.
touch имя_файла – создать файл
file – вывод типа заданного файла
sum – вычисление контрольной суммы файла и его размера в блоках.
wc – подсчет количества строк в заданном файле
wc –c file -вывод только количества символов
wc –I file -вывод только количества строк
wc –w file - вывод только количества слов
cat имя_файла – вывод на экран содержимого файла.
cat file1 file2 – на экран по очереди будут выведены содержимое в начале file1, а затем (без пробелов) содержимое file2.
cat file1 file2 > file3 – содержимое file1 и file2 будет соединено и скопировано в файл file3.
cat file1 > > file2 – данные с file1 будут ДОПИСАНЫ в файл file2.
cat > file1 – будет создан новый файл file1 и в него будет записано все, что будет введено с клавиатуры.
head имя_файла – вывести только 10 первых строк файла (удобно для чтения логов)
more имя_файла – постраничный вывод файла на экран
tail имя_файла – вывести только 10 последних строк файла
tail -f имя_файла
chkgrp - проверяет файл /etc/group на ошибки, если все хорошо в ответ будет следующее:
# chkgrp /etc/group is fine
mount - команда для монтирования устройств
umount - команда для размонтирования устройств
mount_msdosfs -W koi2dos /dev/ad0s6 /mnt/resurce - монтирование устройства ad0s6 с файловой системой DOS в каталог /mnt/resurce
mount_ntfs -С UTF-8 /dev/ad0s1 /mnt/system - монтирование устройства ad0s1 в кодировке UTF-8 в каталог /mnt/system
mount -t cd9660 -C KOI8-R /dev/acd0 /cdrom - монтирование CD устройства в кодировке KOI8-R в каталог /cdrom
chmod – Изменение доступа к файлу. Выдача прав на чтение, редактирование, исполнение.
Права доступа в короткой форме записи задаются числом из трех цифр. Первая цифра - права владельца, вторая - права группы, третья - права остальных. Цифра 4 означает чтение (read), цифра 2 - запись (write), цифра 1 - исполнение (execute). Для задания прав доступа надо сложить соответствующие цифры.
chmod 777 /usr/local/www/index.html – разрешить полный доступ всем к файлу index.html
chmod 754 /usr/local/www/index.html – разрешить владельцу файла чтение, запись и исполнение, группе в которую он входит только чтение и выполнение, а всем остальным только чтение
chmod 700 /usr/local/www/index.html – разрешить все, только владельцу файла
chmod 740 /usr/local/www/index.html - разрешить все, только владельцу файла, а пользователям той же группы что и владелец файла только чтение.
chmod 714 /usr/local/www/index.html - разрешить все только владельцу файла, пользователям той же группы разрешено редактирование, а всем остальным только чтение.
chmod 700 /usr/local/www/* – владелец имеет все права на все файлы в папке.
chmod –R 700 /usr/local/www/* – владелец имеет все права на все файлы и все вложенные папки, и их содержимое.
Так же это может быть записано в символьной форме:
chmod u+x /usr/local/www/index.html – владелец файла теперь может исполнять этот файл.
chmod g-r /usr/local/www/index.html – группа в которой находится владелец файла, лишилась возможности читать этот файл
chmod o-w /usr/local/www/index.html – Все остальные лишились права на редактирование этого файла
chown – изменение владельца файла.
chmod aleh /usr/local/www/index.html – владельцем файла index.html стал пользователь aleh.
chmod –R aleh /usr/local/www/* – aleh стал владельцем всего, что находится в директории www и его поддиректорий
newgrp – изменение группы пользователя.
Работа с сетевыми интерфейсами
ifconfig – конфигурирование параметров сетевого интерфейса
ifconfig -a - показывает информацию обо всех сетевых интерфейсах, установленных в системе
ifconfig up/down - включает/отключает интерфейс
ifconfig debug/-debug - включает/отключает отладку
ifconfig dblevel уровень - устанавливает указанный уровень отладки
# ifconfig rl0 down
tty – выводит имя терминала соединённого со стандартным вводом
info coreutils tty - открывает полное руководство по команде
printenv – выводит все или часть переменных среды
info printenv - полное руководство по команде
hostname – устанавливает или показывает имя компьютера
info hostname - полное руководство по команде
netstat – показывает статус сети
netstat -a - показывать состояние всех сокетов; обычно сокеты, используемые серверными процессами, не показываются
netstat -r - показать таблицы маршрутизации. При использовании с опцией -s, показывает статистику маршрутизации
netstat -I интерфейс - выделить информацию об указанном интерфейсе в отдельный столбец
netstat -p имя_протокола - ограничить показ статистики или адресов управляющих блоков только протоколом с указанным именем_протокола
uname - сообщает информацию о данном компьютере и операционной системе
uname –r – архитектура
uname –m – версия ядра
halt – переход в «спящий режим».
reboot – перезагрузка системы [Ctrl+Alt+Del]
init 0 – весьма неправильное выключение компьютера
shutdown – выключение компьютера
shutdown –h час:минута – в какое время выключить компьютер
shutdown –c – отключить запланированное выключение компьютера
shutdown –r now – немедленная перезагрузка компьютера
shutdown –p now – немедленное выключение компьютера
logout – выход из учетной записи. [Ctrl+D]
vmstat – показывает статистическую информацию по виртуальной памяти
vmstat -m - показывает отчет об использовании динамической памяти ядра
vmstat -w - интервал времени между отчетами, если интервал не установлен, значение по умолчанию 1 секунда.
# vmstat -w 5 (будет каждые 5 секунд выводить отчет о происходящем в системе)
проверяем наличие библиотек в зависимостях определенного бинарника
# ldd `which bash` /usr/local/bin/bash: libncurses.so.7 => /lib/libncurses.so.7 (0x28114000) libintl.so.9 => /usr/local/lib/libintl.so.9 (0x28153000) libiconv.so.3 => /usr/local/lib/libiconv.so.3 (0x2815c000) libc.so.7 => /lib/libc.so.7 (0x28255000)
Для изменения стандартного времени таймера загрузчика с 10 секунд на одну, необходимо:
# echo 'autoboot_delay="1"' >> /boot/loader.conf
nohup — UNIX-утилита, запускающая указанную команду с игнорированием сигналов потери связи (hangup) и увеличением приоритета для планировщика задач на 5; таким образом, команда будет продолжать выполняться в фоновом режиме и после того, как пользователь выйдет из системы. nohup не переводит автоматически команду в фоновый режим; пользователь должен сделать это явным образом, завершив командную строку символом «&».
# nohup ping 1.2.3.4 > /dev/null &;
nice – понижение приоритета выполнение процесса(команды).
ps – вывод списка всех запущенных процессов.
ps - aux - вывод списка всех запущенных процессов.
sleep – задержка на указанное время. Остановиться на указанное ЧИСЛО секунд. СУФФИКС может принимать значения `s' для секунд (по умолчанию), `m' для минут, `h' для часов и `d' для дней. Хотя большинство реализаций требуют указания ЧИСЛА, как целого значения, здесь ЧИСЛО может быть числом с плавающей запятой.
[sleep 600; команда] – подождать 10 минут, прежде чем выполнить следующую команду.
usleep – задерживает выполнение операции на определенное количество микросекунд
top – вывод всех процессов удобным меню, которое обновляется через заданный промежуток времени.
watch – смотреть за другой терминальной линией
watch -W - разрешить запись наблюдаемым tty
watch -t - показать время с момента наблюдения за сеансом
control-G выход из watch
control-W очистить экран
date – системное время
# date 1203111413 (установит системную дату: 14 часов 13 минут 11 марта 2012 года)
cal – календарь на весь год
cal 2011 – календарь на 2011 год
cal –y – календарь на текущий год
ncal – календарь на месяц