Clear Tmp Directories

In this example, we clear the tmp directories (for example, /tmp, /var/tmp, /usr/tmp, etc.) of junk and garbage files, and files more than x days old.

For the most part, the ClearTmp script removes junk files automatically and silently, but for files it is unsure of (e.g., root-owned files), it might send an alert message like the following:

                               PIKT ALERT
                        Tue Jul 15 09:51:50 2003
                                 antwerp

NOTICE:
    ClearTmp
        Clear the tmp directories of garbage files

        orphaned?: -rw-rw-rw- 1 root daemon 1234 Jun 28 08:26 /tmp/auth.log
        orphaned?: -rw-r--r-- 1 root daemon 7336 Jun 28 08:26 /tmp/fstab.orig

ClearTmp makes reference to the =apls macro, which resolves to apls.pl, a Perl script that gives an "ls -l" listing with absolute file paths.  =dirs_tmp_obj resolves to DirsTmp.obj, a list of tmp directories we want to check, for example

/tmp
/var/tmp
/usr/tmp
...

The script follows.

ClearTmp

        init
                status =piktstatus
                level =piktlevel
                task "Clear the tmp directories of garbage files"
                input proc "=apls =dirs_tmp_obj"
                filter "=grep -v '^l'"          // filter out links
                =lldata

        rule
                set #fa = #fileage($name)

        rule    // skip these files/directories
                if $name =~ "^/tmp/(ups_data|screens|lost\\+found)"
                        // =execwait "=touch $name"
                        next
                endif

        rule    // remove junk files 2 days old or older
                if $name =~ "^/tmp/(crout|tty\\.txt|xntp[0-9]|
                                    \\.X11-unix|\\.X11-pipe|
                                    junk[0-9]*|\\.printd\\.lock|)"
                        if (#fa > 2)
                                =execwait "=rm -rf $name"
                        endif
                        next
                endif

        rule    // remove all non-root stuff 7 days old or older,
                // or all stuff in, for example, /var/tmp
                if    #fa >= 7
                   && (($owner ne "root") || ($name !~ "^/tmp$"))
                        =execwait "=rm -rf $name"
                        next
                fi

#if ! ( sheffield | berlin )
        rule    // report all root stuff older than 15 days
                if    #fa > 15
                   && $owner eq "root"
                        =weekly(output mail "orphaned?: $inline", )
                endif
#endif

For more examples, see Samples.

 
Home | FAQ | News | Intro | Samples | Tutorial | Reference | Software
Developer's Notes | Licensing | Authors | Pikt-Users | Pikt-Workers | Related Projects | Site Index | Privacy Policy | Contact Us
Page best viewed at 1024x768 or greater.   Page last updated 2019-01-12.   This site is PIKT® powered.
Copyright © 1998-2019 Robert Osterlund. All rights reserved.
Home FAQ News Intro Samples Tutorial Reference Software
PIKT Logo
PIKT Page Title
View sample
clear tmp
directories
Pikt script