Я часто использую /tmp
каталог на своем компьютере с Linux для хранения временных файлов (например, PDF-файлов с сайта, который хочет, чтобы я сначала его скачал и т. Д.), И я часто создаю каталог с моим именем пользователя. Но при каждом запуске он (включая все файлы) удаляется. Теперь я знаю, что могу вставить его /var/tmp
, но я хочу, чтобы все его содержимое было удалено, но для самого каталога. Так:
tmp
|- me # this should stay
| |- foo1 # this should be deleted...
| |- bar1 # ...and this as well
|- other stuff...
Есть какой-либо способ сделать это? Может с разрешениями или со специальной конфигурацией?
/tmp
скорее всегоtmpfs
файловая система. Эти файлы на самом деле не удалены; они просто хранятся в оперативной памяти и теряются при перезагрузке. Вот почему вы получаете ответы, которые сводятся к тому, чтобы «воссоздать его при загрузке или при входе в систему»Ответы:
Одним из решений будет использование
@reboot
задания cron:Добавление этого в ваш crontab с
crontab -e
заставит его выполняться всякий раз, когда машина загружается.Или используйте
в файле запуска вашей оболочки.
В любом случае, вы также можете использовать
в файле запуска вашей оболочки, если вы хотите использовать этот каталог в качестве временного каталога по умолчанию.
источник
@reboot mkdir -p "/tmp/$USER"
в конец crontab ничего не делает, а при запускеmkdir -p "/tmp/$USER"
фактически создает каталог. Второй, кстати, у меня не работает, потому что мне нужно получить доступ к своим/tmp
через другие программы, и каждый раз@reboot
cron не создает каталог? Получаете ли вы электронное письмо, отправленное в вашу учетную запись с сообщениями об ошибках от демона cron?mail
? Или это не обязательно?Я использую
pam-tmpdir
для этого: он создает личный временный каталог при входе в систему. Чтобы настроить его, добавьтена соответствующие услуги PAM; в системе на основе Debian установка
libpam-tmpdir
пакета предложит сделать это за вас, или вы можете добавить строку в/etc/pam.d/common-session
. В следующий раз , когда вы войти, вы найдете каталог под/tmp/user
с идентификатором пользователя, а такжеTMP
иTMPDIR
устанавливается соответствующим образом .источник
Если вы не используете систему с systemd и она использует systemd-tmpfiles для управления очисткой, то вам следует настроить каталог с помощью этой системы.
Вот полная документация . Скорее всего, вы можете достичь того, чего хотите, создавая
/etc/tmpfiles.d/something.conf
с таким содержимым, как:источник
Как указано в комментариях,
/tmp
для файлов, которые являются временными и не будут пропущены, если они будут удалены. Если вы находитесь в середине чего-то, и машина перезагружается, все, что вы там написали, исчезнет, и вам придется начинать все сначала, что означает, что эти файлы, возможно, не были такими временными.Я поддерживал временный каталог в своем домашнем каталоге в течение многих лет, начиная с гигабайта, и обнаружил, что требуется периодическая обработка, чтобы избавиться от файлов, которые стали старыми и неуклюжими. Большую часть времени, которое я оставил после этого процесса, было менее двух недель, так что теперь я очищаю его с помощью задания cron, которое выполняется один раз в день:
Все, что я загружаю или создаю как временное, идет туда, и система очищает все, что я оставляю. Все, что нуждается в постоянном доме, получает его задолго до того, как работа cron избавляется от него.
источник
mkdir a a/b; touch a/b/c
, Теперь подождите, пока ваши 30 дней не истекли. Когда вы удалитеc
его, он обновитсяb
, что будет означать, что ему придется ждать еще 30 дней. Аналогично с тем,a
когда вы удаляетеb
. Во-вторых, если вы создаете файлы,b
но не трогаете их вa
течение 30 дней,a
каталог попадетrm -rf
под ваши последние файлыb
.find "$HOME"/tmp -mtime +30 -type f -delete; find "$HOME/tmp" -depth -mmin +60 -type d -exec rmdir {} + 2>/dev/null
у меня работает