Файлова система Linux: структура, файли, PATH
Що лежить у /etc, /var, /usr; базові команди для файлів; три мітки часу; як правильно додати каталог у PATH.
Структура каталогів
У Linux усе росте з одного кореня /. Головні каталоги, які треба знати напам'ять:
| Каталог | Що там | Запам'ятати як |
|---|---|---|
/home |
домашні каталоги користувачів | «мій дім» |
/root |
домашній каталог root | дім адміна |
/etc |
конфіги системи й сервісів | «et cetera» — налаштування |
/var |
змінні дані: логи (/var/log), бази, кеш |
variable |
/usr |
програми й бібліотеки (/usr/bin, /usr/lib) |
user programs |
/opt |
сторонні програми «одним пакетом» | optional |
/tmp |
тимчасові файли (чиститься при перезавантаженні) | temporary |
/dev |
пристрої: диски /dev/sda, /dev/null |
devices |
/proc |
віртуальні файли з інфо про процеси та ядро | processes |
/mnt, /media |
точки монтування дисків і флешок | mount |
/boot |
ядро й завантажувач | boot |
/sys — |
це віртуальна файлова система sysfs, яка показує інформацію про ядро Linux, пристрої та драйвери. | sysfs |
ПорадаШукаєш конфіг — дивись у
/etc. Шукаєш, чому щось впало — у/var/log.
Робота з файлами
touch — створити файл або оновити час
touch index.php- Створює порожній файл, якщо його не існує.
- Якщо файл вже є — оновлює мітку часу, вміст не змінюється.
| Параметр | Що робить |
|---|---|
-a |
оновити лише час доступу (atime) |
-m |
оновити лише час зміни (mtime) |
-c |
не створювати файл, якщо його немає |
-r інший_файл |
скопіювати atime/mtime з іншого файлу |
-t 202601011200 |
встановити свою мітку часу (ctime все одно стане «зараз») |
stat — подивитись мітки часу
stat index.phpУ кожного файлу три мітки часу:
| Мітка | Коли змінюється |
|---|---|
| atime (access) | файл прочитали |
| mtime (modify) | змінили вміст |
| ctime (change) | змінили метадані: права, власника, ім'я (і вміст теж) |
Примітка
ctimeнеможливо виставити вручну — він завжди стає «зараз» при будь-якій зміні. Тому його використовують у розслідуваннях: «коли востаннє чіпали цей файл».
mkdir, cp, mv, rm
mkdir dir1 # створити каталог
mkdir -p app/logs/2026 # створити весь шлях одразу
cp file.txt backup.txt # копіювати файл
cp -r src/ src_backup/ # копіювати каталог
cp -a src/ dst/ # копіювати зі збереженням прав, власника, часу
mv ./from_file ./to_file # перемістити або перейменувати
rm file.txt # видалити файл
rm -r folder/ # видалити каталог з вмістомОбережно
rm -rfвидаляє без кошика і без питань. Перед запуском перевір шлях черезls. Особливо небезпечно зі змінними: якщо$DIRпорожня,rm -rf $DIR/перетвориться наrm -rf /.
PATH — де shell шукає команди
Коли пишеш nginx, shell шукає файл nginx по черзі в каталогах зі змінної PATH:
echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
which nginx # де саме знайдено командуДодати каталог у PATH
| Для кого | Куди писати |
|---|---|
| лише поточна сесія | export PATH="$PATH:/opt/myapp/bin" у терміналі |
| для себе назавжди | рядок export ... у ~/.bashrc |
| для всіх користувачів | окремий файл у /etc/profile.d/ ✅ |
Якщо треба додати каталог у PATH глобально, найкраще не змінювати /etc/profile напряму, а створити окремий файл у /etc/profile.d/. Наприклад, хочемо додати /opt/myapp/bin:
sudo nano /etc/profile.d/myapp.shВміст файлу:
export PATH="$PATH:/opt/myapp/bin"Зробити файл читабельним для всіх:
sudo chmod 644 /etc/profile.d/myapp.shЧому profile.d, а не /etc/profileСвій файл легко знайти, змінити й видалити, а оновлення системи не перезапише твої зміни. Файли з
/etc/profile.d/*.shчитаються при вході — перелогінься або виконайsource /etc/profile.d/myapp.sh.
Перевір себе
Де шукати конфіг nginx і його логи?
Конфіг — /etc/nginx/, логи — /var/log/nginx/.
Змінили права файлу через chmod. Яка мітка часу оновилась?
ctime — змінились метадані. mtime лишився, бо вміст не змінювався.
Збережіть статтю собі
Увійдіть, щоб імпортувати її у власні нотатки, відмічати вивчене, ставити лайки й питати спільноту. Реєстрація безкоштовна: вхід через Google займає кілька секунд.
Увійти через Google Інші способи входу