|
4 years ago | |
---|---|---|
README.md | 4 years ago |
README.md
Заметки по операционной системе Ubuntu.
Терминал
В Ubuntu придется часто использовать терминал. Его можно вызвать сочетанием клавиш Ctr+Alt+T
. Важно запомнить, что для большинства команд можно вызвать краткую справку:
<command> -h
Или если не работает первая:
<command> —help
Некоторые имеют подробный манул:
man <command>
Сочетания клавиш для операций копировать, вставить, вырезать работают только с зажатым Shift
, например, Shift+Ctrl+V
.
После запуска терминала мы по-умолчанию находимся в нашем домашнем каталоге. Он обозначается как ~. В терминале тильда в начале пути заменяется на /home/$USER
. Файл ~/.bashrc
сожержит команды, выполняемые интепретатором баша после запуска (например, при старте терминала). Имена исполняемых фалов, размещенных в каталогах /usr/bin
или /usr/local/bin
, доступны как команды.
sudo
sudo - это утилита, позволяющая выполнить команды с правами суперпользователя root. Перед именами команд, которые работают с файловой системой вне домашнего каталога, а так же для остановки root-процессов, нужно писать sudo. sudo используется для консольных приложений, в старых версиях убунту была утилита gksu которая позволяла запускать из под рута графические приложения (показывала окно ввода пароля перед запуском). Из Ubuntu 18.04 убрали ее, вместо нее предлагается использовать что-то типа gedit admin:///etc/hosts
.
Если надоело sudo
вводить можно авторизоваться под рутом:
zyrec@zyrec-pc:~$ sudo -i
[sudo] password for zyrec:
root@zyrec-pc:~#
PATH
Чтобы использовать в качестве команд исполняемые файлы из других каталогов их нужно добавить в переменную PATH. В переменной PATH хранятся пути, разделенные двоеточиями. Для этого в ~/.bashrc
нужно добавить строку:
export PATH="$PATH:/path/to/executable"
Полезные команды
Операции над строками
Команда |
Описание |
---|---|
${var#*SubStr} |
will drop begin of string up to first occur of SubStr |
${var##*SubStr} |
will drop begin of string up to last occur of SubStr |
${var%SubStr*} |
will drop part of string from last occur of SubStr to the end |
${var%%SubStr*} |
will drop part of string from first occur of SubStr to the end |
echo ${first_string/Suzi/$second_string} |
Замена подстроки в строке |
base64 <<< "Привет, мир!" |
Закодировать строку в base64 |
echo <base64> | base64 --decode |
Обратная операция |
dd if=/dev/urandom | hexdump -C | less |
Просмотр данных в HEX |
Информация о системе
Команда |
Описание |
---|---|
cat /etc/*-release |
Информация о дистрибутиве |
lscpu и sudo lshw -class processor |
Информация о процессоре |
cat /proc/cpuinfo | grep name | uniq |
Модель процессора |
arch или uname -m |
Архитектура процессора |
nproc или cat /proc/cpuinfo | grep process | wc -l |
Количество ядер процессора |
sudo lshw -C display |
Информация о видеокарте |
free -m |
Доступная и используемая оперативная память |
sudo dmidecode --type 17 |
Тип и размер оперативной памяти |
sudo fdisk -l | grep "Disk /dev/sd" |
Список дисков |
cat /proc/uptime |
Сек., время работы CPU и время простоя в сумме для каждого ядра |
Процессы
Команда |
Описание |
---|---|
top |
Мониторинг процессов |
ps aux |
Список всех процессов |
ps aux | grep python |
Список всех процессов python |
kill <PID> |
Остановить процесс по идентификатору |
killall firefox |
Остановить все процессы firefox |
exec -a <MyProcessName> <Command> |
Запуск процесса под именем |
pkill -f <MyProcessName> |
Остановка процесса с именем |
Файловая система
Команда |
Описание |
---|---|
exec 3>out.txt |
Открыть файл в режиме чтения и записи и получить дескриптор файла |
echo "Some line" >&3 |
Записать строку в файл, используя дескриптор файла |
3>&- |
Закрыть дескриптор файла |
-b filename |
Block special file |
-c filename |
Special character file |
-d directoryname |
Check for directory Existence |
-e filename |
Check for file existence, regardless of type (node, directory, socket, etc.) |
-f filename |
Check for regular file existence not a directory |
-G filename |
Check if file exists and is owned by effective group ID |
-G filename set-group-id |
True if file exists and is set-group-id |
-k filename |
Sticky bit |
-L filename |
Symbolic link |
-O filename |
True if file exists and is owned by the effective user id |
-r filename |
Check if file is a readable |
-S filename |
Check if file is socket |
-s filename |
Check if file is nonzero size |
-u filename |
Check if file set-user-id bit is set |
-w filename |
Check if file is writable |
-x filename |
Check if file is executable |
cat |
чтение из основного потока до <EOF> |
cat <path/to/file> |
просмотр содержимого файлов |
cd <path> |
навигация по каталогам |
cp <src> <dst> |
копирование файлов/каталогов |
mv <src> <dst> |
перемещение файлов/каталогов |
mkdir <name> |
создание каталогов |
nano <path/to/file> |
редактировать файд |
rm <path/to/file> |
удаление файлов/каталогов |
rmdir <path/to/catalog> |
удалить пустой каталог |
rm -rf <path/to/catalog> |
Удалить каталог со всем его содержимым |
rm *.txt |
Удалить все файлы с расширением .txt |
ln -s <src> <dst> |
Создание мягкой ссылки |
df -h |
Информация о файловой системе |
sudo fdisk -l |
Инофрмация о "дисках" |
tar -xvf <archive> |
Извлечь файлы из архива в текущий каталог |
tar -xvf <archive> -C /path/to/extract |
Извлечь файлы из архива в другой каталог |
curl -s http://exmaple.org/file.zip | tar -xvf - |
Скачать файл и разархивировать |
readlink -f file.ext |
Получить полный путь до файла |
find . -type f |
Вывести список файлов в директории рекурсивно |
umount /dev/sd[XN] |
Размонтировть устройство (например, перед форматированием) |
mkfs /dev/sda1 |
Отформатировать раздел |
sudo dd if=/dev/sda of=/dev/sdb conv=notrunc,noerror |
Копировать жесткий диск |
Установка и удаление пакетов
Команда |
Описание |
---|---|
sudo apt-get update |
Обновить список пакетов |
sudo apt-get upgrade |
Обновить все пакеты |
sudo apt-get install <package> -y |
Установить пакет без подтверждления |
sudo apt-get remove <package> |
Удалить пакет |
sudo apt-get autoremove |
Удалить неиспользуемые пакеты |
sudo apt-get clean |
Удалить загруженные архивы |
sudo dpkg -i <.deb package> |
Установить либо обновить deb-пакет |
sudo apt-get install -f |
При ошибке предудыщей выполните эту и повторите |
sudo dpkg -p <package> |
Удалить deb-пакет с сохранением конфигураций |
sudo dpkg -P <package> |
Удалить deb-пакет с конфигурациями |
dpkg -l | less |
Просмотр списка установленных deb-пакетов |
./configure && make && sudo make install |
Установить из исходников |
Помимо apt-get
на Ubuntu доступен пакетный менеджер snap
. Он более продвинутый. Все доступные пакеты для установки с помощью него можно увидеть на сайте snapcraft.io.
Also: GDebi Package Installer - программа для установки .deb
пакетов.
Сервисы
Команда |
Описание |
---|---|
service --status-all |
Список сервисов |
systemctl list-unit-files --type=service | grep enabled |
Список включенных сервисов |
Сеть
Команда |
Описание |
---|---|
netstat -lt |
Список всех серверов, запущенных на хосте |
printf 'GET / HTTP/1.0\r\nHost: google.com\r\n\r\n' | nc google.com 80 |
Отправить сырой TCP-запрос |
curl -d <json> -H "Content-Type: application/json" -X POST <url> |
Отправить JSON-апрос через POST |
exec {дескриптор-файла}<>/dev/{протокол}/{адрес-узла}/{номер-порта} |
Открыть TCP/UDP соединение (дескриптор - целое число больше 2) |
wget url -O - | sh |
Выполнить удаленный скрипт |
ssh -D 1080 -N user@server |
Создать socks-туннель (localhost:1080) |
nginx
Команда |
Описание |
---|---|
sudo systemctl start nginx |
Запустить nginx |
sudo systemctl stop nginx |
Остановить nginx |
sudo systemctl restart nginx |
Перезапустить nginx |
sudo systemctl enable nginx |
Включить автозапуск nginx |
sudo systemctl disable nginx |
Выключить автозапуск nginx |
sudo nginx -t |
Проверить конфигурацию на ошибки |
sudo systemctl reload nginx |
Перечитать конфигурационные файлы |
systemctl status nginx |
Статус nginx |
tail -f /var/log/nginx/access.log |
Выводить добавлямые в лог строки |
less /var/log/nginx/access.log |
Просмотр лога с возможностью прокрутки стрелками |
Postgres
Команда |
Описание |
---|---|
sudo -u postgres psql |
Запуск с вводом пароля |
CREATE USER "ttrss" WITH PASSWORD 'yourpass'; |
Создаем юзера с паролем |
CREATE DATABASE name_db WITH OWNER "ttrss";' |
Создаем БД |
GRANT ALL PRIVILEGES ON DATABASE name_db TO ttrss; |
Даём привилегия на запись на данную БД |
\quit |
выход |
MySQL
Команда |
Описание |
---|---|
mysql -u root -p |
Запуск с вводом пароля |
mysqladmin -u root -p'qwerty' password '' |
Удаляем пароль чтобы его больше не вводить |
mysql -u root -e 'show databases;' |
Выполнение запроса |
Python
Команда |
Описание |
---|---|
python -m venv virtualenvironment |
Создать виртуальное окружение |
. virtualenvironment/bin/activate |
Активировать виртуальное окружение |
deactivate |
Дективировать виртуальное окружение |
pip install requests |
Установить модуль |
pip freeze > requirements.txt |
Сохранить список установленных модулей с их версиями в файл |
pip install -r requirements.txt |
Установить модули из файла |
pip freeze | xargs pip uninstall -y |
Удалить все установленные через pip модули |
pyenv
Команда |
Описание |
---|---|
pyenv install 3.6.6 |
Установить определенную версию |
pyenv global 3.6.6 |
Сделать версией по-умолчанию для команды |
pyenv local 2.7.15 |
Сделать версией по-умолчанию для текущего каталога и всех вложенных |
pyenv shell 2.7.15 |
|
pyenv versions |
Доступные версии |
nvm
Команда |
Описание |
---|---|
nvm install 8.11.4 |
Установить определенную версию Node.js |
nvm install node |
Установить последнюю версию |
nvm uinstall <ver> |
Удалить версию |
nvm alias default 8.11.4 |
Сделать версией по-умолчанию |
nvm alias default node |
Сделать последнюю установленную версию версией по-умолчанию |
nvm ls |
Список установленных версий |
Vue
Команда |
Описание |
---|---|
npm i -g @vue-cli |
Установить vue-cli |
vue create <projectName> |
Создать новый проект (пробел чтобы отметить пункт меню) |
vue add pug -f |
Установка нового модуля с игнорированием Error: Plugin ... does not have a generator |
npm run serve |
Запустить отладочный сервер |
npm run build |
Запустить сборку проекта |
Git
Команда |
Описание |
---|---|
git config --global user.email email@example.com |
Указать email пользователя |
git config --global user.name "John Doe" |
Указать имя пользователя |
git config --global credential.helper "cache --timeout=2592000" |
Хранить введенные логин и пароль в течении 30 дней |
git clone https://github.com/requests.git |
Создать локальную копию репозитория |
git pull |
Обновить локальный репозиторий с сервера |
git add . |
Добавить все файлы из текущего и вложенных каталогов |
git reset |
Отменить предыдущую операцию |
git commit -m "message" |
Коммитим измения с целью их публикации |
git push |
Загружаем измененнные файлы на сервер |
git checkout <branch> |
Меняем ветку |
git checkout -b <branch> |
Создаем новую ветку и переключаемся на нее |
git rm -r --cached |
Удалить каталог из отслеживания |
git subtree push --prefix <path/to/folder> <remote-repo> <branch> |
Push отдельной папки |
git log --all --grep=<pattern> |
Поиск коммита по названию |
git log -S<text> |
Поиск коммита по содержимому |
[alias]
cl = clone
cm = commit
cs = commit -S
ca = commit -a
co = checkout
st = status
lt = log -1 HEAD
lg = log --decorate --graph --format=fuller
ll = log --pretty=oneline --abbrev-commit
unchange = checkout --
unstage = reset HEAD --
br = branch
lb = branch -v -a
distclean = !git clean -fdx && git checkout -- .
info = count-objects -vH
zip = !git archive `git rev-parse --abbrev-ref HEAD` --prefix="`pwd | xargs basename`/" --format=zip > `pwd | xargs basename`.zip
Docker
Команда |
Описание |
---|---|
docker build -t web . |
Создать образ из Dockerfile в текущем каталоге |
docker run -d -p 8080:8080 web |
Запустить образ в новом контейнере с проброской порта |
docker ps -a |
Список запущенных контейнеров |
docker stop <HASH_OR_NAME> |
Остановить запущенный контейнер |
$ docker-compose up -d # start containers in background
$ docker-compose kill # stop containers
$ docker-compose up -d --build # force rebuild of Dockerfiles
$ docker-compose rm # remove stopped containers
$ docker ps # see list of running containers
$ docker exec -ti [NAME] bash # ssh to the container
# list all images
docker images
# tag and publishing
docker tag <id> buonzz/name:version
docker login
docker push buonzz/name
# delete image
docker rmi -f <id>
# run an image
docker run yourusername/docker-whale
# view logs
docker logs [OPTIONS] CONTAINER
# set the port to expose in host
docker run -p 3000 my_image
# start new container interactively
docker container run -it
Прочее
Команда |
Описание |
---|---|
cloc . --exclude-dir=.vscode,venv |
Подсчет строк исходного кода |
echo 'one two three' | xargs mkdir |
xargs итает входной поток и передает его в качестве аргуиентов др. команде |
Рецепты
USB
Если устройство примонтировано:
$ umount /dev/sdb
Если разметка карты испорчена:
$ sudo dd if=/dev/zero of=/dev/sdb bs=512 count=1
Забиваем null-байтами первые 512 байт, где хранится информация о разметке.
Далее нужно создать файловую систему, раздел (sdb1) и отформатировать диск (sdb1).
Запись образа на диск:
sudo dd if=~/Downloads/Win10.iso of=/dev/sdb bs=8M
Установка PostgresSQL
Устанавливаем Postgres:
$ sudo apt update
$ sudo apt install postgresql postgresql-contrib
Запускаем сервер:
$ sudo systemctl start postgresql
Создаем пользователя чье имя соответствует вашему:
$ sudo -u postgres createuser --superuser $USER
Нужно так же создать одноименную БД:
$ sudo -u postgres createdb $USER
Устанавливаем пароль для юзера Zyrec:
$ sudo -u zyrec psql
psql (10.4 (Ubuntu 10.4-0ubuntu0.18.04))
Type "help" for help.
zyrec=# \password
Enter new password:
Enter it again:
zyrec=#
Команды в интерактивной консоли начинаются с "", т.е. надо писать "\help".
Как установить pgAdmin4
Сначала небольшое введение. В Ubuntu при стандартной установке доступны старые версии интрепретатора Python. Чтобы использовать для команды python
другую версию интепретатора, я рекомендую установить менеджер версий pyenv.
$ python --version
Python 3.6.5
pgAdmin 4 не работает с Python 3.7.0: падает, встретив async как имя аргумента.
Если у вас не установлен pyenv, то вызов python
везде замените на python3
.
Создаем и активируем виртуальное окружение:
$ python -m venv pgadmin4
$ . pgadmin4/bin/activate
Качаем wheel:
$ wget https://ftp.postgresql.org/pub/pgadmin/pgadmin4/v4.9/pip/pgadmin4-4.9-py2.py3-none-any.whl
$ pip install pgadmin4-4.9-py2.py3-none-any.whl
Создадим локальные настройки:
$ cd /pgadmin4/lib/python3.6/site-packages/pgadmin4
$ nano config_local.py
Содержимое файла config_local.py
:
import os
SERVER_MODE = False
DATA_DIR = os.path.realpath(os.path.expanduser('~/.pgadmin/'))
LOG_FILE = os.path.join(DATA_DIR, 'pgadmin4.log')
SQLITE_PATH = os.path.join(DATA_DIR, 'pgadmin4.db')
SESSION_DB_PATH = os.path.join(DATA_DIR, 'sessions')
STORAGE_DIR = os.path.join(DATA_DIR, 'storage')
Создадим сервис. Сервис не привязан к терминалу. Его можно добавить в автозагрузку, остановить и т.д.
$ gedit admin:///etc/systemd/system/pgadmin4.service
Пример файла:
[Unit]
Description=pgAdmin 4
[Service]
Type=simple
ExecStart=/home/zyrec/dev/pgadmin4/bin/python /home/zyrec/dev/pgadmin4/lib/python3.6/site-packages/pgadmin4/pgAdmin4.py
[Install]
WantedBy=multi-user.target
Запуск:
$ sudo systemctl start pgadmin4
pip freeze ignore
Проблема у меня возникла с модулем pylint, для установки которого требуется gcc. Приложения я запускаю через Docker. Используемые образы не имеют пакета gcc, его приходится ставить, что влияет как на размер образа так и на время сборки.
Для решения этой проблемы:
- Создаем виртуальное окружение и устанавливаем модули, которые нужно игнорировать;
- Выполняем
pip freeze > ~/dev/ignore-requirements.txt
; - Добавляем в
.bashrc
строкуalias pipfreezeignore='pip freeze | grep -vFxf ~/dev/ignore-requirements.txt'
.
Использование:
$ pipfreezeignore > requirements.txt
Что делать если перестал работать pyenv
Возможно, в текущем каталоге либо в родительских имеется файл .python-version
. Его нужно удалить.
Как создать свой сервис
В папке /etc/systemd/system
создаем файл <service-name>.service
.
Пример:
[Unit]
Description=<description>
[Service]
Type=simple
ExecStart=<command>
[Install]
WantedBy=multi-user.target
Нужно прописывать полный путь до команды (~ нельзя использовать).
Docker
Немного о синтаксисе
Запомнить:
- Dockerfile может иметь сколько угодно инструкций FROM.
Алиасы для команд
Добавить в ~/.bashrc
следующие строки:
alias docker-stop-all='docker stop $(docker ps -qa)'
alias docker-rm-all='docker rm -f $(docker ps -qa)'
alias docker-rmi-all='docker rmi $(docker images -q)'
alias docker-clean='docker-stop-all; docker-rm-all; docker-rmi-all'
Как из контейнера подключиться к базе на хосте
Самое простое решение - это docker run --network host...
либо в docker-compose.yml
добавить:
version: '3'
services:
myservice:
// ...
network_mode: host
По целому ряду причин эти решения могут нам не подходить.
Итак, для начала нам нужно узнать свой локальный ip-адрес:
$ hostname -I | cut -d ' ' -f1
192.168.0.82
Этот айпи мы будем указывать в своих скриптах в качестве хоста. Сервера баз данных должны слушать этот адрес (универсальное решение в качестве хоста указать 0.0.0.0).
Postrgres
$ sudo nano /etc/postgresql/10/main/postgresql.conf
Ищем "listen_adresses":
#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------
# - Connection Settings -
listen_addresses = 'localhost,192.168.0.82'
# либо можно слушать все адреса
# listen_addresses = '*'
В конец /etc/postgresql/10/main/hba_conf.conf
нужно добавить строку:
host all all 172.17.0.0/8 md5
Это позволит избежать ошибок вида:
asyncpg.exceptions.InvalidAuthorizationSpecificationError: no pg_hba.conf entry for host "172.17.0.x"
Перезапускаем Postgres:
$ sudo sytemctl restart postgresql
MySQL
Нужно в файле /etc/my.cnf
или /etc/mysql/my.cnf
изменить параметр bind-address:
[mysqld]
bind-address = 0.0.0.0
Мне этого делать не потребовалось netstat -lt
показал что мускул и так слушает все хосты.
Redis
$ sudo nano /etc/redis/6379.conf
Находим и комментриуем bind 127.0.0.1
:
# IF YOU ARE SURE YOU WANT YOUR INSTANCE TO LISTEN TO ALL THE INTERFACES
# JUST COMMENT THE FOLLOWING LINE.
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# bind 127.0.0.1
Перезапускаем сервис:
$ sudo systemctl restart redis_6379
Создание ярлыков:
$ sudo apt-get install --no-install-recommends gnome-panel
$ gnome-desktop-item-edit --create-new ~/Desktop
/sbin, /bin, /usr/bin и /usr/local/bin
/sbin
, as distinct from/bin
, is for system management programs (not normally used by ordinary users) needed before/usr
is mounted./usr/bin
is for distribution-managed normal user programs. .../usr/local/bin
is for normal user programs not managed by the distribution package manager, e.g. locally compiled packages.
Структура файловой системы
Директория |
Описание |
---|---|
/ |
Корневая директория, содержащая всю файловую иерархию. |
/bin/ |
Основные системные утилиты, необходимые как в однопользовательском режиме, так и при обычной работе всем пользователям (например: cat, ls, cp). |
/boot/ |
Загрузочные файлы (в том числе файлы загрузчика, ядро и т.д.). Часто выносится на отдельный раздел. |
/dev/ |
Основные файлы устройств системы (например физические устройства sata винчестеры /dev/sda, видео камеры или TV-тюнеры /dev/video или псевдоустройства, например «чёрные дыры» /dev/null, /dev/zero ). |
/etc/ |
Общесистемные конфигурационные файлы, лежат в корне директории и файлы конфигурации установленных программ (имя происходит от et cetera). |
/etc/X11/ |
Файлы конфигурации X Window System версии 11. |
/etc/apt/ |
Файлы конфигурации пакетного менеджера Apt. |
/etc/samba/ |
Файлы конфигурации сервера Samba, расшаривающего файлы по сети с windows машинами. |
/home/ |
Содержит домашние директории пользователей, которые в свою очередь содержат персональные настройки и данные пользователя. Часто размещается на отдельном разделе. |
/lib/ |
Основные библиотеки, необходимые для работы программ из /bin/ и /sbin/. |
/media/ |
Точки монтирования для сменных носителей, таких как CD-ROM, DVD-ROM, flash дисков. |
/opt/ |
Дополнительное программное обеспечение. |
/proc/ |
Виртуальная файловая система, представляющая состояние ядра операционной системы и запущенных процессов в виде каталогов файлов. |
/root/ |
Домашняя директория пользователя root. |
/sbin/ |
Основные системные программы для администрирования и настройки системы, например, init, iptables, ifconfig. |
/srv/ |
Данные, специфичные для окружения системы. |
/tmp/ |
Временные файлы (см. также /var/tmp). |
/usr/ |
Вторичная иерархия для данных пользователя; содержит большинство пользовательских приложений и утилит, используемых в многопользовательском режиме. Может быть смонтирована по сети только для чтения и быть общей для нескольких машин. |
/usr/bin/ |
Дополнительные программы для всех пользователей, не являющиеся необходимыми в однопользовательском режиме. |
/usr/include/ |
Стандартные заголовочные файлы. |
/usr/lib/ |
Библиотеки для программ, находящихся в /usr/bin/ и /usr/sbin/. |
/usr/sbin/ |
Дополнительные системные программы (такие как демоны различных сетевых сервисов). |
/usr/share/ |
Архитектурно-независимые общие данные. |
/usr/src/ |
Исходные коды (например, здесь располагаются исходные коды ядра). |
/usr/local/ |
Третичная иерархия для данных, специфичных для данного хоста. Обычно содержит такие поддиректории, как bin/, lib/, share/. Она пригодится, когда /usr/ используется по сети. |
/var/ |
Изменяемые файлы, такие как файлы регистрации (log-файлы), временные почтовые файлы, файлы спулеров. |
/var/cache/ |
Данные кэша приложений. Сюда скачиваются пакеты перед их установкой в систему, здесь же они какое-то время и хранятся |
/var/lib/ |
Информация о состоянии. Постоянные данные, изменяемые программами в процессе работы (например, базы данных, метаданные пакетного менеджера и др.). |
/var/lock/ |
Lock-файлы, указывающие на занятость некоторого ресурса. |
/var/log/ |
Различные файлы регистрации (log-файлы). |
/var/mail/ |
Почтовые ящики пользователей. |
/var/run/ |
Информация о запущенных программах (в основном, о демонах). |
/var/spool/ |
Задачи, ожидающие обработки (например, очереди печати, непрочитанные или неотправленные письма). |
/var/tmp/ |
Временные файлы, которые должны быть сохранены между перезагрузками. |
/var/www/ |
Директория веб-сервера Apache, всё что находится внутри транслируется им в интернет (конфигурация по-умолчанию) |