Как узнать куда программа сохраняет файлы
Перейти к содержимому

Как узнать куда программа сохраняет файлы

  • автор:

Куда программа сохраняет файлы при автозапуске

У меня написан бот для Telegram и установлен на VPS. Программа сохраняет данные в файл в той же директории и при перезапуске считывает их. Я поставил программу на автозапуск по этой инструкции (Параграф АВТОЗАГРУЗКА СКРИПТОВ В LINUX):

$ cat /lib/systemd/system/runscript.service [Unit] Description=My Script Service After=multi-user.target [Service] Type=idle ExecStart=/usr/bin/local/script.sh [Install] WantedBy=multi-user.target $ sudo chmod a=r,u+w /lib/systemd/system/runscript.service $ sudo systemctl daemon-reload $ sudo systemctl enable runscript.service 

Автозапуск работает, программа работает, данные сохраняются и считываются. Но не понятно куда сохраняются. Вопрос в том, куда сохраняются данные при таком раскладе.

Отслеживать
68.2k 225 225 золотых знаков 80 80 серебряных знаков 223 223 бронзовых знака
задан 25 фев 2018 в 14:33
153 1 1 золотой знак 1 1 серебряный знак 8 8 бронзовых знаков
find / -name «имя файла данных» и ждать
25 фев 2018 в 15:32

@KoVadim это было первое, что попробовал. Но в ответ я получаю огрооооомный список Permission denied, хотя сижу из под root.

25 фев 2018 в 15:53

не во все каталоги так просто можно заходить. даже руту. Но можно и по другому — с помощью ps смотрим pid процесса, а потом lsof -p смотрим список открытых файлов

25 фев 2018 в 15:59

хм, файл открывается, происходит запись и он сразу закрывается. Но можно попробовать. Интересная штука, не знал. Спасибо

25 фев 2018 в 16:00

если бот ваш, то Вы всегда можете распечатать текущий рабочий каталог (getcwd) — и печатать его в файл с известным именем

25 фев 2018 в 16:02

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

очевидно, что если в конфигурации сервиса вы не добавляли инструкций по запуску исполняемого файла от имени какого-нибудь пользователя, то запускается он от имени пользователя root .

соотвественно, если в вашем исполняемом файле указан относительный (а не абсолютный) путь к файлу, и внутри скрипта не происходит смена текущего каталога (или что-нибудь аналогичное), то ищите его в домашнем каталоге пользователя root . обычно — /root , уточнить можно, например, так:

$ getent passwd root root:x:0:0:root:/root:/bin/bash 

шестое поле — это путь к домашнему каталогу.

в особо тяжёлых случаях можно посмотреть, на какой каталог указывает ссылка /proc/идентификатор_процесса/cwd . этот каталог и является текущим для процесса с указанным идентификатором на данный момент.

Отслеживать
ответ дан 25 фев 2018 в 15:52
aleksandr barakin aleksandr barakin
68.2k 225 225 золотых знаков 80 80 серебряных знаков 223 223 бронзовых знака
В общем, по этому пути пусто.
25 фев 2018 в 15:59

@LeonNash, 1. комментарии не подходят для форматированного текста. лушче добавить его в текст вопроса. 2. есть файлы/каталоги, начинающиеся с точки. см. вывод ls -a

25 фев 2018 в 16:00

Второй подход помог! Я нашёл тот самый файл. Но если не сложно, объясните, как происходит так, что при перезапуске сервера, программа успешно считывает данные. Неужели несколько раз вышло так, что pid был тем же самым? Или как это работает?

25 фев 2018 в 16:08

@LeonNash, у каждого процесса есть свойство «текущий каталог» (см. символические ссылки /proc/идентификатор_процесса/cwd ). дочерний процесс наследует это свойство от родительского. т.е., какой каталог был текущим для родительского процесса в момент вызова fork() , такой и будет текущим для дочернего (в вашем случае родительский — это systemd , дочерний — интерпретатор вашего скрипта). естественно, любой процесс в любой момент может поменять свой текущий каталог с помощью chdir()

25 фев 2018 в 16:22

@LeonNash, не стоит полагаться на то, что ваш процесс будет всегда запускаться с одним и тем же каталогом в качестве текущего. потому имеет смысл либо писать в файл по абсолютному пути, либо в начале программы изменить текущий каталог на что-то нужное.

25 фев 2018 в 16:29

Если вы специально не заморачивались выбором места для сохранения файлов — то, скорее всего, они сохраняются в текущую директорию, которая в свою очередь по умолчанию является директорией пользователя. Если программа работает от рута — значит, файлы надо искать в /root

Но, вообще говоря, чем искать где-то там файлы, к тому же перемешанные с другими файлами от других программ — лучше настроить сохранения файлов в правильном месте.

В идеале, ваш бот должен использовать переменные окружения RUNTIME_DIRECTORY , STATE_DIRECTORY , CACHE_DIRECTORY , LOGS_DIRECTORY и CONFIGURATION_DIRECTORY для размещения файлов. А эти директории, в свою очередь, должны создаваться следующими директивами:

  • RuntimeDirectory=имя создаст папку по пути /run/имя для хранения временных файлов, автоматически удаляемых при остановке программы;
  • StateDirectory=имя создаст папку по пути /var/lib/имя для постоянного хранения генерируемых в процессе работы важных файлов;
  • CacheDirectory=имя создаст папку по пути /var/cache/имя для хранения генерируемых в процессе работы необязательных файлов (то есть таких файлов, которые можно удалить для очистки свободного места не поломав программу);
  • LogsDirectory=имя создаст папку по пути /var/log/имя для хранения логов;
  • ConfigurationDirectory=имя создаст папку по пути /etc/имя для хранения настроек.

Однако, если это всё для вас слишком сложно, или просто нет необходимости как-то интегрироваться с системой — можно пойти по простому пути. Просто добавьте в юнит директиву WorkingDirectory=/путь/к/папке и ваш бот, скорее всего, будет сохранить все файлы в указанной вами папке.

Обычно такие папки «всё в одном» размещают в /opt .

Поиск файлов в приложении «Файлы» на iPhone или iPad

  1. Откройте приложение «Файлы» на iPhone или iPad. На экране «Домой» не отображается синий значок приложения «Файлы»? Просто смахните вниз и найдите приложение «Файлы». Функция «Поиск» на экране iPhone. Значок приложения «Файлы» указан в результатах наилучших совпадений в верхней части экрана.
  2. В приложении «Файлы» выберите нужный файл. Изображение приложения «Файлы» на экране iPhone, в котором показан поиск по запросу «WIP» и значок папки «Файлы WIP» на экране ниже.

Управление файлами в приложении «Файлы»

На iPhone или iPad можно хранить и редактировать файлы в приложении «Файлы».

Типы файлов, которые хранятся в приложении «Файлы»

  • В папке «На [устройство]» раздела «Места» находятся файлы, хранящиеся локально на используемом устройстве.
  • В папке iCloud Drive раздела «Места» хранятся файлы и папки, которые синхронизируются с iCloud Drive, в том числе файлы в формате Pages, Numbers, Keynote и многие другие.
  • Также файлы можно найти в других подключаемых облачных службах и приложениях, таких как Box, Dropbox, OneDrive, Adobe Creative Cloud, Google Диск и многих других.

Приложение «Файлы» не содержит вашу медиатеку. Но вы можете сохранять фотографии в приложении «Файлы» в iCloud Drive или другом облачном сервисе.

В приложении «Файлы» не поддерживаются защищенные паролем архивы папок.

Редактирование файлов в приложении «Файлы»

Для редактирования файла просто нажмите на него, чтобы открыть. В зависимости от типа файла можно:

  • Использовать функции «Разметка» для рисования, добавления текста и подписи, а также много другого
  • Редактировать файлы в Pages, Keynote, Numbers и других приложениях

Можно также удалять файлы в приложении «Файлы». Изменения в файлах, хранящихся в iCloud Drive или других облачных службах, автоматически обновляются на всех ваших устройствах.

Информация о продуктах, произведенных не компанией Apple, или о независимых веб-сайтах, неподконтрольных и не тестируемых компанией Apple, не носит рекомендательного или одобрительного характера. Компания Apple не несет никакой ответственности за выбор, функциональность и использование веб-сайтов или продукции сторонних производителей. Компания Apple также не несет ответственности за точность или достоверность данных, размещенных на веб-сайтах сторонних производителей. Обратитесь к поставщику за дополнительной информацией.

Где программе хранить свои настройки?

Есть программа, которая должна сохранять и загружать некоторые настройки: позицию и размер главного окна программы, идентификатор выбранного языка, время последней проверки обновления. Я задался вопросом — где программа должна хранить свои настройки? Решил собрать информацию на эту тему и поделится ею с вами.

  • Program Files
  • My Documents
  • User\Application Data
  • User\Local Settings\Application Data
  • All Users\Application data

My Documents
XP: Documents and Settings\User\My Documents
Vista: Users\User\Documents
На мой взгляд не верный подход. Папку не зря назвали Мои Документы. Поэтому, если программа не формирует каких-либо документов, а должна всего-лишь хранить свои настройки, то им там не место. Не знаю как Вас, а меня слегка раздражают папки внутри папки с документами. Я их там, между прочим упорядочиваю, распихиваю по подкаталогам и тут на тебе, захожу в папку и вижу Visual Studio 2008.

User\Application Data
XP: Documents and Settings\User\Application Data
Vista: Users\User\AppData\Roaming
Файлы из этой папки входят в состав перемещаемых профилей (roaming profiles, per-user). Т.е. если вы хотите, чтобы данные Вашей программы могли бы перемещаться вместе с профилем пользователя храните их в этой папке.

User\Local Settings\Application Data
XP: Documents and Settings\User\Local Settings
Vista: Users\User\AppData\Local
В этой папке можно хранить файлы, не входящие в состав перемещаемых профилей (per-user-per-machine), а так же временные и большие по размеру файлы, перемещение которых либо не требуется (временные, кэш, прочий рабочий «мусор»), либо потребует значительных временных затрат (храните файл размером в пару сотен мегабайт в перемещаемом профиле и пользователь обязательно скажет Вам «спасибо»).

All Users\Application data
XP: Documents and Settings\All Users\Application Data
Vista: ProgramData
В этой папке можно хранить файлы, которые являются общими для всех пользователей компьютера, например общая база данных, набор общих документов, клипарт и т.д. Эта папка не входит в состав перемещаемых профилей (per-machine). Обычные пользователи (не администраторы) имеют к этой папке доступ в режиме только для чтения.

  • настройки программы
  • Local Settings
  • Application Data

Как узнать, куда программа сохраняет файлы?

Как узнать, куда программа сохраняет файлы?
Например, я открыл программу, она создает документ, и сохраняет его в папку.
Как мне узнать, куда она сохраняет документ?

Дополнен 9 лет назад
Тупые ответы не оставлять
Лучший ответ

В любой проге есть раздел Свойства или помощь. Там и нужно искать. Обычно это в Документ энд сеттинг, Локал энд сеттинг или Апликейшн дата. Вот там ищи свою прогу. Открывай папки. Должна быть папка КЭШ. (как на снимке). Ну а те файлы, которые ты сам делаешь, смотри первый ответ.

Остальные ответы

Создайте документ сами и клацнете Сохранить как .В открывшемся окне и будет директория сохранения по умолчанию. Либо ищите в настройках.

В настройках программы в большинстве случаев есть опция где пользователь сам переключает каталог сохранения файлов, там и смотрите.

При установки программы (по пути установки.. вам предлагают путь установки.. но почти все программы устанавливаются в системную папку C:\Program Files)
А как вы пишите где посмотреть всё это. то и заходите в папку.. с названием этой программы.. и любуйтесь..

P.S. Комментируя Ваше дополнение в вопросе.
Осмелюсь дополнить..))
На такие тупые вопросы приходится отвечать..

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *