Prevent a directory in /tmp from being 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









New contributor




Linux4win is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
















  • 1





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

    – Jeff Schaller
    yesterday






  • 2





    /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
    13 hours ago


















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









New contributor




Linux4win is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
















  • 1





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

    – Jeff Schaller
    yesterday






  • 2





    /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
    13 hours ago














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









New contributor




Linux4win is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.












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









New contributor




Linux4win is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.











share|improve this question









New contributor




Linux4win is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









share|improve this question




share|improve this question








edited yesterday









ctrl-alt-delor

12.4k52661




12.4k52661






New contributor




Linux4win is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









asked yesterday









Linux4winLinux4win

513




513




New contributor




Linux4win is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.





New contributor





Linux4win is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.






Linux4win is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.








  • 1





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

    – Jeff Schaller
    yesterday






  • 2





    /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
    13 hours ago














  • 1





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

    – Jeff Schaller
    yesterday






  • 2





    /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
    13 hours ago








1




1





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

– Jeff Schaller
yesterday





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

– Jeff Schaller
yesterday




2




2





/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
13 hours ago





/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
13 hours ago










4 Answers
4






active

oldest

votes


















12














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





















  • 6





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

    – terdon
    yesterday



















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































    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
      yesterday













    • 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
      yesterday





















    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
      });


      }
      });






      Linux4win is a new contributor. Be nice, and check out our Code of Conduct.










      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









      12














      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





















      • 6





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

        – terdon
        yesterday
















      12














      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





















      • 6





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

        – terdon
        yesterday














      12












      12








      12







      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 yesterday

























      answered yesterday









      Stephen KittStephen Kitt

      180k25411491




      180k25411491








      • 6





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

        – terdon
        yesterday














      • 6





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

        – terdon
        yesterday








      6




      6





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

      – terdon
      yesterday





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

      – terdon
      yesterday













      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




























        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


























          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 yesterday









          KusalanandaKusalananda

          140k17261435




          140k17261435























              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
                yesterday













              • 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
                yesterday


















              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
                yesterday













              • 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
                yesterday
















              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 yesterday









              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
                yesterday













              • 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
                yesterday





















              • 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
                yesterday













              • 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
                yesterday



















              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
              yesterday







              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
              yesterday















              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
              yesterday







              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
              yesterday













              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 23 hours ago









                  viraptorviraptor

                  20217




                  20217






















                      Linux4win is a new contributor. Be nice, and check out our Code of Conduct.










                      draft saved

                      draft discarded


















                      Linux4win is a new contributor. Be nice, and check out our Code of Conduct.













                      Linux4win is a new contributor. Be nice, and check out our Code of Conduct.












                      Linux4win is a new contributor. Be nice, and check out our Code of Conduct.
















                      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

                      Knooppunt Holsloot

                      Altaar (religie)

                      Gregoriusmis