Linux как узнать время работы программы
Во всех операционных системах, в том числе и в Linux, термин 'команда' означает либо утилиту командной строки, либо определённую возможность, встроенную в командную оболочку системы. Тем не менее, для самих пользователей это различие не имеет особого значения. В конце концов, и те и другие команды терминала Linux вызываются одинаково. Вы вводите слово в вашем эмуляторе терминала и получаете результат выполнения команды.
Я уже писал о командах терминала Linux, но тогда затронул лишь несколько самых интересных, самых полезных команд, рассчитывая на то, что пользователь уже достаточно знаком с возможностями терминала. Но нужно сделать ещё одну статью, рассчитанную на новичков, тех, кто только делает свои первые шаги в освоении Linux.
И вот она. Её цель - собрать основные простые и сложные команды Linux, которые должен знать каждый пользователь, чтобы наиболее эффективно управлять своей системой. Для удобности запоминания опций команд я в скобках добавил слова, от которых они произошли - так намного проще, на себе проверено.
Это не значит, что я перечислю все команды, все перечислены тут - я постараюсь охватить всё самое полезное, то, что может пригодиться в повседневной жизни. Чтобы было удобнее читать, разделим этот список на категории команд по назначению. Большинство рассмотренных здесь утилит не требуют дополнительной установки, они будут предустановлены в любом дистрибутиве Linux, а если не будут, то их несложно найти в официальных репозиториях.
Команды Linux для управления файлами
Утилита для просмотра содержимого каталогов. По умолчанию показывает текущий каталог. Если в параметрах указать путь, то она перечислит содержимое конечного каталога. Полезные опции -l (List) и -a (All). Первая форматирует вывод в виде списка с более подробной информацией, а вторая включает показ скрытых файлов. Подробнее здесь.
2. cat
Позволяет перейти из текущего каталога в указанный. Если запустить без параметров - возвращает в домашний каталог. Вызов с двумя точками возвращает на уровень вверх относительно текущего каталога. Вызов с тире (cd -) возвращает к предыдущему каталогу. Более детально здесь.
4. pwd
Печатает на экран текущий каталог. Это может быть полезно, если ваша командная строка Linux не выводит такую информацию. Эта команда будет востребована в Bash программировании, где для получения ссылки на каталог выполняется скрипт. Более подробно в отдельной статье.
5. mkdir
Создание новых каталогов. Наиболее удобная опция -p (Parents), позволяет создать всю структуру подкаталогов одной командой, даже если они ещё не существуют. Подробнее о том как создать папку читайте в отдельной статье.
6. file
Команда file показывает тип файла. В Linux файлы не обязаны всегда иметь расширения для того, чтобы с ними работать. Поэтому пользователю иногда трудно определить, что за файл перед ним. Эта маленькая утилита решает проблему.
Копирование файлов и каталогов. Она не копирует каталоги по умолчанию рекурсивно (то есть все поддиректории и все файлы в поддиректориях), поэтому не забудьте добавить опцию -r (Recursive) или -a (Archive). Последняя включает режим сохранения атрибутов, владельца и временного штампа в дополнение к рекурсивному копированию.
Перемещение или переименование файлов и каталогов. Примечательно, что в Linux это одна и та же операция. Переименование - это перемещение файла в ту же папку с другим именем. Подробнее - здесь.
Удаляет файлы и папки. Очень полезная команда Linux: с её помощью вы можете убрать весь беспорядок. Если нужно рекурсивное удаление, используйте опцию -r. Однако будьте осторожны: конечно, для того чтобы повредить систему вам нужно будет серьёзно постараться, однако можно удалить собственные важные файлы. Rm удаляет файлы не в корзину, из которой потом всё можно будет восстановить, а полностью стирает. Действия оператора rm необратимы. Поверьте, ваши оправдания в духе "rm съела мою курсовую" никому не будут интересны. Подробнее в этой статье.
10. ln
Создает жёсткие или символические ссылки на файлы. Символические или программные ссылки - это что-то похожее на ярлыки в Windows. Они предоставляют удобный способ доступа к определённому файлу. Символические ссылки указывают на файл, но не имеют никаких метаданных. Жёсткие ссылки, в отличие от символических, указывают на физический адрес области диска, где хранятся данные файла.
11. chmod
Изменяет права доступа к файлу. Это чтение, запись и выполнение. Каждый пользователь может изменять права для своих файлов.
12. chown
Изменяет владельца файла. Только суперпользователь может изменять владельцев. Для рекурсивного изменения используйте опцию -R.
13. find
Поиск в файловой системе, файлах и папках. Это очень гибкая и мощная команда Linux не только из-за своих способностей ищейки, но и благодаря возможности выполнять произвольные команды для найденных файлов.
14. locate
В отличие от find, команда locate ведёт поиск в базе данных updatedb для шаблонов имён файлов. Эта база данных содержит снимок файловой системы, что позволяет искать очень быстро. Но этот поиск ненадёжен, потому что вы не можете быть уверены, что ничего не изменилось с момента последнего снимка. Подробнее - тут.
15. du
Показывает размер файла или каталога. Самые полезные опций: -h (Human), которая преобразует размеры файлов в легко читаемый формат, -s (Summarize), которая выводит минимум данных, и -d (Depth), устанавливающая глубину рекурсии по каталогам.
16. df
Анализатор дискового пространства. По умолчанию вывод достаточно подробный: перечислены все файловые системы, их размер, количество использованного и свободного пространства. Для удобства есть опция -h, делающая размеры легко читаемыми.
17. dd
Как сказано в официальном руководстве, это команда терминала для копирования и преобразования файлов. Не очень понятное описание, но это всё, что делает dd. Вы передаёте ей файл-источник, пункт назначения и пару дополнительных опций. Затем она делает копию одного файла в другой. Вы можете задать точный размер данных, которые нужно записать или скопировать. Работает утилита со всеми устройствами. Например, если вы хотите перезаписать жёсткий диск нулями из /dev/zero, можете сделать это. Также она часто используется для создания LiveUSB или гибридных ISO образов.
18 mount / umount
Это команды консоли Linux для подключения и отключения файловых систем Linux. Можно подключать всё: от USB накопителей, до ISO образов. И только у суперпользователя есть права для этого.
Linux команды консоли для работы с текстом
19. more / less
Это две простенькие команды терминала для просмотра длинных текстов, которые не вмещаются на одном экране. Представьте себе очень длинный вывод команды. Или вы вызвали cat для просмотра файла, и вашему эмулятору терминала потребовалось несколько секунд, чтобы прокрутить весь текст. Если ваш терминал не поддерживает прокрутки, вы можете сделать это с помощью less. Less новее, чем more и поддерживает больше опций, поэтому использовать more нет причин.
20. head / tail
Ещё одна пара, но здесь у каждой команды своя область применения. Утилита head выводит несколько первых строк из файла (голова), а tail выдает несколько последних строк (хвост). По умолчанию каждая утилита выводит десять строк. Но это можно изменить с помощью опции -n. Ещё один полезный параметр -f, это сокращение от follow (следовать). Утилита постоянно выводит изменения в файле на экран. Например, если вы хотите следить за лог файлом, вместо того, чтобы постоянно открывать и закрывать его, используйте команду tail -nf.
21. grep
Grep, как и другие инструменты Linux, делает одно действие, но делает его хорошо: она ищет текст по шаблону. По умолчанию она принимает стандартный ввод, но вы можете искать в файлах. Шаблон может быть строкой или регулярным выражением. Она может вывести как совпадающие, так и не совпадающие строки и их контекст. Каждый раз, когда вы выполняете команду, которая выдает очень много информации, не нужно анализировать всё вручную - пусть grep делает свою магию.
22. sort
Сортировка строк текста по различным критериям. Наиболее полезные опции: -n (Numeric), по числовому значению, и -r (Reverse), которая переворачивает вывод. Это может быть полезно для сортировки вывода du. Например, если хотите отсортировать файлы по размеру, просто соедините эти команды.
23. wc
Утилита командной строки Linux для подсчёта количества слов, строк, байт и символов. Подробнее тут.
24. diff
Показывает различия между двумя файлами в построчном сравнении. Причём выводятся только строки, в которых обнаружены отличия. Измененные строки отмечаются символом "с", удалнные - "d", а новые - "а". Подробнее - здесь.
Кстати, я подготовил ещё одну подробную статью, в которой описан именно просмотр содержимого текстового файла в Linux c помощью терминала.
Команды Linux для управления процессами
25. kill / xkill / pkill / killall
Служат для завершения процессов. Но они принимают различные параметры для идентификации процессов. Kill нужен PID процесса, xkill - достаточно кликнуть по окну, чтобы закрыть его, killall и pkill принимают имя процесса. Используйте ту, которая удобна в определенной ситуации.
26. ps / pgrep
Как уже говорилось, чтобы уничтожить процесс, нужен его идентификатор. Один из способов получить его, это утилита ps, которая печатает информацию о запущенных процессах. По умолчанию вывод очень длинный, поэтому используйте опцию -e, чтобы увидеть информацию об определённом процессе. Это только снимок состояния на момент вызова, и информация не будет обновляться. Команда ps с ключом aux выводит полную информацию о процессах. Pgrep работает следующим образом: вы задаете имя процесса, а утилита показывает его идентификатор. Подробнее о команде ps описано тут.
27. top / htop
Обе команды похожи, обе отображают процессы и могут быть использованы как консольные системные мониторы. Я рекомендую установить htop, если в вашем дистрибутиве он не поставляется по умолчанию, так как это улучшенная версия top. Вы сможете не только просматривать, но и контролировать процессы через его интерактивный интерфейс.
28. time
Время выполнения процесса. Это секундомер для выполнения программы. Полезно, если вам интересно, насколько сильно ваша реализация алгоритма отстает от стандартной. Но, несмотря на такое название, она не сообщит вам текущее время, используйте для этого команду date.
Команды Linux окружения пользователя
29. su / sudo
Su и sudo - это два способа выполнить одну и ту же задачу: запустить программу от имени другого пользователя. В зависимости от вашего дистрибутива вы, наверное, используете одну или другую. Но работают обе. Разница в том, что su переключает вас на другого пользователя, а sudo только выполняет команду от его имени. Поэтому использование sudo будет наиболее безопасным вариантом работы. Я писал про права суперпользователя в этой статье.
30. date
В отличие от time, делает именно то, чего вы от неё и ожидаете: выводит дату и время в стандартный вывод. Его можно форматировать в зависимости от ваших потребностей: вывести год, месяц, день, установить 12-ти или 24-ти часовой формат, получить наносекунды или номер недели. Например, date +"%j %V", выведет день в году и номер недели в формате ISO.
31. alias
Команда создаёт синонимы для других команд Linux. То есть вы можете делать новые команды или группы команд, а также переименовывать существующие. Это очень удобно для сокращения длинных команд, которые вы часто используете, или создания более понятных имен для команд, которые вы используете нечасто и не можете запомнить. Здесь собрано несколько полезных алиасов.
32. uname
Выводит некую основную информацию о системе. Без параметров она не покажет ничего полезного, кроме строчки Linux, но, если задать параметр -a (All), можно получить информацию о ядре, имени хоста и узнать архитектуру процессора.
33. uptime
Сообщает вам время работы системы. Не очень существенная информация, но может быть полезна для случайных вычислений или просто ради интереса, чтобы узнать, как давно был перезагружен сервер.
34. sleep
Вам, наверное, интересно как же её можно использовать. Даже не учитывая Bash-скриптинг, у неё есть свои преимущества. Например, если вы хотите выключить компьютер через определенный промежуток времени или использовать в качестве импровизированной тревоги.
Команды Linux для управления пользователями
35. useradd / userdel / usermod
Эти команды консоли Linux позволяют вам добавлять, удалять и изменять учетные записи пользователей. Скорее всего, вы не будете использовать их очень часто. Особенно если это домашний компьютер, и вы являетесь единственным пользователем. Управлять пользователями можно и с помощью графического интерфейса, но лучше знать об этих командах на всякий случай.
36. passwd
Эта команда позволяет изменить пароль учетной записи пользователя. Как суперпользователь вы можете сбросить пароли всех пользователей, даже несмотря на то, что не можете их увидеть. Хорошая практика безопасности - менять пароль почаще.
Linux команды для просмотра документации
37. man / whatis
Команда man открывает руководство по определённой команде. Для всех основных команд Linux есть man страницы. Whatis показывает, какие разделы руководств есть для данной команды.
38. whereis
Показывает полный путь к исполняемому файлу программы. Также может показать путь к исходникам, если они есть в системе.
Команды Linux для управления сетью
39. ip
Если список команд Linux для управления сетью вам кажется слишком коротким, скорее всего вы не знакомы с утилитой ip. В пакете net-tools содержится множество других утилит: ipconfig, netstat и прочие устаревшие, вроде iproute2. Всё это заменяет одна утилита - ip. Вы можете рассматривать её как швейцарский армейский нож для работы с сетью или как непонятную массу, но в любом случае за ней будущее. Просто смиритесь с этим.
40. ping
Ping - это ICMP ECHO_REQUEST дейтаграммы, но на самом деле это неважно. Важно то, что утилита ping может быть очень полезным диагностическим инструментом. Она поможет быстро проверить, подключены ли вы к маршрутизатору или к интернету, и дает кое-какое представление о качестве этой связи.
41. nethogs
Если у вас медленный интернет, то вам, наверное, было бы интересно знать, сколько трафика использует какая-либо программа в Linux или какая программа потребляет всю скорость. Теперь это можно сделать с помощью утилиты nethogs. Для того чтобы задать сетевой интерфейс используйте опцию -i.
42. traceroute
Это усовершенствованная версия ping. Мы можем увидеть не только полный маршрут сетевых пакетов, но и доступность узла, а также время доставки этих пакетов на каждый из узлов. Подробнее - тут.
Выводы
Мы рассмотрели основные команды Linux, которые могут пригодиться вам при повседневном использовании системы. Если вы считаете, что есть другие команды, которые нужно добавить в этот список, напишите в комментариях!
Вероятно, вы знаете время начала команды / процесса и как долго процесс выполняется в Unix-подобных системах.
Но когда вы его закончили и / или какое общее время, затраченное на выполнение команды / процесса?
В Unix-подобных системах есть утилита с именем «GNU time», специально предназначенная для этой цели.
Используя утилиту Time, мы можем легко измерить общее время выполнения команды или программы в операционных системах Linux.
Хорошо, что команда «Time» поставляется в большинстве дистрибутивов Linux, поэтому вам не нужно беспокоиться об установке.
Найти время выполнения команды или процесса в Linux
Чтобы измерить время выполнения команды / программы, просто запустите.
Вышеуказанные команды отображают общее время выполнения команды «ls».
Замените «ls» любой командой / процессом по вашему выбору, чтобы найти общее время выполнения.
- real – возвращает общее время, затраченное командой / программой,
- user – указывает время, затраченное программой в пользовательском режиме,
- sys – указывает время, затраченное программой в режиме ядра.
time и /usr/bin/time
Как вы могли заметить, в приведенных выше примерах мы использовали две команды «time» и «/usr/bin/time».
Итак, вы можете задаться вопросом, в чем разница между ними.
Сначала давайте посмотрим, что на самом деле «timeя» использует команду «type».
Для тех, кто не знает, команда Type используется для получения информации о команде Linux.
Как видите time – две штуки
- Ключевое слово, встроенное в оболочку BASH
- Исполняемый файл – /usr/bin/time
Поскольку ключевые слова оболочки имеют приоритет над исполняемыми файлами, когда вы просто запускаете runmimommand без полного пути, вы запускаете встроенную команду оболочки.
Но, когда вы запускаете /usr/bin/time, вы запускаете реальную программу времени GNU time.
Итак, чтобы получить доступ к реальной команде, вам может потребоваться указать ее явный путь.
Встроенное ключевое слово оболочки «time» доступно в большинстве оболочек, таких как BASH, ZSH, CSH, KSH, TCSH и т. д.
Ключевое слово оболочки «time» имеет меньше опций, чем исполняемые файлы.
Единственный вариант, который вы можете использовать в ключе «time», – это -p.
Теперь вы знаете, как найти общее время выполнения данной команды / процесса, используя команду «time».
Хотите узнать немного больше об утилите «GNU time»? Читайте дальше!
Краткое введение в программу «GNU time»
Программа GNU time запускает команду / программу с заданными аргументами и суммирует использование системных ресурсов в качестве стандартного вывода после завершения команды.
В отличие от ключевого слова time, программа GNU time не просто отображает время, используемое командой / процессом, но и другие ресурсы, такие как память, вызовы ввода-вывода и IPC.
Типичным синтаксисом команды Time является:
options в приведенном выше синтаксисе ссылаются на набор флагов, которые могут использоваться командой time для выполнения определенной функциональности.
Список доступных опций приведен ниже^
- -f, -format – Используйте этот параметр, чтобы указать формат вывода по вашему желанию.
- -p, -portability – Использовать переносимый формат вывода.
- -o file, -output = FILE – Записывает вывод в FILE вместо отображения в качестве стандартного вывода.
- -a, -append – Добавить файл в файл вместо перезаписывания.
- -v, -verbose – Этот параметр отображает подробное описание вывода утилиты «время».
- -Quiet – этот параметр запрещает утилиту времени «время» сообщать о статусе программы.
- При использовании программы «GNU time» без каких-либо параметров вы увидите вывод, как показано ниже.
Если вы запустите ту же команду с встроенным ключевым словом «time», результат будет немного другим:
В некоторых случаях вы можете записать вывод использования системного ресурса в файл, а не отображать его в терминале. Для этого используйте флаг -o, как показано ниже.
Как вы можете видеть на выходе, утилита Time не отображает результат. Потому что мы записываем вывод в файл с именем file.txt. Давайте посмотрим на этот файл:
Когда вы используете флаг -o, если нет файла с именем «file.txt», он будет создавать и записывать вывод в него.
Если файл.txt уже присутствует, он перезапишет его содержимое.
Вы также можете добавить вывод в файл, а не переписывать его, используя флаг -a.
Флаг -f позволяет пользователям управлять форматом вывода по своему усмотрению.
Скажем, например, следующая команда отображает вывод команды «ls» и показывает только пользователя, систему и общее время.
Помните, что встроенная команда «time» не поддерживает все функции программы GNU time.
Для получения дополнительной информации о утилите времени GNU см. Справочные страницы.
Anything in here will be replaced on browsers that support the canvas element
Passbolt – это менеджер паролей с открытым исходным кодом, который позволяет безопасно хранить и передавать учетные данные для входа на сайт, пароль роутера, пароль Wi-Fi и т.д. В этом руководстве будет показано, как установить Passbolt Community Edition (CE) на Ubuntu 22.04 с сервером базы данных PostgreSQL, который обычно быстрее, чем сервер базы данных MariaDB/MySQL. Особенности […]
socialscan – это инструмент командной строки для проверки использования электронной почты и имен пользователей социальных сетей на онлайн-платформах. Если задан адрес электронной почты или имя пользователя, socialscan возвращает, доступен ли он, занят или недействителен на онлайн-платформах. Другие подобные инструменты проверяют доступность имени пользователя, запрашивая страницу профиля рассматриваемого имени пользователя и на основе такой информации, как […]
Многие советы по безопасности, как правило, делятся на два лагеря: предназначенные для предприятий с постоянно работающими командами безопасности и инфраструктуры, или быстрая установка инструментов без контекста для одиночных веб-разработчиков. В этой статье мы пойдем по среднему пути и рассмотрим некоторые способы безопасного управления веб-сервером для различных распространенных сценариев развертывания. Цель – обеспечить лучшее понимание инструментария […]
Что такое afrog afrog – это высокопроизводительный, быстрый и стабильный, PoC настраиваемый инструмент для сканирования уязвимостей. PoC включает CVE, CNVD, пароль по умолчанию, утечку информации, идентификацию фингерпринтов, несанкционированный доступ, произвольное чтение файлов, выполнение команд и т.д. Он помогает специалистам по сетевой безопасности быстро проверять и своевременно устранять уязвимости. Особенности Основан на ядре xray, но не […]
Краткое руководство по сканированию портов Сканирование портов – это враждебная техника, часто используемая специалистами по тестированию на проникновение и хакерами для сканирования компьютеров, подключенных к Интернету, и определения того, какие приложения или службы прослушивают сеть, обычно для проведения таргетированных атак. Как правило программное обеспечение безопасности обнаруживает активное сканирование портов и отмечает его как потенциальную угрозу. […]
Обзоры
В этой статье мы рассмотрим 20 команд мониторинга Linux, которые вы должны знать как системный администратор / системный администратор Linux / DevOps / SRE.
Вступление
Если вы работаете системным администратором / администратором Linux / DevOps / SRE, то, скорее всего, вам придется решать проблемы, связанные с производительностью, в среде Linux.
Давайте рассмотрим некоторые из наиболее часто используемых утилит командной строки Linux для диагностики проблем, связанных с сетью и производительностью.
1. Top
2. vmstat
Команда vmstat – это утилита Linux для отображения статистики, связанной с потреблением памяти, использования диска и другой системной информацией.
vmstat не должен присутствовать в вашей системе Linux, но не беспокойтесь.
Мы можем легко установить пакет «sysstat»
3. iostat
Команда iostat на Linux позволяет отслеживать статистику использования ЦП и ввода-вывода ( I/O) для всех дисков и файловых систем.
Команды iostat полезны для изменения конфигурации системы, чтобы лучше сбалансировать нагрузку ввода-вывода между физическими дисками.
Эта команда в основном используется системными администраторами Linux.
4. iostat -d
Команда iostat -d используется для мониторинга загрузки устройств ввода / вывода системы, отслеживая время активности устройств в зависимости от их средней скорости передачи данных.
Команда iostat -d используется для отображения отчетов об использовании устройств.
5. lsof
Задача команды lsof – «перечислить открытые файлы» в системе.
Открытый файл не означает pdf или текстовый файл, он включает файлы на диске или каналы, используемые процессами в фоновом режиме.
Вывод:3
6. tcpdump
Tcpdump – это инструмент, который используется для анализа пакетов TCP / IP.
Эта команда обычно используется для анализа трафика в Linux, а также во многих других операционных системах.
tcpdump позволяет прослушивать весь входящий и исходящий трафик со всех интерфейсов.
Что еще более важно, он может фильтровать трафик по интерфейсу, хосту, месту назначения или хосту-источнику, типу трафика и многим другим критериям.
8. netstat -s
Команда netstat -s вывеодит сетевую статистику, такую как общее количество полученных и переданных пакетов по типу протокола и так далее.
Чтобы вывести статистику только избранных протоколов, таких как TCP или UDP, используйте соответствующие параметры, такие как t и u, вместе с параметром s.
9. ps -ef | grep PID
Команда ps выводит четыре столбца информации для двух минимальных процессов, запущенных в текущей оболочке.
Параметр -e указывает ps отображать все процессы.
Anything in here will be replaced on browsers that support the canvas element
Passbolt – это менеджер паролей с открытым исходным кодом, который позволяет безопасно хранить и передавать учетные данные для входа на сайт, пароль роутера, пароль Wi-Fi и т.д. В этом руководстве будет показано, как установить Passbolt Community Edition (CE) на Ubuntu 22.04 с сервером базы данных PostgreSQL, который обычно быстрее, чем сервер базы данных MariaDB/MySQL. Особенности […]
socialscan – это инструмент командной строки для проверки использования электронной почты и имен пользователей социальных сетей на онлайн-платформах. Если задан адрес электронной почты или имя пользователя, socialscan возвращает, доступен ли он, занят или недействителен на онлайн-платформах. Другие подобные инструменты проверяют доступность имени пользователя, запрашивая страницу профиля рассматриваемого имени пользователя и на основе такой информации, как […]
Многие советы по безопасности, как правило, делятся на два лагеря: предназначенные для предприятий с постоянно работающими командами безопасности и инфраструктуры, или быстрая установка инструментов без контекста для одиночных веб-разработчиков. В этой статье мы пойдем по среднему пути и рассмотрим некоторые способы безопасного управления веб-сервером для различных распространенных сценариев развертывания. Цель – обеспечить лучшее понимание инструментария […]
Что такое afrog afrog – это высокопроизводительный, быстрый и стабильный, PoC настраиваемый инструмент для сканирования уязвимостей. PoC включает CVE, CNVD, пароль по умолчанию, утечку информации, идентификацию фингерпринтов, несанкционированный доступ, произвольное чтение файлов, выполнение команд и т.д. Он помогает специалистам по сетевой безопасности быстро проверять и своевременно устранять уязвимости. Особенности Основан на ядре xray, но не […]
Краткое руководство по сканированию портов Сканирование портов – это враждебная техника, часто используемая специалистами по тестированию на проникновение и хакерами для сканирования компьютеров, подключенных к Интернету, и определения того, какие приложения или службы прослушивают сеть, обычно для проведения таргетированных атак. Как правило программное обеспечение безопасности обнаруживает активное сканирование портов и отмечает его как потенциальную угрозу. […]
В некоторых случаях при работе с терминалом Linux нужно знать время выполнения тех или иных команд, например, для отслеживания проблем. Для этой задачи существует утилита time. Конкретно про нее и пойдет речь в нашей статье.
Мы расскажем, как работает команда time Linux и какой у неё синтаксис. Затем перейдем к описанию доступных опций. А в конце упомянем несколько популярных сценариев использования.
Синтаксис и опции time
Утилита запускает заданную пользователем команду и после этого выводит информацию о времени ее выполнения. У нее достаточно удобный синтаксис. Сначала нужно указать опции для time, затем – выполняемую команду, а в конце – аргументы к ней:
$ time опции команда_для_выполнения аргументы
Рассмотрим список доступных опций:
- -o, --output – сохранять данные в выбранный файл вместо стандартного вывода в терминале. При этом старые данные в файле будут перезаписаны.
- -a, --append – добавлять в файл новую информацию, а не перезаписывает старую. Опция полезна только в сочетании с -o.
- -f, --format – выбрать определенный формат вывода. Подробности о форматировании описаны в следующем разделе статьи.
- -p, --profitably – использовать формат вывода данных для соответствия со стандартом POSIX 1003.2.
- -v, --verbose – выводить подробную информацию о выполнении программы.
- -V, --version – вывести версию утилиты time.
В этом списке представлены только основные опции. Получить подробную информацию можно командой:
Опции форматирования вывода
По умолчанию time может выводить информацию в не комфортном для чтения виде.
По этой причине для нее желательно задавать опции форматирования вывода, о которых и пойдет сейчас речь. Всего их три штуки. В качестве примера для их рассмотрения возьмем команду apt-get update.
Опция -v используется для вывода подробной информации:
sudo time -v apt-get update
Опция -p нужна для вывода данных в формате, соответствующем стандарту POSIX 1003.2:
sudo time -p apt-get update
А с помощью опции -f или --format детально задается форматирование вывода. Этот момент стоит рассмотреть более детально.
Строка с данными о форматировании, как правило, включает в себя спецификаторы ресурсов и обычный текст. Знак % обозначает, что следующий после него символ следует воспринимать как спецификатор ресурсов.
С помощью знака \ задается разделительный символ. Есть три доступных варианта: \t – табуляция, \n – новая строка, \\ – обратная косая черта. Если после \ указать любой другой символ, то в терминале появится вопросительный знак (?), который говорит об ошибке ввода.
Остальной текст в строке формата полностью копируется в поле вывода. При этом time всегда начинает вывод данных с новой строки после информации о выполнении самой команды.
Рассмотрим доступные спецификаторы ресурсов:
Это были все спецификаторы ресурсов, использующиеся при выборе форматирования для time. Теперь перейдем к сценариям использования команды.
Как узнать время выполнения команды Linux
Мы рассмотрим три основных примера, которые довольно часто используются: вывод данных в терминал, вывод в отдельный файл и вывод с форматированием.
1. Вывод времени выполнения в терминал
В качестве примера мы возьмем команду sleep, которая делает паузу на указанное время. Это будет очень наглядный пример, ведь время паузы будет совпадать с временем выполнения команды в time:
Еще хотелось бы упомянуть ситуацию, когда выполнение команды переводит окно терминала в другой режим, например, при запуске редактора nano для изменения файла /home/root-user/script.txt:
time nano /home/root-user/scripts/main_script.txt
После завершения работы редактора вы увидите общее время, в течение которого вы работали с файлом.
Информацию о результатах работы команды time можно сохранить в отдельный файл с помощью опции -o. В таком случае в окне терминала они выводиться не будут. Возьмем для примера извлечение содержимого архива ~/data/data.tar.gz с помощью утилиты tar. Информацию о времени выполнения сохраним в новом файле ~/data/data_time.txt. Еще добавим к команде опцию -v, чтобы получить подробные сведения:
sudo time -v -o ~/data/data_time.txt tar -xvf ~/data/data.tar.gz -C ~/data
3. Вывод с форматированием
Исходный вариант форматирования данных подходит далеко не во всех случаях. В качестве примера мы возьмем ранее использованную команду для извлечения архива, но не станем сохранять данные в файл. При ее выполнении нам интересно:
- Информация о самой команде и заданных опциях – это спецификатор %C.
- Загруженность CPU – спецификатор %P.
- Общее время выполнения в секундах – спецификатор %e.
Для комфортного восприятия каждый пункт будет выводиться в отдельной строке с помощью разделителя \n. При этом они все будут подписаны понятным образом.
Вот как выглядит итоговый вариант команды:
sudo time -f "Информация о команде:\n%C\nЗагруженность CPU: %P\nВремя выполнения: %e сек" tar -xvf ~/data/data.tar.gz -C ~/data
Обратите внимание, что весь текст, кроме символов после % и \, полностью отображается в терминале. Это удобный способ разметки
Выводы
В рамках данной статьи вы узнали как работает команда time Linux, которая следит за выполнением заданной команды и выдает подробную информацию о времени выполнения и т. д. Основная сложность при ее использовании – понимание опций для форматирования вывода. Но если в них разобраться, то больше никаких проблем не возникнет. Для вашего удобства мы упомянули конкретные примеры использования.
Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна.
Терминал Linux очень гибкий и полезный инструмент. С помощью него можно сделать что угодно и во многих случаях даже намного эффективнее чем в графическом интерфейсе. Команды можно объединять между собой, перенаправлять вывод одной команды, на вход другой, комбинировать их различным образом.
Это делает их применение еще более эффективным. В сегодняшней статье я хочу поделиться несколькими полезными командами linux, которые я открыл для себя во время использования этой операционной системы и которыми до сих пор пользуюсь для автоматизации рутинных действий.
В качестве командной оболочки используется самая популярная - bash. Также для некоторых задач нам понадобится демон планирования выполнения задач cron.
Некоторые из этих команд упрощают выполнение той или иной задачи, некоторые полностью выполняют нужные действия за пользователя. Возможно, не все они будут вам полезны, так как, некоторые команды нужны только веб-мастерам, другие системным администраторам, а еще одни обычным домашним пользователям. Но давайте перейдем к списку полезные команды для линукс.
Создание папок в терминале
Для создания папки в терминале используется команда mkdir. Вот так она выглядит:
Но не все знают о ее дополнительных возможностях. Чтобы создать несколько вложенных папок используйте команду p:
mkdir -p /mnt/foo/bar/
Создать несколько папок за один раз:
Создать папку и перейти в нее:
mkdir /home/foo/doc/bar && cd $_
Кстати, синтаксис фигурных скобок поддерживают и другие команды для Linux терминала.
Ожидать завершения команды и выключить компьютер
Это скорее не команда, а небольшая стандартная функция оболочки Bash, о которой не все знают. Иногда нам нужно оставить на выполнение какую-нибудь долго работающую утилиту, например, обновление системы, а самим куда-то отойти. И при этом мы хотим чтобы после завершения работы утилиты компьютер автоматически выключился.
Можно просто объединить команды с помощью стандартного синтаксиса Bash. Для объединения используются символы && и ||. Первый - выполнить другую команду если первая завершилась успешно, второй если первая завершилась ошибкой.
Например, обновить систему и если все хорошо выключить PC:
apt update && apt upgrade && shutdown -h now
Или выключить компьютер если обновление не удалось:
apt update && apt upgrade || shutdown -h now
Или выключить независимо от того произошла ошибка или нет:
apt update && apt upgrade ; shutdown -h now
Здесь приведена команда обновления Ubuntu, но в других дистрибутивах нужно заменить эту команду на свою.
Повторить последнюю команду
Если мы уже начали говорить о возможностях Bash пойдем дальше. Символ !! означает выполнить последнюю команду. Часто ли у вас случалось такое, что вы набираете команду нажимаете Enter и понимаете, что для ее работы нужно было использовать sudo? Тогда приходиться набирать ту же команду только уже правильно. Но можно пойти другим путем, выполнить:
Кроме символа !! В Bash есть еще несколько указателей на команды:
- !^ — первый аргумент предыдущей команды;
- !$ — последний аргумент предыдущей команды;
- !* — все аргументы предыдущей команды;
- !-2 — вторая с конца команда;
- *— содержимое текущего каталога.
А вот так можно сохранить последнюю выполненную команду в скрипт:
Ещё о подобных возможностях Bash можно почитать здесь.
Вызвать последнюю команду которая начиналась с символов
И еще о возможностях Bash. Например, вы помните что подключались в последний раз к определенному узлу по SSH, и теперь вам нужно подключиться к нему снова. Чтобы не вводить полностью команду можно набрать знак "!" и символы с которых начиналась команда:
Будет выполнена последняя команда, которая начиналась на ssh.
Посмотреть ip адрес
Часто возникает необходимость быстро узнать ip адрес своей машины. Для этого есть легко запоминающаяся команда, использующая curl и сайт ifconfig.me:
Форматирование вывода
Многие команды Linux выводят данные, разделяя столбцы пробелами. Одна из них mount. И естественно, в этом выводе трудно что-либо разобрать. Для разделения столбцов табуляциями используйте утилиту column:
mount | column -t
Динамический просмотр лога
Допустим, есть у нас лог файл в который пишется определенная информация и мы хотим видеть все изменения сразу, на лету. Тогда используйте команду tail с опцией -f:
tail -f /адрес/лог/файла
Будет выведено 8 последних строк из лога файла, а затем они будут постоянно обновляться.
Очистить терминал
Вывод команд, если во время их разработки были допущены некоторые ошибки может сломать форматирование строк терминала. Или просто может понадобится стереть всю лишнюю информацию. Для этого есть аж две полезные команды linux, первая:
Первая только переводит курсор вверх страницы, вторая добавляет несколько пустых строк. Ещё можно сбросить терминал нажав сочетание клавиш Ctrl+L.
Подключение RAM диска
Если вам нужно немного дискового пространства с высокой скоростью работы, в Linux можно легко подключить немного оперативной памяти в корневую файловую систему:
mount -t tmpfs tmpfs /mnt -o size=1024m
В папку /mnt будет подключен RAM диск размером 1024 мегабайт.
Узнать архитектуру системы
Этой простой командой можно быстро узнать разрядность системы:
Открыть файл на определенной строке
Это не команда, а просто малоизвестная функция консольных редакторов. Очень полезная для программистов. Вот, например, сообщает программа, что у вас ошибка в 55 строке, вместо того чтобы самому искать ту сроку просто набираете:
nano +55 /sourcefile
vim +55 /sourcefile
И оказываетесь сразу на нужной строке.
Время выполнения команды
Хотите узнать сколько времени выполняется та или иная команда? Просто добавьте перед ней вызов утилиты time. Например:
Эту команду также можно использовать в качестве секундомера. Просто выполните:
А затем нажмите Ctrl+D когда нужно будет узнать сколько времени прошло.
Автоматическое удаление старых файлов
Все мы часто качаем файлы из интернета, это торренты, фильмы, музыка и т д. И все это со временем накапливается в папке загрузки если ненужное вовремя не удалять, а нужное не перемещать в другие папки. Тогда папка загрузок начинает напоминать огромную свалку где вообще нереально что-то найти. У себя я всегда время от времени сортировал и удалял файлы, но когда видел такое у знакомых брался за голову. Есть способ упростить очистку папки загрузок.
Утилита find позволяет находить все файлы, созданные позже определенной даты и выполнять с ними нужное действие. Все нужные файлы будем вовремя рассортировывать и перемещать по папкам назначения, а все что останутся в загрузках будут через два дня автоматически удаляться. Знание что файлы будут удалены заставит их вовремя переместить куда нужно.
Вот так выглядит сама команда:
find /home/user/Downloads/ -type f -mtime +180 -exec 'rm -f <>'
Если не хотите полностью удалять файлы можно перемещать их в корзину:
find /home/user/Downloads/ -type f -mtime +180 -exec 'mv <> ~/.Trash'
Подробнее о работе find можно почитать тут. Для полной автоматизации добавим выполнение этой команды каждый день в расписание cron:
0 0 * * * find /home/user/Downloads/ -type f -mtime +180 -exec 'rm -f <>'
Теперь давние файлы будут автоматически удаляться каждый день.
Убить все процессы из консоли
Если у вас небольшое количество оперативной памяти на компьютере и вы любите открывать очень много вкладок в Chromium, то программа а вместе с ней и окружение рабочего стола могут прочно зависать. Браузер создает для каждой вкладки отдельный процесс, поэтому пока планировщик памяти ядра поймет кто виноват в сбое и что нужно делать уйдет много времени, а пытаться убить каждую вкладку по отдельности очень долгое занятие. Есть команда, с помощью которой можно из терминала одним махом закрыть все вкладки:
ps aux | grep chromium | awk '' | xargs kill -TERM
Или намного проще:
Здесь мы получаем список всех процессов в ps, выбираем из них chromium, потом отбираем второй столбец, то есть PID, и с помощью xargs вызываем kill для каждой вкладки. Точно таким же способом можно уничтожить любое приложение создающее много процессов.
Создать пустой файл
Иногда возникает необходимость создать пустой файл, например, когда он нужен для конфигурации какого-либо сервиса или чего-то тому подобного. Для этого можно воспользоваться командой touch:
Для создания файла определённого размера надо использовать команду dd:
dd if=/dev/zero of=/путь/к/файлу bs=1M count=размер_в_мегабайтах
Завершение
Вот и подошли к концу наш список. Если вы знаете другие полезные команды Linux, поделитесь ими в комментариях!
Читайте также: