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 ?
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