- Где временный каталог в Linux?
- / tmp: временные файлы
- / var / tmp: временные файлы сохраняются между перезагрузками системы
- Where is the temporary directory in Linux?
- 5 Answers 5
- /tmp : Temporary files
- /var/tmp : Temporary files preserved between system reboots
- How to set temp file directory for sed command in linux?
- 7 Answers 7
- Cтруктура файловой системы Linux
- / — корень
- /bin — (binaries) бинарные файлы пользователя
- /sbin — (system binaries) системные исполняемые файлы
- /etc — (etcetera) конфигурационные файлы
- /dev — (devices) файлы устройств
- /proc — (proccess) информация о процессах
- /var (variable) — Переменные файлы
- /var/log — Файлы логов
- /var/lib — базы данных
- /var/mail — почта
- /var/spool — очереди
- /var/lock — файлы блокировок
- /var/run — PID процессов
- /tmp (temp) — Временные файлы
- /usr — (user applications) Программы пользователя
- /usr/bin/ — Исполняемые файлы
- /usr/sbin/
- /usr/lib/ — Библиотеки
- /usr/local — Файлы пользователя
- /home — Домашняя папка
- /boot — Файлы загрузчика
- /lib (library) — Системные библиотеки
- /opt (Optional applications) — Дополнительные программы
- /mnt (mount) — Монтирование
- /media — Съемные носители
- /srv (server) — Сервер
- /run — процессы
- /sys (system) — Информация о системе
- Выводы
Где временный каталог в Linux?
Есть ли в Linux стандартный временный каталог для общего пользования, например, C:\Temp папка Windows ? Если да, где он находится? Я нашел SO вопрос о программном поиске tmp каталога , но я хочу заранее установить временное местоположение в XML-файле конфигурации.
/ tmp: временные файлы
/tmp Каталог должен быть доступен для программ , которые требуют временных файлов.
Программы не должны предполагать, что какие-либо файлы или каталоги в /tmp них сохраняются между вызовами программы.
обоснование
Стандарт IEEE POSIX.1-2008 перечисляет требования, аналогичные приведенному выше разделу. Хотя данные, хранящиеся в, /tmp могут быть удалены в зависимости от сайта, рекомендуется, чтобы файлы и каталоги, расположенные в /tmp них, удалялись при каждой загрузке системы.
FHS добавил эту рекомендацию на основе исторического прецедента и общепринятой практики, но не сделал ее обязательным требованием, поскольку системное администрирование не входит в сферу применения этого стандарта.
/ var / tmp: временные файлы сохраняются между перезагрузками системы
/var/tmp Каталог доступен для программ , которым требуется временные файлы или каталоги , которые должны сохраняться между перезагрузками системы. Поэтому данные, хранящиеся в, /var/tmp являются более постоянными, чем данные в /tmp .
Файлы и каталоги, расположенные в, /var/tmp не должны быть удалены при загрузке системы. Несмотря на то, что данные, хранящиеся в, /var/tmp как правило, удаляются в зависимости от сайта, рекомендуется, чтобы удаление происходило с меньшей частотой, чем /tmp .
TMPDIR Эта переменная должна представлять путь к каталогу, доступному для программ, которым требуется место для создания временных файлов.
Это старый вопрос, поэтому сегодня есть еще один вариант. Дистрибутивы Linux, на systemd которые полагается (а это 90%), теперь могут использовать $XDG_RUNTIME_DIR каталог ( спецификация XDG Base Directory ) для хранения определенных типов временных файлов. Обычно он находится по адресу /run/user/$uid . Это каталог для пользователя с 700 разрешениями, которые обеспечивают лучшую безопасность. Это tmpfs крепление, которое обеспечивает производительность. Недостатком tmpfs является то, что он должен использоваться только для хранения небольших файлов и сокетов.
Я смотрю на это как на брак /tmp и /var/run .
Да / TMP для общего пользования. Смотрите здесь и здесь О стандарте иерархии файловой системы.
/ tmp / Временные файлы (см. также / var / tmp). Часто не сохраняется между перезагрузками системы.
С некоторыми подробностями, перечисленными в PDF.
Вы не можете заранее выбрать одно временное имя каталога, которое будет работать для любой системы Linux. На самом деле, вы не можете сделать это и в Windows. Согласно статье Википедии о временных папках , временный каталог в Windows определяется переменной среды TEMP. Если бы вы просто использовали c:\Temp в качестве временного каталога в системе Windows, в котором для TEMP установлено другое значение, любая программа, использующая ваш XML-файл для выбора временного каталога, потерпит неудачу.
Короче говоря, системный временный каталог определяется средой во всех известных мне современных операционных системах, включая как Windows, так и любую UNIX-подобную систему. Установка одного статического пути в качестве временного каталога будет работать только до тех пор, пока значения по умолчанию не будут изменены.
Во всяком случае, стандартный временный каталог в типичной системе Linux есть /tmp . Это эквивалент C:\Temp в том смысле, что это только временный каталог по умолчанию, а не универсальный. Даже если /tmp доступно, если пользователь (или система) установил переменную среды TEMP, вместо нее следует использовать значение этой переменной.
Вы можете попробовать выбрать временный каталог относительно домашнего каталога пользователя, который вы можете создать.
Источник
Where is the temporary directory in Linux?
Does Linux have a standard temporary directory for general use, like Windows’s C:\Temp folder? If so, where is it located? I found an SO question about finding a tmp directory programmatically, but I want to set a temp location in an XML config file ahead of time.
5 Answers 5
/tmp : Temporary files
The /tmp directory must be made available for programs that require temporary files.
Programs must not assume that any files or directories in /tmp are preserved between invocations of the program.
Rationale
IEEE standard POSIX.1-2008 lists requirements similar to the above section. Although data stored in /tmp may be deleted in a site-specific manner, it is recommended that files and directories located in /tmp be deleted whenever the system is booted.
FHS added this recommendation on the basis of historical precedent and common practice, but did not make it a requirement because system administration is not within the scope of this standard.
/var/tmp : Temporary files preserved between system reboots
The /var/tmp directory is made available for programs that require temporary files or directories that are preserved between system reboots. Therefore, data stored in /var/tmp is more persistent than data in /tmp .
Files and directories located in /var/tmp must not be deleted when the system is booted. Although data stored in /var/tmp is typically deleted in a site-specific manner, it is recommended that deletions occur at a less frequent interval than /tmp .
TMPDIR This variable shall represent a pathname of a directory made available for programs that need a place to create temporary files.
This is an old question so today there is another option available. Linux distributions relying on systemd (which is 90% of them) can now use $XDG_RUNTIME_DIR directory (XDG Base Directory Specification) to store certain types of temporary files. It is generally located at /run/user/$uid . This is a per-user directory with 700 permissions which provides better security. This is a tmpfs mount which provides performance. The downside of tmpfs is that it should only be used to keep small files and sockets.
I look at it as a marriage of /tmp and /var/run .
Yes /tmp is for general use. See here and here On the Filesystem Hierarchy Standard.
/tmp/ Temporary files (see also /var/tmp). Often not preserved between system reboots.
With some more details listed in the PDF.
You cannot choose a single temporary directory name ahead of time that will work for any Linux system. In fact, you can’t do that on Windows either. According to Wikipedia’s article on temporary folders, the temporary directory on Windows is determined by the environment variable TEMP. If you were simply using c:\Temp as a temporary directory on a Windows system that set TEMP to something else, then any program using your XML file to choose a temporary directory would fail.
In short, the system temporary directory is determined by the environment on all modern operating systems that I know of, including both Windows and any UNIX-like system. Setting a single static path as your temporary directory will only work as long as the defaults have not been changed.
Anyway, the standard temporary directory in a typical Linux system is /tmp . It is the equivalent of C:\Temp in the sense that it is only the default temporary directory, not universal. Even if /tmp is available, if a user (or the system) has set the TEMP environment variable, the value of that variable should be used instead.
You could try choosing a temporary directory relative to the user’s home directory, which you can create.
Источник
How to set temp file directory for sed command in linux?
I have bash script which modified file like this
and I ran this script from web application. sed command create temporary file in that directory but user under which web application works doesn’t have permissions to create files in that directory. I do not want to give more permissions for the user to that folder. Is it possible to specify temp file location for sed command?
I am new in linux so sorry if my question is too easy but I didn’t find any solution.
7 Answers 7
The file must be modified via temporary file, this is actually what sed was doing but it lacked permissions.
When dealing with such a situation, we just do this process manually.
You could use «sponge» from moreutils.
You can always avoid inline editing:
But let me caution a web user editing /etc/postfix/virtual is pretty risky.
AFAIK, you can’t configure sed for that. So, you have to run your command with the required privileges.
create a script named, for example, update-postfix (it can have arguments), and put in /usr/local/bin
Create a file in /etc/sudoers.d/ (whatever its name, it can be update-postfix or something more generic), replacing _user_ with the one calling your script :
It allows _user_ to run update-postfix (and ony this command) as root
In your script, call sudo update-postfix helloworld instead of the sed command. The update-postfix script is called as the root user.
NB : Called as such, your script (update-postfix) has right to do anything, so be careful what you put in, and sanitize the arguments (what I didn’t do here for brevity).
Источник
Cтруктура файловой системы Linux
Понимание файловой системы Linux, структуры каталогов, размещения конфигурационных, исполняемых и временных файлов поможет вам лучше разбираться в своей системе и стать успешным системным администратором. Файловая система Linux будет непривычна именно для новичка, только что перешедшего с Windows, ведь здесь все совсем по-другому.
В отличие от Windows, программа не находится в одной папке, а, как правило, распределена по корневой файловой системе. Это распределение поддается определенным правилам. Вы когда-нибудь задавались вопросом, почему некоторые программы находятся в папке /bin, или /sbin, /usr/sbin, /usr/local/bin, в чем разница между этими каталогами?
Например, программа less, находится в каталоге /usr/bin, но почему не в /sbin или /usr/sbin. А такие программы, как ifconfig или fdisk находятся в каталоге /sbin и нигде иначе. В этой статье будет полностью рассмотрена структура файловой системы Linux, после ее прочтения вы сможете понять смысл использования большинства папок в корневом каталоге Linux.
/ — корень
Это главный каталог в системе Linux. По сути, это и есть файловая система Linux. Здесь нет дисков или чего-то подобного, как в Windows. Вместо этого, адреса всех файлов начинаются с корня, а дополнительные разделы, флешки или оптические диски подключаются в папки корневого каталога.
Только пользователь root имеет право читать и изменять файлы в этом каталоге. Обратите внимание, что у пользователя root домашний каталог /root, но не сам /.
/bin — (binaries) бинарные файлы пользователя
Этот каталог содержит исполняемые файлы. Здесь расположены программы, которые можно использовать в однопользовательском режиме или режиме восстановления. Одним словом, те утилиты, которые могут использоваться пока еще не подключен каталог /usr/. Это такие общие команды, как cat, ls, tail, ps и т д.
/sbin — (system binaries) системные исполняемые файлы
Так же как и /bin, содержит двоичные исполняемые файлы, которые доступны на ранних этапах загрузки, когда не примонтирован каталог /usr. Но здесь находятся программы, которые можно выполнять только с правами суперпользователя. Это разные утилиты для обслуживания системы. Например, iptables, reboot, fdisk, ifconfig,swapon и т д.
/etc — (etcetera) конфигурационные файлы
В этой папке содержатся конфигурационные файлы всех программ, установленных в системе. Кроме конфигурационных файлов, в системе инициализации Init Scripts, здесь находятся скрипты запуска и завершения системных демонов, монтирования файловых систем и автозагрузки программ. Структура каталогов linux в этой папке может быть немного запутанной, но предназначение всех их — настройка и конфигурация.
/dev — (devices) файлы устройств
В Linux все, в том числе внешние устройства являются файлами. Таким образом, все подключенные флешки, клавиатуры, микрофоны, камеры — это просто файлы в каталоге /dev/. Этот каталог содержит не совсем обычную файловую систему. Структура файловой системы Linux и содержащиеся в папке /dev файлы инициализируются при загрузке системы, сервисом udev. Выполняется сканирование всех подключенных устройств и создание для них специальных файлов. Это такие устройства, как: /dev/sda, /dev/sr0, /dev/tty1, /dev/usbmon0 и т д.
/proc — (proccess) информация о процессах
Это тоже необычная файловая система, а подсистема, динамически создаваемая ядром. Здесь содержится вся информация о запущенных процессах в реальном времени. По сути, это псевдофайловая система, содержащая подробную информацию о каждом процессе, его Pid, имя исполняемого файла, параметры запуска, доступ к оперативной памяти и так далее. Также здесь можно найти информацию об использовании системных ресурсов, например, /proc/cpuinfo, /proc/meminfo или /proc/uptime. Кроме файлов в этом каталоге есть большая структура папок linux, из которых можно узнать достаточно много информации о системе.
/var (variable) — Переменные файлы
Название каталога /var говорит само за себя, он должен содержать файлы, которые часто изменяются. Размер этих файлов постоянно увеличивается. Здесь содержатся файлы системных журналов, различные кеши, базы данных и так далее. Дальше рассмотрим назначение каталогов Linux в папке /var/.
/var/log — Файлы логов
Здесь содержатся большинство файлов логов всех программ, установленных в операционной системе. У многих программ есть свои подкаталоги в этой папке, например, /var/log/apache — логи веб-сервера, /var/log/squid — файлы журналов кеширующего сервера squid. Если в системе что-либо сломалось, скорее всего, ответы вы найдете здесь.
/var/lib — базы данных
Еще один тип изменяемых файлов — это файлы баз данных, пакеты, сохраненные пакетным менеджером и т д.
/var/mail — почта
В эту папку почтовый сервер складывает все полученные или отправленные электронные письма, здесь же могут находиться его логи и файлы конфигурации.
/var/spool — очереди
Изначально, эта папка отвечала за очереди печати на принтере и работу набора программ cups.
/var/lock — файлы блокировок
Здесь находятся файлы блокировок. Эти файлы означают, что определенный ресурс, файл или устройство занят и не может быть использован другим процессом. Apt-get, например, блокирует свою базу данных, чтобы другие программы не могли ее использовать, пока программа с ней работает.
/var/run — PID процессов
Содержит файлы с PID процессов, которые могут быть использованы, для взаимодействия между программами. В отличие от каталога /run данные сохраняются после перезагрузки.
/tmp (temp) — Временные файлы
В этом каталоге содержатся временные файлы, созданные системой, любыми программами или пользователями. Все пользователи имеют право записи в эту директорию.
Файлы удаляются при каждой перезагрузке. Аналогом Windows является папка Windows\Temp, здесь тоже хранятся все временные файлы.
/usr — (user applications) Программы пользователя
Это самый большой каталог с большим количеством функций. Тут наиболее большая структура каталогов Linux. Здесь находятся исполняемые файлы, исходники программ, различные ресурсы приложений, картинки, музыку и документацию.
/usr/bin/ — Исполняемые файлы
Содержит исполняемые файлы различных программ, которые не нужны на первых этапах загрузки системы, например, музыкальные плееры, графические редакторы, браузеры и так далее.
/usr/sbin/
Содержит двоичные файлы программ для системного администрирования, которые нужно выполнять с правами суперпользователя. Например, таких как Gparted, sshd, useradd, userdel и т д.
/usr/lib/ — Библиотеки
Содержит библиотеки для программ из /usr/bin или /usr/sbin.
/usr/local — Файлы пользователя
Содержит файлы программ, библиотек, и настроек созданные пользователем. Например, здесь могут храниться программы собранные и установленные из исходников и скрипты, написанные вручную.
/home — Домашняя папка
В этой папке хранятся домашние каталоги всех пользователей. В них они могут хранить свои личные файлы, настройки программ и т д. Например, /home/sergiy и т д. Если сравнивать с Windows, то это ваша папка пользователя на диске C, но в отличии от WIndows, home как правило размещается на отдельном разделе, поэтому при переустановке системы все ваши данные и настройки программ сохранятся.
/boot — Файлы загрузчика
Содержит все файлы, связанные с загрузчиком системы. Это ядро vmlinuz, образ initrd, а также файлы загрузчика, находящие в каталоге /boot/grub.
/lib (library) — Системные библиотеки
Содержит файлы системных библиотек, которые используются исполняемыми файлами в каталогах /bin и /sbin.
Библиотеки имеют имена файлов с расширением *.so и начинаются с префикса lib*. Например, libncurses.so.5.7. Папка /lib64 в 64 битных системах содержит 64 битные версии библиотек из /lib. Эту папку можно сравнить с WIndows\system32, там тоже сгружены все библиотеки системы, только там они лежат смешанные с исполняемыми файлами, а здесь все отдельно.
/opt (Optional applications) — Дополнительные программы
В эту папку устанавливаются проприетарные программы, игры или драйвера. Это программы созданные в виде отдельных исполняемых файлов самими производителями. Такие программы устанавливаются в под-каталоги /opt/, они очень похожи на программы Windows, все исполняемые файлы, библиотеки и файлы конфигурации находятся в одной папке.
/mnt (mount) — Монтирование
В этот каталог системные администраторы могут монтировать внешние или дополнительные файловые системы.
/media — Съемные носители
В этот каталог система монтирует все подключаемые внешние накопители — USB флешки, оптические диски и другие носители информации.
/srv (server) — Сервер
В этом каталоге содержатся файлы серверов и сервисов. Например, могут содержаться файлы веб-сервера apache.
/run — процессы
Еще один каталог, содержащий PID файлы процессов, похожий на /var/run, но в отличие от него, он размещен в TMPFS, а поэтому после перезагрузки все файлы теряются.
/sys (system) — Информация о системе
Назначение каталогов Linux из этой папки — получение информации о системе непосредственно от ядра. Это еще одна файловая система организуемая ядром и позволяющая просматривать и изменить многие параметры работы системы, например, работу swap, контролировать вентиляторы и многое другое.
Выводы
Теперь структура файловой системы Linux не кажется вам темным лесом. Конечно еще есть с чем разбираться, одна только подсистема /proc, /sys или /dev чего стоит. Но база уже заложена. Если я что-то упустил — напишите в комментариях.
Источник