Prevent a directory in /tmp from being deletedParitioning Scheme: Arch Linux server & laptopWhat are correct permissions for /tmp ? I unintentionally set it all public recursivelyWhat can go wrong if /var/tmp is on a temporary filesystem?Small RAM-based /tmpDo Links to /tmp files get deleted?Moving /tmp folder to different location. Problems with /tmp not being emptiedFolder in /tmp won't delete despite the computer being restartedis /tmp guaranteed to exist?tmp directory for development that gets cleared regularly?When are files from /tmp deleted?

How to solve constants out of the internal energy equation?

Will tsunami waves travel forever if there was no land?

Does the sign matter for proportionality?

How much cash can I safely carry into the USA and avoid civil forfeiture?

A ​Note ​on ​N!

Binary Numbers Magic Trick

Meaning of Bloch representation

French for 'It must be my imagination'?

Apply MapThread to all but one variable

How do I reattach a shelf to the wall when it ripped out of the wall?

With a Canadian student visa, can I spend a night at Vancouver before continuing to Toronto?

What makes accurate emulation of old systems a difficult task?

Noun clause (singular all the time?)

What is the strongest case that can be made in favour of the UK regaining some control over fishing policy after Brexit?

Pass By Reference VS Pass by Value

Does holding a wand and speaking its command word count as V/S/M spell components?

Examples of subgroups where it's nontrivial to show closure under multiplication?

Is there any limitation with Arduino Nano serial communication distance?

What does KSP mean?

How can I place the product on a social media post better?

Critique of timeline aesthetic

Is the 5 MB static resource size limit 5,242,880 bytes or 5,000,000 bytes?

Stop and Take a Breath!

Is there an official tutorial for installing Ubuntu 18.04+ on a device with an SSD and an additional internal hard drive?



Prevent a directory in /tmp from being deleted


Paritioning Scheme: Arch Linux server & laptopWhat are correct permissions for /tmp ? I unintentionally set it all public recursivelyWhat can go wrong if /var/tmp is on a temporary filesystem?Small RAM-based /tmpDo Links to /tmp files get deleted?Moving /tmp folder to different location. Problems with /tmp not being emptiedFolder in /tmp won't delete despite the computer being restartedis /tmp guaranteed to exist?tmp directory for development that gets cleared regularly?When are files from /tmp deleted?






.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;








10















I often use the /tmp directory on my Linux machine for storing temporary files (e.g. PDFs from a site that wants me to download it first etc.) and I often create a directory with my username. But at every startup it (including all files) gets deleted. Now I know I can put it in /var/tmp, but I want all its contents to be deleted, but for the directory itself to be kept.
So:



tmp
|- me # this should stay
| |- foo1 # this should be deleted...
| |- bar1 # ...and this as well
|- other stuff...


Is there any way to do this? Maybe with permissions or with a special configuration?










share|improve this question



















  • 1





    As a workaround, you might put some code into your shell's login files to "test & mkdir" as needed.

    – Jeff Schaller
    Apr 7 at 12:43






  • 3





    /tmp is likely a tmpfs filesystem. Those files aren't really deleted; they're simply stored in RAM and lost on a reboot. That's why you get answers that boil down to "re-create it on boot or login"

    – MSalters
    Apr 8 at 8:51

















10















I often use the /tmp directory on my Linux machine for storing temporary files (e.g. PDFs from a site that wants me to download it first etc.) and I often create a directory with my username. But at every startup it (including all files) gets deleted. Now I know I can put it in /var/tmp, but I want all its contents to be deleted, but for the directory itself to be kept.
So:



tmp
|- me # this should stay
| |- foo1 # this should be deleted...
| |- bar1 # ...and this as well
|- other stuff...


Is there any way to do this? Maybe with permissions or with a special configuration?










share|improve this question



















  • 1





    As a workaround, you might put some code into your shell's login files to "test & mkdir" as needed.

    – Jeff Schaller
    Apr 7 at 12:43






  • 3





    /tmp is likely a tmpfs filesystem. Those files aren't really deleted; they're simply stored in RAM and lost on a reboot. That's why you get answers that boil down to "re-create it on boot or login"

    – MSalters
    Apr 8 at 8:51













10












10








10


1






I often use the /tmp directory on my Linux machine for storing temporary files (e.g. PDFs from a site that wants me to download it first etc.) and I often create a directory with my username. But at every startup it (including all files) gets deleted. Now I know I can put it in /var/tmp, but I want all its contents to be deleted, but for the directory itself to be kept.
So:



tmp
|- me # this should stay
| |- foo1 # this should be deleted...
| |- bar1 # ...and this as well
|- other stuff...


Is there any way to do this? Maybe with permissions or with a special configuration?










share|improve this question
















I often use the /tmp directory on my Linux machine for storing temporary files (e.g. PDFs from a site that wants me to download it first etc.) and I often create a directory with my username. But at every startup it (including all files) gets deleted. Now I know I can put it in /var/tmp, but I want all its contents to be deleted, but for the directory itself to be kept.
So:



tmp
|- me # this should stay
| |- foo1 # this should be deleted...
| |- bar1 # ...and this as well
|- other stuff...


Is there any way to do this? Maybe with permissions or with a special configuration?







tmp






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Apr 7 at 13:59









ctrl-alt-delor

12.7k52663




12.7k52663










asked Apr 7 at 12:16









Linux4winLinux4win

514




514







  • 1





    As a workaround, you might put some code into your shell's login files to "test & mkdir" as needed.

    – Jeff Schaller
    Apr 7 at 12:43






  • 3





    /tmp is likely a tmpfs filesystem. Those files aren't really deleted; they're simply stored in RAM and lost on a reboot. That's why you get answers that boil down to "re-create it on boot or login"

    – MSalters
    Apr 8 at 8:51












  • 1





    As a workaround, you might put some code into your shell's login files to "test & mkdir" as needed.

    – Jeff Schaller
    Apr 7 at 12:43






  • 3





    /tmp is likely a tmpfs filesystem. Those files aren't really deleted; they're simply stored in RAM and lost on a reboot. That's why you get answers that boil down to "re-create it on boot or login"

    – MSalters
    Apr 8 at 8:51







1




1





As a workaround, you might put some code into your shell's login files to "test & mkdir" as needed.

– Jeff Schaller
Apr 7 at 12:43





As a workaround, you might put some code into your shell's login files to "test & mkdir" as needed.

– Jeff Schaller
Apr 7 at 12:43




3




3





/tmp is likely a tmpfs filesystem. Those files aren't really deleted; they're simply stored in RAM and lost on a reboot. That's why you get answers that boil down to "re-create it on boot or login"

– MSalters
Apr 8 at 8:51





/tmp is likely a tmpfs filesystem. Those files aren't really deleted; they're simply stored in RAM and lost on a reboot. That's why you get answers that boil down to "re-create it on boot or login"

– MSalters
Apr 8 at 8:51










4 Answers
4






active

oldest

votes


















13














I use pam-tmpdir for this: it creates a user-private temporary directory at login. To set it up, add



session optional pam_tmpdir.so


to the appropriate PAM services; on a Debian-based system, installing the libpam-tmpdir package will offer to do this for you, or you can add the line to /etc/pam.d/common-session. The next time you log in, you’ll find a directory under /tmp/user with your user id, and TMP and TMPDIR set appropriately.






share|improve this answer




















  • 7





    Could you explain what the appropriate PAM services are and how the line can be added to them? What files should be edited?

    – terdon
    Apr 7 at 13:53


















4














One solution would be to use a @reboot cron job:



@reboot mkdir -p "/tmp/$USER"


Adding this to your crontab with crontab -e would make it execute whenever the machine boots up.



Or, use



mkdir -p "/tmp/$USER"


in your shell's startup file.



In either case, you may also want to use



TMPDIR=/tmp/$USER
export TMPDIR


in your shell's startup file if you want to use that directory as the default temporary directory.






share|improve this answer























  • Will this a) create directories for all users and b) trigger from 'cold' startup as well?

    – Linux4win
    Apr 12 at 9:47







  • 1





    @Linux4win This answer addresses the needs of a single user, because this is how you phrased the question. It does not matter how the machine is booted (hot, cold, or lukewarm), but it would not trigger when resuming from hibernation (because that's not booting).

    – Kusalananda
    Apr 12 at 9:48












  • For some reason adding @reboot mkdir -p "/tmp/$USER" to the end of the crontab does not do anything, while running mkdir -p "/tmp/$USER" actually creates the directory. The second one does not work for me by the way, because I need to access my /tmp through other programs, and firing up the shell everytime is kinda annoying...

    – Linux4win
    Apr 12 at 10:00












  • @Linux4win The @reboot cron job does not create a directory? Are you getting any email sent to your account with any error messages from the cron daemon?

    – Kusalananda
    Apr 12 at 10:02











  • well no... Maybe because I haven't configured mail? Or is that not required?

    – Linux4win
    Apr 12 at 10:14


















1














As pointed out in the comments, /tmp is for files that are transient and won't be missed if they're deleted. If you're in the middle of something and the machine reboots, anything you've written there will disappear and you'll have to start over, which means those files might not have been so temporary after all.



I maintained a temporary directory in my home directory for many years starting when a gigabyte was a lot of space and found that it required periodic grooming to get rid of files that had become old and crufty. Most of the time what I had left after that process was less than a couple of weeks old, so I now clean it up with a cron job that runs once daily:



find $HOME/tmp -depth -mtime +30 -print0 | xargs -0 -r rm -rf


Anything I download or create as semi-temporary goes there and the system cleans up anything I leave behind. Anything that needs a permanent home gets one long before the cron job gets rid of it.






share|improve this answer























  • mkdir a a/b; touch a/b/c. Now wait until your 30 days has expired. As you delete c it'll update b, which will mean it has to wait for a further 30 days. Likewise with a when you delete b. Secondly, if you create files in b but don't touch a for 30 days, the a directory will get hit with rm -rf and wipe out your recent files under b.

    – roaima
    Apr 7 at 18:31












  • find "$HOME"/tmp -mtime +30 -type f -delete; find "$HOME/tmp" -depth -mmin +60 -type d -exec rmdir + 2>/dev/null works for me

    – roaima
    Apr 7 at 18:32



















1














If you're running no a system with systemd and it uses systemd-tmpfiles to manage the cleanup, then you should configure the directory using that system.



Here's a full documentation. You can likely achieve what you want by creating /etc/tmpfiles.d/something.conf with contents like:



d /tmp/your_username 0750 your_user your_group - -





share|improve this answer























    Your Answer








    StackExchange.ready(function()
    var channelOptions =
    tags: "".split(" "),
    id: "106"
    ;
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function()
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled)
    StackExchange.using("snippets", function()
    createEditor();
    );

    else
    createEditor();

    );

    function createEditor()
    StackExchange.prepareEditor(
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: false,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: null,
    bindNavPrevention: true,
    postfix: "",
    imageUploader:
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    ,
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    );



    );













    draft saved

    draft discarded


















    StackExchange.ready(
    function ()
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f511029%2fprevent-a-directory-in-tmp-from-being-deleted%23new-answer', 'question_page');

    );

    Post as a guest















    Required, but never shown

























    4 Answers
    4






    active

    oldest

    votes








    4 Answers
    4






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    13














    I use pam-tmpdir for this: it creates a user-private temporary directory at login. To set it up, add



    session optional pam_tmpdir.so


    to the appropriate PAM services; on a Debian-based system, installing the libpam-tmpdir package will offer to do this for you, or you can add the line to /etc/pam.d/common-session. The next time you log in, you’ll find a directory under /tmp/user with your user id, and TMP and TMPDIR set appropriately.






    share|improve this answer




















    • 7





      Could you explain what the appropriate PAM services are and how the line can be added to them? What files should be edited?

      – terdon
      Apr 7 at 13:53















    13














    I use pam-tmpdir for this: it creates a user-private temporary directory at login. To set it up, add



    session optional pam_tmpdir.so


    to the appropriate PAM services; on a Debian-based system, installing the libpam-tmpdir package will offer to do this for you, or you can add the line to /etc/pam.d/common-session. The next time you log in, you’ll find a directory under /tmp/user with your user id, and TMP and TMPDIR set appropriately.






    share|improve this answer




















    • 7





      Could you explain what the appropriate PAM services are and how the line can be added to them? What files should be edited?

      – terdon
      Apr 7 at 13:53













    13












    13








    13







    I use pam-tmpdir for this: it creates a user-private temporary directory at login. To set it up, add



    session optional pam_tmpdir.so


    to the appropriate PAM services; on a Debian-based system, installing the libpam-tmpdir package will offer to do this for you, or you can add the line to /etc/pam.d/common-session. The next time you log in, you’ll find a directory under /tmp/user with your user id, and TMP and TMPDIR set appropriately.






    share|improve this answer















    I use pam-tmpdir for this: it creates a user-private temporary directory at login. To set it up, add



    session optional pam_tmpdir.so


    to the appropriate PAM services; on a Debian-based system, installing the libpam-tmpdir package will offer to do this for you, or you can add the line to /etc/pam.d/common-session. The next time you log in, you’ll find a directory under /tmp/user with your user id, and TMP and TMPDIR set appropriately.







    share|improve this answer














    share|improve this answer



    share|improve this answer








    edited Apr 7 at 16:01

























    answered Apr 7 at 13:15









    Stephen KittStephen Kitt

    183k26420500




    183k26420500







    • 7





      Could you explain what the appropriate PAM services are and how the line can be added to them? What files should be edited?

      – terdon
      Apr 7 at 13:53












    • 7





      Could you explain what the appropriate PAM services are and how the line can be added to them? What files should be edited?

      – terdon
      Apr 7 at 13:53







    7




    7





    Could you explain what the appropriate PAM services are and how the line can be added to them? What files should be edited?

    – terdon
    Apr 7 at 13:53





    Could you explain what the appropriate PAM services are and how the line can be added to them? What files should be edited?

    – terdon
    Apr 7 at 13:53













    4














    One solution would be to use a @reboot cron job:



    @reboot mkdir -p "/tmp/$USER"


    Adding this to your crontab with crontab -e would make it execute whenever the machine boots up.



    Or, use



    mkdir -p "/tmp/$USER"


    in your shell's startup file.



    In either case, you may also want to use



    TMPDIR=/tmp/$USER
    export TMPDIR


    in your shell's startup file if you want to use that directory as the default temporary directory.






    share|improve this answer























    • Will this a) create directories for all users and b) trigger from 'cold' startup as well?

      – Linux4win
      Apr 12 at 9:47







    • 1





      @Linux4win This answer addresses the needs of a single user, because this is how you phrased the question. It does not matter how the machine is booted (hot, cold, or lukewarm), but it would not trigger when resuming from hibernation (because that's not booting).

      – Kusalananda
      Apr 12 at 9:48












    • For some reason adding @reboot mkdir -p "/tmp/$USER" to the end of the crontab does not do anything, while running mkdir -p "/tmp/$USER" actually creates the directory. The second one does not work for me by the way, because I need to access my /tmp through other programs, and firing up the shell everytime is kinda annoying...

      – Linux4win
      Apr 12 at 10:00












    • @Linux4win The @reboot cron job does not create a directory? Are you getting any email sent to your account with any error messages from the cron daemon?

      – Kusalananda
      Apr 12 at 10:02











    • well no... Maybe because I haven't configured mail? Or is that not required?

      – Linux4win
      Apr 12 at 10:14















    4














    One solution would be to use a @reboot cron job:



    @reboot mkdir -p "/tmp/$USER"


    Adding this to your crontab with crontab -e would make it execute whenever the machine boots up.



    Or, use



    mkdir -p "/tmp/$USER"


    in your shell's startup file.



    In either case, you may also want to use



    TMPDIR=/tmp/$USER
    export TMPDIR


    in your shell's startup file if you want to use that directory as the default temporary directory.






    share|improve this answer























    • Will this a) create directories for all users and b) trigger from 'cold' startup as well?

      – Linux4win
      Apr 12 at 9:47







    • 1





      @Linux4win This answer addresses the needs of a single user, because this is how you phrased the question. It does not matter how the machine is booted (hot, cold, or lukewarm), but it would not trigger when resuming from hibernation (because that's not booting).

      – Kusalananda
      Apr 12 at 9:48












    • For some reason adding @reboot mkdir -p "/tmp/$USER" to the end of the crontab does not do anything, while running mkdir -p "/tmp/$USER" actually creates the directory. The second one does not work for me by the way, because I need to access my /tmp through other programs, and firing up the shell everytime is kinda annoying...

      – Linux4win
      Apr 12 at 10:00












    • @Linux4win The @reboot cron job does not create a directory? Are you getting any email sent to your account with any error messages from the cron daemon?

      – Kusalananda
      Apr 12 at 10:02











    • well no... Maybe because I haven't configured mail? Or is that not required?

      – Linux4win
      Apr 12 at 10:14













    4












    4








    4







    One solution would be to use a @reboot cron job:



    @reboot mkdir -p "/tmp/$USER"


    Adding this to your crontab with crontab -e would make it execute whenever the machine boots up.



    Or, use



    mkdir -p "/tmp/$USER"


    in your shell's startup file.



    In either case, you may also want to use



    TMPDIR=/tmp/$USER
    export TMPDIR


    in your shell's startup file if you want to use that directory as the default temporary directory.






    share|improve this answer













    One solution would be to use a @reboot cron job:



    @reboot mkdir -p "/tmp/$USER"


    Adding this to your crontab with crontab -e would make it execute whenever the machine boots up.



    Or, use



    mkdir -p "/tmp/$USER"


    in your shell's startup file.



    In either case, you may also want to use



    TMPDIR=/tmp/$USER
    export TMPDIR


    in your shell's startup file if you want to use that directory as the default temporary directory.







    share|improve this answer












    share|improve this answer



    share|improve this answer










    answered Apr 7 at 13:43









    KusalanandaKusalananda

    144k18268448




    144k18268448












    • Will this a) create directories for all users and b) trigger from 'cold' startup as well?

      – Linux4win
      Apr 12 at 9:47







    • 1





      @Linux4win This answer addresses the needs of a single user, because this is how you phrased the question. It does not matter how the machine is booted (hot, cold, or lukewarm), but it would not trigger when resuming from hibernation (because that's not booting).

      – Kusalananda
      Apr 12 at 9:48












    • For some reason adding @reboot mkdir -p "/tmp/$USER" to the end of the crontab does not do anything, while running mkdir -p "/tmp/$USER" actually creates the directory. The second one does not work for me by the way, because I need to access my /tmp through other programs, and firing up the shell everytime is kinda annoying...

      – Linux4win
      Apr 12 at 10:00












    • @Linux4win The @reboot cron job does not create a directory? Are you getting any email sent to your account with any error messages from the cron daemon?

      – Kusalananda
      Apr 12 at 10:02











    • well no... Maybe because I haven't configured mail? Or is that not required?

      – Linux4win
      Apr 12 at 10:14

















    • Will this a) create directories for all users and b) trigger from 'cold' startup as well?

      – Linux4win
      Apr 12 at 9:47







    • 1





      @Linux4win This answer addresses the needs of a single user, because this is how you phrased the question. It does not matter how the machine is booted (hot, cold, or lukewarm), but it would not trigger when resuming from hibernation (because that's not booting).

      – Kusalananda
      Apr 12 at 9:48












    • For some reason adding @reboot mkdir -p "/tmp/$USER" to the end of the crontab does not do anything, while running mkdir -p "/tmp/$USER" actually creates the directory. The second one does not work for me by the way, because I need to access my /tmp through other programs, and firing up the shell everytime is kinda annoying...

      – Linux4win
      Apr 12 at 10:00












    • @Linux4win The @reboot cron job does not create a directory? Are you getting any email sent to your account with any error messages from the cron daemon?

      – Kusalananda
      Apr 12 at 10:02











    • well no... Maybe because I haven't configured mail? Or is that not required?

      – Linux4win
      Apr 12 at 10:14
















    Will this a) create directories for all users and b) trigger from 'cold' startup as well?

    – Linux4win
    Apr 12 at 9:47






    Will this a) create directories for all users and b) trigger from 'cold' startup as well?

    – Linux4win
    Apr 12 at 9:47





    1




    1





    @Linux4win This answer addresses the needs of a single user, because this is how you phrased the question. It does not matter how the machine is booted (hot, cold, or lukewarm), but it would not trigger when resuming from hibernation (because that's not booting).

    – Kusalananda
    Apr 12 at 9:48






    @Linux4win This answer addresses the needs of a single user, because this is how you phrased the question. It does not matter how the machine is booted (hot, cold, or lukewarm), but it would not trigger when resuming from hibernation (because that's not booting).

    – Kusalananda
    Apr 12 at 9:48














    For some reason adding @reboot mkdir -p "/tmp/$USER" to the end of the crontab does not do anything, while running mkdir -p "/tmp/$USER" actually creates the directory. The second one does not work for me by the way, because I need to access my /tmp through other programs, and firing up the shell everytime is kinda annoying...

    – Linux4win
    Apr 12 at 10:00






    For some reason adding @reboot mkdir -p "/tmp/$USER" to the end of the crontab does not do anything, while running mkdir -p "/tmp/$USER" actually creates the directory. The second one does not work for me by the way, because I need to access my /tmp through other programs, and firing up the shell everytime is kinda annoying...

    – Linux4win
    Apr 12 at 10:00














    @Linux4win The @reboot cron job does not create a directory? Are you getting any email sent to your account with any error messages from the cron daemon?

    – Kusalananda
    Apr 12 at 10:02





    @Linux4win The @reboot cron job does not create a directory? Are you getting any email sent to your account with any error messages from the cron daemon?

    – Kusalananda
    Apr 12 at 10:02













    well no... Maybe because I haven't configured mail? Or is that not required?

    – Linux4win
    Apr 12 at 10:14





    well no... Maybe because I haven't configured mail? Or is that not required?

    – Linux4win
    Apr 12 at 10:14











    1














    As pointed out in the comments, /tmp is for files that are transient and won't be missed if they're deleted. If you're in the middle of something and the machine reboots, anything you've written there will disappear and you'll have to start over, which means those files might not have been so temporary after all.



    I maintained a temporary directory in my home directory for many years starting when a gigabyte was a lot of space and found that it required periodic grooming to get rid of files that had become old and crufty. Most of the time what I had left after that process was less than a couple of weeks old, so I now clean it up with a cron job that runs once daily:



    find $HOME/tmp -depth -mtime +30 -print0 | xargs -0 -r rm -rf


    Anything I download or create as semi-temporary goes there and the system cleans up anything I leave behind. Anything that needs a permanent home gets one long before the cron job gets rid of it.






    share|improve this answer























    • mkdir a a/b; touch a/b/c. Now wait until your 30 days has expired. As you delete c it'll update b, which will mean it has to wait for a further 30 days. Likewise with a when you delete b. Secondly, if you create files in b but don't touch a for 30 days, the a directory will get hit with rm -rf and wipe out your recent files under b.

      – roaima
      Apr 7 at 18:31












    • find "$HOME"/tmp -mtime +30 -type f -delete; find "$HOME/tmp" -depth -mmin +60 -type d -exec rmdir + 2>/dev/null works for me

      – roaima
      Apr 7 at 18:32
















    1














    As pointed out in the comments, /tmp is for files that are transient and won't be missed if they're deleted. If you're in the middle of something and the machine reboots, anything you've written there will disappear and you'll have to start over, which means those files might not have been so temporary after all.



    I maintained a temporary directory in my home directory for many years starting when a gigabyte was a lot of space and found that it required periodic grooming to get rid of files that had become old and crufty. Most of the time what I had left after that process was less than a couple of weeks old, so I now clean it up with a cron job that runs once daily:



    find $HOME/tmp -depth -mtime +30 -print0 | xargs -0 -r rm -rf


    Anything I download or create as semi-temporary goes there and the system cleans up anything I leave behind. Anything that needs a permanent home gets one long before the cron job gets rid of it.






    share|improve this answer























    • mkdir a a/b; touch a/b/c. Now wait until your 30 days has expired. As you delete c it'll update b, which will mean it has to wait for a further 30 days. Likewise with a when you delete b. Secondly, if you create files in b but don't touch a for 30 days, the a directory will get hit with rm -rf and wipe out your recent files under b.

      – roaima
      Apr 7 at 18:31












    • find "$HOME"/tmp -mtime +30 -type f -delete; find "$HOME/tmp" -depth -mmin +60 -type d -exec rmdir + 2>/dev/null works for me

      – roaima
      Apr 7 at 18:32














    1












    1








    1







    As pointed out in the comments, /tmp is for files that are transient and won't be missed if they're deleted. If you're in the middle of something and the machine reboots, anything you've written there will disappear and you'll have to start over, which means those files might not have been so temporary after all.



    I maintained a temporary directory in my home directory for many years starting when a gigabyte was a lot of space and found that it required periodic grooming to get rid of files that had become old and crufty. Most of the time what I had left after that process was less than a couple of weeks old, so I now clean it up with a cron job that runs once daily:



    find $HOME/tmp -depth -mtime +30 -print0 | xargs -0 -r rm -rf


    Anything I download or create as semi-temporary goes there and the system cleans up anything I leave behind. Anything that needs a permanent home gets one long before the cron job gets rid of it.






    share|improve this answer













    As pointed out in the comments, /tmp is for files that are transient and won't be missed if they're deleted. If you're in the middle of something and the machine reboots, anything you've written there will disappear and you'll have to start over, which means those files might not have been so temporary after all.



    I maintained a temporary directory in my home directory for many years starting when a gigabyte was a lot of space and found that it required periodic grooming to get rid of files that had become old and crufty. Most of the time what I had left after that process was less than a couple of weeks old, so I now clean it up with a cron job that runs once daily:



    find $HOME/tmp -depth -mtime +30 -print0 | xargs -0 -r rm -rf


    Anything I download or create as semi-temporary goes there and the system cleans up anything I leave behind. Anything that needs a permanent home gets one long before the cron job gets rid of it.







    share|improve this answer












    share|improve this answer



    share|improve this answer










    answered Apr 7 at 17:10









    BlrflBlrfl

    32414




    32414












    • mkdir a a/b; touch a/b/c. Now wait until your 30 days has expired. As you delete c it'll update b, which will mean it has to wait for a further 30 days. Likewise with a when you delete b. Secondly, if you create files in b but don't touch a for 30 days, the a directory will get hit with rm -rf and wipe out your recent files under b.

      – roaima
      Apr 7 at 18:31












    • find "$HOME"/tmp -mtime +30 -type f -delete; find "$HOME/tmp" -depth -mmin +60 -type d -exec rmdir + 2>/dev/null works for me

      – roaima
      Apr 7 at 18:32


















    • mkdir a a/b; touch a/b/c. Now wait until your 30 days has expired. As you delete c it'll update b, which will mean it has to wait for a further 30 days. Likewise with a when you delete b. Secondly, if you create files in b but don't touch a for 30 days, the a directory will get hit with rm -rf and wipe out your recent files under b.

      – roaima
      Apr 7 at 18:31












    • find "$HOME"/tmp -mtime +30 -type f -delete; find "$HOME/tmp" -depth -mmin +60 -type d -exec rmdir + 2>/dev/null works for me

      – roaima
      Apr 7 at 18:32

















    mkdir a a/b; touch a/b/c. Now wait until your 30 days has expired. As you delete c it'll update b, which will mean it has to wait for a further 30 days. Likewise with a when you delete b. Secondly, if you create files in b but don't touch a for 30 days, the a directory will get hit with rm -rf and wipe out your recent files under b.

    – roaima
    Apr 7 at 18:31






    mkdir a a/b; touch a/b/c. Now wait until your 30 days has expired. As you delete c it'll update b, which will mean it has to wait for a further 30 days. Likewise with a when you delete b. Secondly, if you create files in b but don't touch a for 30 days, the a directory will get hit with rm -rf and wipe out your recent files under b.

    – roaima
    Apr 7 at 18:31














    find "$HOME"/tmp -mtime +30 -type f -delete; find "$HOME/tmp" -depth -mmin +60 -type d -exec rmdir + 2>/dev/null works for me

    – roaima
    Apr 7 at 18:32






    find "$HOME"/tmp -mtime +30 -type f -delete; find "$HOME/tmp" -depth -mmin +60 -type d -exec rmdir + 2>/dev/null works for me

    – roaima
    Apr 7 at 18:32












    1














    If you're running no a system with systemd and it uses systemd-tmpfiles to manage the cleanup, then you should configure the directory using that system.



    Here's a full documentation. You can likely achieve what you want by creating /etc/tmpfiles.d/something.conf with contents like:



    d /tmp/your_username 0750 your_user your_group - -





    share|improve this answer



























      1














      If you're running no a system with systemd and it uses systemd-tmpfiles to manage the cleanup, then you should configure the directory using that system.



      Here's a full documentation. You can likely achieve what you want by creating /etc/tmpfiles.d/something.conf with contents like:



      d /tmp/your_username 0750 your_user your_group - -





      share|improve this answer

























        1












        1








        1







        If you're running no a system with systemd and it uses systemd-tmpfiles to manage the cleanup, then you should configure the directory using that system.



        Here's a full documentation. You can likely achieve what you want by creating /etc/tmpfiles.d/something.conf with contents like:



        d /tmp/your_username 0750 your_user your_group - -





        share|improve this answer













        If you're running no a system with systemd and it uses systemd-tmpfiles to manage the cleanup, then you should configure the directory using that system.



        Here's a full documentation. You can likely achieve what you want by creating /etc/tmpfiles.d/something.conf with contents like:



        d /tmp/your_username 0750 your_user your_group - -






        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Apr 7 at 22:59









        viraptorviraptor

        20217




        20217



























            draft saved

            draft discarded
















































            Thanks for contributing an answer to Unix & Linux Stack Exchange!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid


            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.

            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f511029%2fprevent-a-directory-in-tmp-from-being-deleted%23new-answer', 'question_page');

            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            Adding axes to figuresAdding axes labels to LaTeX figuresLaTeX equivalent of ConTeXt buffersRotate a node but not its content: the case of the ellipse decorationHow to define the default vertical distance between nodes?TikZ scaling graphic and adjust node position and keep font sizeNumerical conditional within tikz keys?adding axes to shapesAlign axes across subfiguresAdding figures with a certain orderLine up nested tikz enviroments or how to get rid of themAdding axes labels to LaTeX figures

            Luettelo Yhdysvaltain laivaston lentotukialuksista Lähteet | Navigointivalikko

            Gary (muusikko) Sisällysluettelo Historia | Rockin' High | Lähteet | Aiheesta muualla | NavigointivalikkoInfobox OKTuomas "Gary" Keskinen Ancaran kitaristiksiProjekti Rockin' High