Утилиты gzip — gunzip
Пользователям всегда недостаточно дискового пространства, поэтому инструменты для сжатия данных всегда актуальны. Утилита позволяет осуществить преобразования файлов, после которых они будут занимать меньше дискового пространства.
paul@rhel55 ~$ ls -lh text.txt -rw-rw-r-- 1 paul paul 6.4M апр 17 13:11 text.txt paul@rhel55 ~$ gzip text.txt paul@rhel55 ~$ ls -lh text.txt.gz -rw-rw-r-- 1 paul paul 760K апр 17 13:11 text.txt.gz
Вы можете получить оригинал вашего файла, воспользовавшись утилитой .
paul@rhel55 ~$ gunzip text.txt.gz paul@rhel55 ~$ ls -lh text.txt -rw-rw-r-- 1 paul paul 6.4M апр 17 13:11 text.txt
Тип времени
1.1 time_t
На самом деле, длинное целое число, представляет время UTC (0: 0AM 0:05 1 января 1970 года, время эпохи системы Linux) к текущей системе вторичной разницы во времени, обычно используется для временных функций:
Используя функцию Ctime (), мы можем преобразовать функцию времени добраться до времени и даты нашего привычного использования и вернуть его в строку.
Кроме того, если вы хотите сравнить разницу времени между двумя раз, вы можете использовать функцию Difftime ():
1.2 struct tm
Структура TM называется взорванным временем в стандарте ANSI. Из определения следующего мы также можем увидеть, что время разлагается в очень подробную область.
Функции Gmtime () и LoceTime () могут преобразовать форматы данных Time_T в форматы TM. Разница состоит в том, что результатом преобразования GMTime () — это информация, соответствующая GMT (центральному часовым поясам), и результатом преобразования локального () функции — это информация о текущем часовом поясе.
Функция функции MKTime () точно противоположная, и она преобразует структуру TM в Time_T тип времени.
Функция ASCTIME () представляет собой время и дату представления структуры TM в наше привычное использование и возвращается в строку.
1.3 struct timeval
Структура Timeval может получить время точности уровня MS, которая определяется следующим образом:
Функция, используемая структурой Timeval: GetTimeOfDay () и SettimeOfDay ():
1.4 struct timespec
Структура TimeSpec может обеспечить более высокие значения времени прецизионного времени, а уровень NS определяется следующим образом:
Соответствующая функция: clock_getime ():
Если CLK_ID используется для разработки соответствующего типа часов, могут использоваться разные типы для получения различных значений времени, с четырьмя видами:
- CLOCK_REALTIME: Система — это в режиме реального времени, начиная с UTC, если время изменяется соответственно пользовательскими изменениями;
- CLOCK_MONOTONIC:Когда система запускает запуск, даже если пользователь меняет время;
- CLOCK_PROCESS_CPUTIME_ID:Этот процесс начинает выполнять время в текущую программу систем процессора;
- CLOCK_THREAD_CPUTIME_ID:Этот рычаг начинается со временем выполнения в текущей программной системе CPU.
Утилита date
Утилита может использоваться для вывода информации о дате, времени, часовом поясе, а также дополнительной информации.
paul@rhel55 ~$ date Sat Apr 17 12:44:30 CEST 2010
Форматирование строки с информацией о дате может быть изменено в соответствии с вашими предпочтениями. Обратитесь к странице руководства для получения информации о других параметрах форматирования.
paul@rhel55 ~$ date +'%A %d-%m-%Y' Суббота 17-04-2010
Во всех системах Unix для подсчета времени используется количество секунд, прошедших с 1969 года (первой секундой является первая секунда первого дня января 1970 года). Для вывода времени Unix в секундах может использоваться команда .
paul@rhel55 ~$ date +%s 1271501080
Когда же значение этого счетчика достигнет двух миллиардов секунд?
paul@rhel55 ~$ date -d '1970-01-01 + 2000000000 seconds' Ср май 18 03:33:20 MSK 2033
Преобразование типа времени
2.1 Время преобразования типа
Введенные соответствующие функции времени и соответствующие функции обработки, давайте сделаем простой сводку различных типов времени, как показано ниже:
Большинство функций на рисунке были описаны в разделе 1, где две функции используются в структурных типах TM и пользователь, определенные в типе структуры TM и определенным пользователем. Convert между форматом отображения.
Функция STRFTIME () преобразует формат TM в формат формата и поместите его в главный адрес, а формат общего формата:
- Микро-неделя
- % Полное имя
- Микрофин
- % B полное имя
- Строка времени даты% C Standard
- Опубликовать два числа в% c
- Первый день ежемесячного указа
- % D месяц / день / год
- % e в двух символьном домене, первый день ежемесячного представления
- % F лет — месяц — день
- Следующие два числа% г старых, используйте недельный год
- % G старше, используйте недельный год
- % h Короткопичное имя месяца
- % H 24 часа часа
- % I 12 часов часов
- % J разумно выразил первые несколько дней
- Месяц, указанный% m dec
- Минимальное количество минут, обозначенных% м
- % N новый символ линии
- % P Местный AM или PM эквивалентно отобразить
- % R 12 часов времени
- % R показывает часы и минуты: HH: мм
- % S Десятичное количество секунд
- % T горизонтальная вкладка
- % T отображение времени STATH: HH: MM: SS
- % U Еженедельный день, в понедельник первый день (стоимость от 0 до 6, понедельник 0)
- % U, Годилой неделя, поставить воскресенье в качестве первого дня (стоимость от 0 до 53)
- Процент недели, используя ежедневный год
- Выполнение% WECIMAL (значение от 0 до 6, воскресенье 0)
- Неделя% W, в понедельник в качестве первого дня (стоимость от 0 до 53)
- % X Стандартная строка даты
- % X Стандартная строка времени
- % Y не займет десять лет (стоимость от 0 до 99)
- % Y принимает десятичный год века
- % Z,% Z Название часового пояса, если имя часового пояса не может быть получено, верните пустые символы.
- %% процентов знака
Функция STRPTIME () выполняет противоположную работу, преобразуйте функцию Rentime () обратно в формат структуры TM. Это определяется следующим образом:
Параметры для работы с командой dd
В довольно большой набор дополнительных параметров для конфигурации настроек. Мы рассмотрим основные из них:
- — Установить размер блока (), который система будет считывать. Оптимально использовать 4–8 MB;
- — Установить, сколько байт нужно записывать за один раз;
- — Выбрать определенное число блоков для копирования. А чтобы обозначить их размер, подключают -опцию.
- — обозначить сколько байт нужно считать за раз. По умолчанию — 512 байт.
- — Обозначить сколько байт нужно записать за раз. По умолчанию — 512 байт.
- — Пропустить определенное количество байт в начале вывода;
- — Пропустить определенное количество байт в начале ввода;
- — Параметр, чтобы преобразовать файл. Параметр имеет собственные параметры. С их помощью, например, можно конвертировать систему кодов ASCII в EBCDIC и наоборот. В таблице указаны основные способы конвертации файлов.
| Параметр | Действие |
| Заменить буквы верхнего регистра на нижний | |
| Заменить буквы нижнего регистра на верхний | |
| Не создавать выходной файл | |
| Игнорировать ошибки ввода-вывода | |
| Поменять местами каждую пару байтов ввода | |
| Записывает данные выходного файла до окончания процесса | |
| Аналогично , но еще записываются метаданные | |
| Не обрезать выходной файл |
Назначение команды dd
Мы упоминали, что основная задача — обработка файлов. Но в Linux все устройства, порты, оперативная память и память с кодом процессов отображаются как файлы, а это значит, что над ними можно проводить операции в . Еще утилита позволяет осуществлять выборочное копирование файлов с диска. Например, переместить фрагмент файла определенного размера или пропустить несколько гигабайт. Эта функция также помогает считать файлы с поврежденного носителя, изменить расположение байтов в файле, создавать файлы фиксированного размера. Кроме этого в можно создать дополнительную копию загрузочного сектора жесткого диска или прочитать блоки из системных файлов.
Инсталляция iPerf
В большинстве случаев достаточно установить серверную часть приложения локально на «местный» сервер или удаленно на виртуальную машину, а затем подключиться к ней практически с любого компьютера, находящегося в общей ИТ-инфраструктуре. Программа бесплатная, имеет версии под платформы Linux и Windows.
Последние версии дистрибутивов доступны по адресам:
- Linux, Unix – https://github.com/esnet/iperf/releases
- Windows – https://sourceforge.net/projects/iperf2/files/
Инсталляция в Ubuntu и Debian осуществляется командой:
$ sudo apt install iperf3
В операционных системах CentOS и Fedora она выглядит иначе:
$ sudo dnf install iperf3
Перед первым запуском рекомендуется принудительно открыть необходимые порты в брандмауэре, чтобы утилита наверняка заработала. По умолчанию протоколы TCP и UDP используют порт 5201. Выполняется открытие командой:
$ firewall-cmd --permanent --add-port=5201/tcp $ firewall-cmd --permanent --add-port=5201/udp $ firewall-cmd –reload
Работать с программой придется в консоли, но особых затруднений это не вызывает, потому что синтаксис и перечень команд относительно просты. Например, запуск серверной части выполняется командой:
$ iperf –s
На экране появится сообщение Server listening on 5201. Оно означает, что сервер ждет запросов от клиентов (программа остается активной вплоть до перезагрузки операционной системы).
![]()
Клиентская часть, если речь идет о рабочих местах на Linux, работает аналогичным образом. Запускаемый файл всего один, различаются только префиксы и параметры вроде IP-адреса.
$ iperf -c 192.168.0.100
В приведенном примере программа будет обращаться к серверу, доступному по IP 192.168.0.100. После буквы -s или -c допускается ввод дополнительных команд, уточняющих задачу и позволяющих сохранить результаты в текстовом файле или вручную указать нестандартный порт.
Дата строкой
Опция -d позволяет работать на конкретную дату. Вы можете указать дату в виде удобочитаемой строки даты, как показано ниже:
date -d "2010-02-07 12:54:21"
Sun Feb 7 12:54:21 MSK 2010
Использование пользовательского форматирования:
date -d '16 Dec 1974' +'%A, %d %B %Y'
Monday, 16 December 1974
Строка даты также может принимать значения, такие как “tomorrow”, “friday”, “last friday” “next friday”, “next month”, “next week”… и т. д.
date -d "last week"
Sat May 25 14:31:42 MSK 2019
Вы также можете использовать параметр строки даты, чтобы показать местное время для разных часовых поясов. Например, чтобы показать местное время для 6:30 утра следующего понедельника по Московскому времени, введите:
date -d 'TZ="Europe/Moscow" 06:30 next Monday'
Mon Jun 10 06:30:00 MSK 2019
Синтаксис команды date
Программа может выполнятся от имени обычного пользователя. Стандартный синтаксис команды (квадратные скобки обозначают необязательное наличие):
date …
Ниже представлена таблица с часто применяемыми опциями для date.
| Опция | Длинный вариант | Значение |
|---|---|---|
| -d STRING | —date=STRING | Вывод даты по указанной строке (например ‘yesterday’, ‘tomorrow’, ‘last monday’). |
| -I | —iso-8601 | Вывод даты в формате ISO 8601. FMT по умолчанию содержит ‘date’. Также может содержать ‘hourse’, ‘minutes’, ‘seconds’, ‘ns’ для отображения соответствующих значений и часовой пояс относительно UTC рядом с датой. |
| —rfc-3339=FMT | Вывод даты в формате RFC 3339. FMT по умолчанию содержит ‘date’. Также может содержать ‘seconds’ и ‘ns’ для отображения секунд или наносекунд. | |
| -r FILE | —reference=FILE | Вывод даты последней модификации указанного файла в формате по умолчанию. |
| -u | —utc | Вывод UTC-даты |
Аргумент ФОРМАТ отвечает за форматирование вывода даты. Для его указания необходимо поставить знак «+» и написать нужную маску. Наиболее популярные форматы:
| Формат | Значение |
|---|---|
| %% | Знак процента |
| %a | День недели текущей локали в короткой форме («Чтв») |
| %A | День недели текущей локали в длинной форме («Четверг») |
| %b | Месяц года текущей локали в короткой форме в родительном падеже («янв») |
| %B | Месяц года текущей локали в длинной форме в родительном падеже («января») |
| %c | Дата и время текущей локали без указания часового пояса |
| %С | Первые две цифры текущего года |
| %d | Числовой день месяца с ведущим нулём |
| %D | Дата в формате %m/%d/%y |
| %e | День месяца; аналог %_d |
| %F | Дата в формате %Y-%m-%d |
| %h | Аналог %b |
| %H | Часы (00..23) |
| %I | Часы (01..12) |
| %j | День года (001..366) |
| %m | Месяц (01..12) |
| %M | Минуты (00..59) |
| %n | Новая строка |
| %q | Квартал года |
| %S | Секунды (00..59) |
| %t | Знак табуляции |
| %T | Время в формате %H:%M:%S |
| %u | Числовой день недели; 1 — понедельник |
| %x | Дата в локальном формате |
| %X | Время в локальном формате |
| %Z | Аббревиатура временной зоны |
Как конвертировать строки в datetime
в Python — это метод из модуля datetime. Вот его синтаксис:
Аргументы формата необязательные и являются строками. Предположим, нужно извлечь текущие дату и время:
Копировать
Результат:
Результат будет в формате ISO 8601, то есть YYYY-MM-DDTHH:MM:SS.mmmmmm — формат по умолчанию, что позволяет получать строки в едином формате.
Таблица форматов:
| Символ | Описание | Пример |
|---|---|---|
| %a | День недели, короткий вариант | Wed |
| %A | Будний день, полный вариант | Wednesday |
| %w | День недели числом 0-6, 0 — воскресенье | 3 |
| %d | День месяца 01-31 | 31 |
| %b | Название месяца, короткий вариант | Dec |
| %B | Название месяца, полное название | December |
| %m | Месяц числом 01-12 | 12 |
| %y | Год, короткий вариант, без века | 18 |
| %Y | Год, полный вариант | 2018 |
| %H | Час 00-23 | 17 |
| %I | Час 00-12 | 05 |
| %p | AM/PM | PM |
| %M | Минута 00-59 | 41 |
| %S | Секунда 00-59 | 08 |
| %f | Микросекунда 000000-999999 | 548513 |
| %z | Разница UTC | +0100 |
| %Z | Часовой пояс | CST |
| %j | День в году 001-366 | 365 |
| %U | Неделя числом в году, Воскресенье первый день недели, 00-53 | 52 |
| %W | Неделя числом в году, Понедельник первый день недели, 00-53 | 52 |
| %c | Локальная версия даты и времени | Mon Dec 31 17:41:00 2018 |
| %x | Локальная версия даты | 12/31/18 |
| %X | Локальная версия времени | 17:41:00 |
| %% | Символ “%” | % |
Копировать
Результат:
Примеры конвертации строки в объект datetime с помощью strptime
Предположим, что есть следующая строка с датой: «11/17/20 15:02:34», и ее нужно конвертировать в объект .
Копировать
Результат:
Даты могут быть записаны в разных форматах. Например, следующие даты отличаются лишь представлением:
- Friday, November 17, 2020;
- 11/17/20;
- 11–17–2020.
Вот как это работает:
Копировать
Результат будет одинаковым для всех форматов:
Практические примеры
Если строка представлена в формате «Oct 17 2020 9:00PM», то ее можно конвертировать следующим образом:
Копировать
Результат — .
Функцию можно использовать для конвертации строки в объект даты:
Копировать
Результат:
Команда time
Вызов консольной команды time
Если стоит задача измерить только время выполнения команды в Linux, то все что вам необходимо — команда time.
Синтаксис данной команды очень простой:
# help time
time: time pipeline
Report time consumed by pipeline's execution.
Execute PIPELINE and print a summary of the real time, user CPU time,
and system CPU time spent executing PIPELINE when it terminates.
Options:
-p print the timing summary in the portable Posix format
The value of the TIMEFORMAT variable is used as the output format.
Exit Status:
The return status is the return status of PIPELINE.
Пример вызова — замеряем время выполнения команды sleep 1:
# time sleep 1 real 0m1.003s user 0m0.001s sys 0m0.002s
С помощью ключа -p можно заставить команду выводить время выполнения в сжатом Posix формате:
# time -p sleep 1 real 1.00 user 0.00 sys 0.00
Другой time
Теперь разберемся, что же за команду мы выполняем:
# type time time is a shell keyword
Вот оно что! Оказывается, time, который мы вызывали — это внутренняя команда Shell.
А теперь попробуем сделать так:
# which time /usr/bin/time
# yum provides time
time-1.7-38.el6.x86_64 : A GNU utility for monitoring a program's use of system
: resources
А это уже внешняя команда, расположенная по пути: /usr/bin.
Попробуем вызвать ее:
# /usr/bin/time sleep 1 0.00user 0.00system 0:01.00elapsed 0%CPU (0avgtext+0avgdata 640maxresident)k 0inputs+0outputs (0major+200minor)pagefaults 0swaps
Параметры вызова внешней команды time
-
Перенаправление вывода статистики в файл, вместо вывода в стандартный поток ошибок. По умолчанию, существующий файл будет полностью перезаписан.
Применяется для сбора статистики из программ с пользовательским интерфейсом или выводящих информацию в поток ошибок.
- Дополняет существующий файл новой информацией. Применяется совместно с опциями или .
-
Используется шаблон FORMAT для вывода статистики.
Формат вывода по умолчанию:
Описание используемых шаблонов приведено в конце статьи.
- Вывод краткой помощи и завершение команды.
-
Выводит информацию по стандарту POSIX 1003.2:
real %e
user %U
sys %S
- Выводит расширенную статистику использования ресурсов с описанием каждого параметра.
- «Тихий режим» — подавление вывода команды, в том числе и ошибок.
- Вывести версию команды time и завершить выполнение.
Внешний time по умолчанию
Чтобы явно указать, какую из команд мы хотим вызвать, можно воспользоваться следующим способом:
# command time
Usage: time
command
# builtin time real 0m0.000s user 0m0.000s sys 0m0.000s
Для того, чтобы по умолчанию запускалась внешняя команда time достаточно выполнить:
# alias time='command time'
Это установит внешнюю команду time по умолчанию для текущей сессии.
Чтобы применить эти изменения для всех последующих сессий, добавьте команду alias в файл ~/.bashrc (изменения для текущего пользователя) или /etc/bash.bashrc (изменения затронут всех пользователей системы).
Просмотр всех запланированных задач при помощи atq
Вы можете использовать программу atq в качестве альтернативы команде at -l для просмотра списка запланированных или выполняющихся в данный момент задач, а единственным аргументом этой программы является -q для указания определенной очереди.
#atq 3 Thu Oct 18 10:25:00 2012 a linuxaria 4 Thu Oct 18 20:00:00 2012 a linuxaria 6 Fri Oct 19 00:00:00 2012 a linuxaria
На мой взгляд, вывод программы не особенно полезен, так как вы не можете посмотреть, какая команда выполняется в рамках задачи с идентификатором 3 или любой другой задачи.
Для того, чтобы увидеть, что будет выполняться в рамках задачи, вы можете использовать следующую команду:
at -c идентификатор_задачи
Она выведет длинный список переменных окружения для выполнения команды и саму команду:
#at -c 6
#!/bin/sh
# atrun uid=1000 gid=1000
# mail linuxaria 0
umask 22
SSH_AGENT_PID=1579; export SSH_AGENT_PID
XDG_SESSION_COOKIE=586bed7d66c5f3bf0810f6ce0000001c-1350495018.439467-8023144; export XDG_SESSION_COOKIE
WINDOWID=25165830; export WINDOWID
GNOME_KEYRING_CONTROL=/tmp/keyring-m0UVoj; export GNOME_KEYRING_CONTROL
USER=linuxaria; export USER
LIBGL_DRIVERS_PATH=/usr/lib/fglrx/dri:/usr/lib32/fglrx/dri; export LIBGL_DRIVERS_PATH
SSH_AUTH_SOCK=/tmp/ssh-DbbUjzXR1501/agent.1501; export SSH_AUTH_SOCK
USERNAME=riccio; export USERNAME
SESSION_MANAGER=local/mint-desktop:@/tmp/.ICE-unix/1501,unix/mint-desktop:/tmp/.ICE-unix/1501; export SESSION_MANAGER
DEFAULTS_PATH=/usr/share/gconf/default.default.path; export DEFAULTS_PATH
XDG_CONFIG_DIRS=/etc/xdg/xdg-default:/etc/xdg; export XDG_CONFIG_DIRS
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games; export PATH
DESKTOP_SESSION=default; export DESKTOP_SESSION
PWD=/tmp; export PWD
GNOME_KEYRING_PID=1424; export GNOME_KEYRING_PID
LANG=en_US.UTF-8; export LANG
MANDATORY_PATH=/usr/share/gconf/default.mandatory.path; export MANDATORY_PATH
MDM_XSERVER_LOCATION=local; export MDM_XSERVER_LOCATION
SHLVL=1; export SHLVL
HOME=/home/linuxaria; export HOME
LOGNAME=linuxaria; export LOGNAME
XDG_DATA_DIRS=/usr/share/default:/usr/local/share/:/usr/share/:/usr/share/mdm/; export XDG_DATA_DIRS
DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-QWgLeCbkps,guid=b1c32f270937311ee26524ff00000031; export DBUS_SESSION_BUS_ADDRESS
MDMSESSION=default; export MDMSESSION
WINDOWPATH=8; export WINDOWPATH
MDM_LANG=en_US.UTF-8; export MDM_LANG
XAUTHORITY=/home/linuxaria/.Xauthority; export XAUTHORITY
COLORTERM=gnome-terminal; export COLORTERM
cd /tmp || {
echo ‘Execution directory inaccessible’ >&2
exit 1
}
cp -a /project/source/* /backup/source/^C
Этот вывод позволяет гораздо лучше понять предназначение задачи.
Ограничение круга пользователей программы at
Файлы /etc/at.allow и /etc/at.deny устанавливают пользователей, которые могут планировать задачи для последующего исполнения при помощи программ at и batch. В качестве формата этих файлов используется простой список имен пользователей по одному в каждой строке. Использование пробелов в этих файлах не допускается.
Пользователь root может использовать программы at и batch при любых условиях.
В случае существования файла /etc/at.allow, на его основе устанавливается круг пользователей, которым разрешено планирование задач, но обычно в системах этого файла не существует.
Если файла /etc/at.allow не существует, проверяется файл /etc/at.deny, который обычно содержит длинный список «системных пользователей», таких как bin, backup, ftp или www-data, для которых планирование задач запрещено.





























