CentOS7 Tmpfiles.d Deleted Outdate Files

Home » CentOS » CentOS7 Tmpfiles.d Deleted Outdate Files
CentOS 6 Comments

Hi all,

I use CentOS7 and don’t want to use tmpwatch as well as crond.

I have a question to use `systemd-tmpfiles-clean.service` with my custom configured file in `tmpfiles.d` to delete outdated files periodically in some log dir.

I have a `tmpfiles.d` configured file in `/etc/tmpfiles.d` named
`my_log.conf` in following contents.

“`
#Type Path Mode UID GID Age Arg r /chenqiang 0775 root root 10s r /chenqiang/test_10s r /chenqiang/test_20s
“`

If I run `systemd-tmpfiles –remove` with above configure, all files and dir will be deleted if I set ‘r’ type for the files and dir. but, I want to only delete some outdated files in the dir. and I use
`systemd-tmpfiles –clean` with following configure.

“`
#Type Path Mode UID GID Age Arg d /chenqiang 0775 root root 10s f /chenqiang/test_10s 0660 root root 10s f /chenqiang/test_20s 0660 root root 20s
“`

It can delete dir if the age > 10s, but can’t delete the files in it.

So, would some one help me if I want to delete the outdated files ?

6 thoughts on - CentOS7 Tmpfiles.d Deleted Outdate Files

  • Hi all,

    I use CentOS7 and don’t want to use tmpwatch as well as crond.

    I have a question to use `systemd-tmpfiles-clean.service` with my custom configured file in `tmpfiles.d` to delete outdated files periodically in some log dir.

    I have a `tmpfiles.d` configured file in `/etc/tmpfiles.d` named
    `my_log.conf` in following contents.

    “`
    #Type Path Mode UID GID Age Arg r /chenqiang 0775 root root 10s r /chenqiang/test_10s r /chenqiang/test_20s
    “`

    If I run `systemd-tmpfiles –remove` with above configure, all files and dir will be deleted if I set ‘r’ type for the files and dir. but, I want to only delete some outdated files in the dir. and I use
    `systemd-tmpfiles –clean` with following configure.

    “`
    #Type Path Mode UID GID Age Arg d /chenqiang 0775 root root 10s f /chenqiang/test_10s 0660 root root 10s f /chenqiang/test_20s 0660 root root 20s
    “`

    It can delete dir if the age > 10s, but can’t delete the files in it.

    So, would some one help me if I want to delete the outdated files ?

  • Would some one help me for this question? thanks very much.


    Best Regards, Chen, Qiang

  • I would suggest reading the tmpfiles.d man page.

    Use ‘d’ for the directory, and ‘r’ for the files you want to remove, including the age. Something like ‘r /path/* – – – 10s’.

  • The man page for tmpfiles.d says, of the age field:
    “The age field only applies to lines starting with d, D, and x.”

    So, the line:

    d /chenqiang/test_10s 0660 root root 10s

    indicates that systemd-tmpfiles should create the directory
    /chenqiang/test_10s, owned by root/root with mode 0660, and periodically clean it of files and empty directories more than 10s old.

    Note that the default configuration runs systemd-tmpfiles once per day, so specifying time periods much smaller than that may not be useful.

  • so, there no method to delete special files that below a directory?

    such as in the directory

    [root@chenqiang]# tree
    .
    ├── test_10d
    └── test_20d

    0 directories, 2 files
    [root@chenqiang]# ll total 8
    -rw-r–r– 1 root root 4 5月 20 19:14 test_10d
    -rw-r–r– 1 root root 4 5月 10 19:15 test_20d

    So, I want to delete file test_20d, keep test_10d, how to do that? thx.


    Best Regards, Chen, Qiang

  • Hi Jonathan Billings,

    the `age` can’t apply to ‘r’, only would apply to ‘d’, ‘D’, ‘x’, ‘X’, etc

    “The age field only applies to lines starting with |d|, |D|, |v|, |q|,
    |Q|, |C|, |x| and |X|. If omitted or set to “|-|”, no automatic clean-up is done.”

    so, there have good idea if I only want to delete the specific files not all files in that dir? thx.


    Best Regards, Chen, Qiang