- IgorKa — Информационный ресурс
- Временные параметры файла — atime mtime ctime
- File Timestamps — mtime, ctime and atime in Linux
- mtime – Last modification time
- ctime – last change time
- atime – last access time
- Show mtime, atime and ctime with stat command
- Conclusion
- File Timestamps in Linux: atime, mtime, ctime Explained
- What are Linux timestamps?
- atime
- mtime
- ctime
- How to see the timestamps of a file?
- What are the usage of file timestamps?
- How to know when a file was originally created?
- Команда find в Linux
- Основная информация о Find
- Основные параметры команды find
- Критерии
- Примеры использования
- 1. Поиск всех файлов
- 2. Поиск файлов в определенной папке
- 3. Ограничение глубины поиска
- 4. Инвертирование шаблона
- 5. Несколько критериев
- 6. Несколько каталогов
- 7. Поиск скрытых файлов
- 8. Поиск по разрешениям
- 9. Поиск файлов в группах и пользователях
- 10. Поиск по дате модификации
- 11. Поиск файлов по размеру
- 12. Поиск пустых файлов и папок
- 13. Действия с найденными файлами
- Выводы
IgorKa — Информационный ресурс
Немного обо всем и все о немногом, или практический опыт системного администратора.
Пн | Вт | Ср | Чт | Пт | Сб | Вс |
---|---|---|---|---|---|---|
« Июнь | Авг » | |||||
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Временные параметры файла — atime mtime ctime
Решил я сегодня уточнить значения параметров mtime, atime и ctime, которые присутствуют у каждого файла в Linux. На первый взгляд все вроде понятно:
mtime — modification time — время последней модификации (изменения) файла
atime — access time — время последнего доступа к файлу
ctime — change time — время последнего изменения атрибутов файла (данных которые хранятся в inode-области)
Но когда начинаешь спрашивать себя когда меняются эти параметры, в частности какие команды меняют их, а какие нет, и проверять на практике ответы на свои же вопросы — все не так очевидно. Особенно для каталогов, которые тоже являются разновидностью файлов в Linux. Вот решил поделится некоторыми экспериментами в этом направлении. Эксперименты проводил конечно же в своей Ubuntu 9.10 c файловой системой ext4. У ext4, кстати появилось два дополнительных временных параметра — время создания файла linux и время удаления файла linux, но о них в самом конце.
До начала своих экспериментов я предполагал следующее.
Параметр mtime — изменяется после того как изменяется содержимое файла. Например, открыли файл командой nano, дописали что-то, сохранили, закрыли, и время mtime поменялось. А как в случае с каталогами? Предполагал, что время модификации для каталога изменяется когда в каталоге создаются/удаляются файлы и подкаталоги.
Параметр atime — изменяется тогда, когда мы получаем доступ к файлу, например, той же командой nano мы получаем доступ к файлу. Значит atime должен измениться. Команды cat, less, tail выводят содержимое файла, значит мы получаем доступ к нему, но не меняем его поэтому mtime меняться не должен. А как быть с каталогами? Когда меняется atime для каталога? Тут я даже не знал, что себе ответить.
Параметр ctime — самый простой для моего понимания. Изменяется тогда когда изменяются права доступа к файлу (командой chmod), изменяется владелец файла (команда chown), создаются жесткие ссылки на файл (команда ln). В этом плане различий с каталогом нет, с той лишь разницей, что на каталоги нельзя создавать жесткие ссылки.
Вот примерно так я понимал значение временных параметров файлов. Практические эксперименты несколько расширили и изменили мои познания. Во время экспериментов проверку временных параметров проверял командой stat, которая показывает сразу все три временных атрибута. Если использовать команду ls, то по умолчанию она выводит время mtime — ls -l. ls -lu (или ls –time=atime|access|use) — выводит время atime — время последнего доступа к файлу. ls -lc (или ls –time=ctime|status) — выводит время ctime — время последнего изменения атрибутов.
Начал с параметра atime. Создаю в домашнем каталоге, каталог timetest и проверяю его временные метки командой stat (вывод результата сокращаю для экономии места):
Сейчас все временные метку равны друг другу так и должно быть. Далее захожу в каталог timetest и создаю пустой файл test, после чего проверяю временные метки каталога:
Источник
File Timestamps — mtime, ctime and atime in Linux
When you are working with directory and files, you may need to know about Linux file timestamps such as change time (ctime), access time (atime), and modification time (mtime). Linux files, directories, sockets have three different timestamps – mtime, ctime and atime.
Probably when working in Linux you have get answers to following questions:
When was the last date of file content modified? When was the file last opened/accessed ? When the properties of the file such as ownership, permissions last changed?
Here, we are going to explain each file timestamps in Linux in detail.
mtime – Last modification time
Mtime or modification time is the time of the last change to the file contents. ‘Modification’ means something inside the file was amended or deleted, or new data was added.
Use the -l (long listing) option with ls, you can see the modified timestamp.
ctime – last change time
Ctime is the changed timestamp referring to changes made to attribute of a file such as ownership, access permission. It’s the time at which the metadata related to the file changed.
To see the change timestamp, use the -lc option:-
atime – last access time
Atime or access timestamp is the last time a file was read, read by one of the processes directly or through commands and scripts.
Use the -lu (access time) option with command ls to see access time. You can see the modification time and access time for the same file are different.
Show mtime, atime and ctime with stat command
Most of the linux distribution come with stat command which can be used to show all of the time stamp in a more convenient way.
To see modification time, access time and change time of a particular file use as follow:-
The timestamp are first generated in number of seconds since the Unix epoch, it translates the number of seconds into a date and time from the system time zone.
Conclusion
Unfortunately, we won’t be able to find file creation time using ctime, atime or mtime orelse we have to use debugfs command.
In this article, we learned about Linux file timestamps and about access time, modification time, and change time. Your feedback is much welcome.
Источник
File Timestamps in Linux: atime, mtime, ctime Explained
In Linux, every file has some timestamps that provide some crucial analytics about when the file or its attributes were modified or changed. Let’s see these timestamps in detail.
What are Linux timestamps?
Any file in Linux has typically these three timestamps:
- atime – access time
- mtime – modify time
- ctime – change time
atime
atime stands for access time. This timestamp tells you when was the last time the file was accessed. By access, it means if you used cat, vim, less or some other tool to read or display the content of the file.
mtime
mtime stands for modify time. This timestamp tells you when was the last time the file was modified. By modify, it means if the contents of a file were changed by editing the file.
ctime
ctime stands for status change time. This timestamp tells you when was the last time the property and metadata of the file were changed. The metadata includes file permissions, ownership, name and location of the file.
How to see the timestamps of a file?
You can use the stat command to see all the timestamps of a file. Using stat command is very simple. You just need to provide the filename with it.
The output will be like this:
You can see all three timestamps (access, modify and change) time in the above output. All three timestamps are the same here because I just created this empty file with touch command.
Now let’s modify these timestamps.
If I use the less command to read the file, it will change only the access time because the content and metadata of the file remain the same.
Now let’s change the modify time. I’ll use cat command to add new text to this file. This will prevent the change in access time.
Did you notice something weird? You modified the file and expected the mtime to be changed but it also changed the ctime.
Remember, ctime is always changed with mtime. It’s because while mtime is under the control of user, ctime is controlled by the system. It represents when the last time the data blocks or metadata of a file was changed. If you modify the file, the data blocks change and thus ctime is changed.
You can change ctime alone by modifying file permissions using chmod or chgrp commands but you cannot modify mtime without modifying ctime.
You can also not change ctime in the past by normal means. It is a kind of security feature because it tells you the last time the file was changed. Even if someone modifies mtime and set it in the past for malicious purposes, ctime will indicate the actual time when the mtime was changed.
Remember: ctime will always be modified by mtime change.
What are the usage of file timestamps?
It helps a lot in analyzing. There could be a number of situations where you need to refer to the timestamps of a file. For example, you can see if a file was modified recently or not when it was supposed to be modified.
One of my favorite use was to locate log files of an application with mtime. Run the application and just go into the parent directory of the application and search for the files that have been modified in last few minutes.
I already showed you above that it can also help in analyzing if someone accessed the files or modified it maliciously. Timestamps play an important role in such situations.
How to know when a file was originally created?
Did you notice the last line of stat command output? It says ‘Birth’. You may guess that this represents the timestmap when the file was ‘born’ (or created to be more precise).
Actually, there is one more timestamp called creation time (cr). Not all filesystems support this timestamp. Ext4 is one of the popular Linux filesystems and though it supports the creation timestamp, the stat command at present is not able to show it. Maybe the future versions of stat command will show the creation timestamp in the Birth section.
Источник
Команда find в Linux
Очень важно уметь вовремя и очень быстро найти нужную информацию в системе. Конечно, все современные файловые менеджеры предлагают отличные функции поиска, но им не сравнится с поиском в терминале Linux. Он намного эффективнее и гибче обычного поиска, вы можете искать файлы не только по имени, но и по дате добавления, содержимому, а также использовать для поиска регулярные выражения. Кроме того, с найденными файлами можно сразу же выполнять необходимые действия.
В этой статье мы поговорим о поиске с помощью очень мощной команды find Linux, подробно разберем ее синтаксис, опции и рассмотрим несколько примеров.
Основная информация о Find
Find — это одна из наиболее важных и часто используемых утилит системы Linux. Это команда для поиска файлов и каталогов на основе специальных условий. Ее можно использовать в различных обстоятельствах, например, для поиска файлов по разрешениям, владельцам, группам, типу, размеру и другим подобным критериям.
Утилита find предустановлена по умолчанию во всех Linux дистрибутивах, поэтому вам не нужно будет устанавливать никаких дополнительных пакетов. Это очень важная находка для тех, кто хочет использовать командную строку наиболее эффективно.
Команда find имеет такой синтаксис:
find [ папка] [ параметры] критерий шаблон [действие]
Папка — каталог в котором будем искать
Параметры — дополнительные параметры, например, глубина поиска, и т д
Критерий — по какому критерию будем искать: имя, дата создания, права, владелец и т д.
Шаблон — непосредственно значение по которому будем отбирать файлы.
Основные параметры команды find
Я не буду перечислять здесь все параметры, рассмотрим только самые полезные.
- -P никогда не открывать символические ссылки
- -L — получает информацию о файлах по символическим ссылкам. Важно для дальнейшей обработки, чтобы обрабатывалась не ссылка, а сам файл.
- -maxdepth — максимальная глубина поиска по подкаталогам, для поиска только в текущем каталоге установите 1.
- -depth — искать сначала в текущем каталоге, а потом в подкаталогах
- -mount искать файлы только в этой файловой системе.
- -version — показать версию утилиты find
- -print — выводить полные имена файлов
- -type f — искать только файлы
- -type d — поиск папки в Linux
Критерии
Критериев у команды find в Linux очень много, и мы опять же рассмотрим только основные.
- -name — поиск файлов по имени
- -perm — поиск файлов в Linux по режиму доступа
- -user — поиск файлов по владельцу
- -group — поиск по группе
- -mtime — поиск по времени модификации файла
- -atime — поиск файлов по дате последнего чтения
- -nogroup — поиск файлов, не принадлежащих ни одной группе
- -nouser — поиск файлов без владельцев
- -newer — найти файлы новее чем указанный
- -size — поиск файлов в Linux по их размеру
Примеры использования
А теперь давайте рассмотрим примеры find, чтобы вы лучше поняли, как использовать эту утилиту.
1. Поиск всех файлов
Показать все файлы в текущей директории:
2. Поиск файлов в определенной папке
Показать все файлы в указанной директории:
Искать файлы по имени в текущей папке:
Не учитывать регистр при поиске по имени:
find . -iname «test*»
3. Ограничение глубины поиска
Поиска файлов по имени в Linux только в этой папке:
find . -maxdepth 1 -name «*.php»
4. Инвертирование шаблона
Найти файлы, которые не соответствуют шаблону:
find . -not -name «test*»
5. Несколько критериев
Поиск командой find в Linux по нескольким критериям, с оператором исключения:
find . -name «test» -not -name «*.php»
Найдет все файлы, начинающиеся на test, но без расширения php. А теперь рассмотрим оператор ИЛИ:
find -name «*.html» -o -name «*.php»
6. Несколько каталогов
Искать в двух каталогах одновременно:
find ./test ./test2 -type f -name «*.c»
7. Поиск скрытых файлов
Найти скрытые файлы:
8. Поиск по разрешениям
Найти файлы с определенной маской прав, например, 0664:
find . type f -perm 0664
Найти файлы с установленным флагом suid/guid:
find / -perm 2644
find / -maxdepth 2 -perm /u=s
Поиск файлов только для чтения:
find /etc -maxdepth 1 -perm /u=r
Найти только исполняемые файлы:
find /bin -maxdepth 2 -perm /a=x
9. Поиск файлов в группах и пользователях
Найти все файлы, принадлежащие пользователю:
find . -user sergiy
Поиск файлов в Linux принадлежащих группе:
find /var/www -group developer
10. Поиск по дате модификации
Поиск файлов по дате в Linux осуществляется с помощью параметра mtime. Найти все файлы модифицированные 50 дней назад:
Поиск файлов в Linux открытых N дней назад:
Найти все файлы, модифицированные между 50 и 100 дней назад:
find / -mtime +50 –mtime -100
Найти файлы измененные в течении часа:
11. Поиск файлов по размеру
Найти все файлы размером 50 мегабайт:
От пятидесяти до ста мегабайт:
find / -size +50M -size -100M
Найти самые маленькие файлы:
find . -type f -exec ls -s <> \; | sort -n -r | head -5
find . -type f -exec ls -s <> \; | sort -n | head -5
12. Поиск пустых файлов и папок
find /tmp -type f -empty
13. Действия с найденными файлами
Для выполнения произвольных команд для найденных файлов используется опция -exec. Например, выполнить ls для получения подробной информации о каждом файле:
find . -exec ls -ld <> \;
Удалить все текстовые файлы в tmp
find /tmp -type f -name «*.txt» -exec rm -f <> \;
Удалить все файлы больше 100 мегабайт:
find /home/bob/dir -type f -name *.log -size +100M -exec rm -f <> \;
Выводы
Вот и подошла к концу эта небольшая статья, в которой была рассмотрена команда find. Как видите, это одна из наиболее важных команд терминала Linux, позволяющая очень легко получить список нужных файлов. Ее желательно знать всем системным администраторам. Если вам нужно искать именно по содержимому файлов, то лучше использовать команду grep.
Источник