Index Index for
Section 8
Index Alphabetical
listing for D
Bottom of page Bottom of
page

dirclean(8)

NAME

dirclean - Clean directories based on time and type criteria

SYNOPSIS

/usr/sbin/dirclean [-a|c|m|t [+|-]days]... [-k types] [-n] [-o] [-v] [-D] dirlist /usr/sbin/dirclean -H

OPTIONS

-a [+|-]days Sets the threshold for file removal in terms of the file's atime (access time). Files are removed only if they were accessed more than (+), less than (-), or exactly the specified number of whole days ago. It is important to remember that the utility's threshold for file removal is specified in terms of whole days whereas a file's atime value is a timestamp that includes hours and minutes (a partial day). The utility truncates the file's atime timestamp to whole days. Therefore, +1 means that files that were last accessed at least 48 hours before dirclean processing will be removed. Specifying -1 means that files accessed less than 24 hours before dirclean processing will be removed, and 1 means files that were last accessed at least 24 hours ago but less than 48 hours ago will be removed. -c [+|-]days Sets the threshold for file removal in terms of the file's ctime (inode change time). Files are removed only if they have an inode change time that is more than (+), less than (-), or exactly the specified number of whole days. See the description of the -a option for information about how truncation of timestamp values affects specification of the option argument. -k types Specifies which types of filesystem objects to keep. The types string can be zero or more letters from the following list (chosen to match the -type option of the find command): b Keeps block-special files. c Keeps character-special files. d Keeps directories. f Keeps plain (regular) files. l Keeps symbolic links. p Keeps named pipes ('fifos'). s Keeps UNIX-domain sockets. Alternatively, you can use -k '' to specify that none of the above are to be kept; in other words, -k '' specifies that all files of the preceding types should be removed. If the -k option is omitted from the command line, the default is -k s (keep UNIX-domain sockets). In all cases, dirclean removes directories only if they are empty. -m [+|-]days Sets the threshold for file removal in terms of the file's mtime (modification time). Files are removed only if they were last modified more than (+), less than (-), or exactly the specified number of whole days ago. See the description of the -a option for information about how truncation of timestamp values affects specification of the option argument. -n No-removal mode. Tells which files would be deleted by the command without actually deleting them. Specifying -n implicitly specifies -v (verbose mode). -o Skips (does not remove) files that are open or otherwise in use by other processes. -t [+|-]days Simultaneously applies the [+|-]days argument to each of the atime, ctime, and mtime options. The -t option is a shorthand way of specifying the -a, -c, and -m options with identical arguments. -v Verbose mode; lists all files removed. -D Debug mode; lists why any target entries are not removed. -H Gives an extended usage summary to standard output and exits successfully.

OPERANDS

dirlist Specifies one or more pathnames (in a space-separated list) of starting directories from which to recursively remove files. Pathnames may be absolute or relative.

DESCRIPTION

The dirclean utility recursively removes files that meet the constraints supplied by the option list. The utility is typically used to clean out old files from directories, such as /tmp, that are used as holding space for temporary files. The operation of this utility is similar to that of the find and rm command combinations that are generally used to remove stale file entries; however, dirclean removes files more quickly and in a more secure manner than is possible with multi-process solutions. For each starting directory (as supplied by dirlist), the dirclean utility recursively unlinks subordinate files that meet the constraints given by the options, which may appear in any order; however, the utility does not traverse any subdirectories that lead into a different file system. You can specify both minimum and maximum age thresholds in terms of a file's atime, ctime, and mtime values. This requires entering two instances of the options that specify these thresholds to set the range. However, an error results if you specify more than one maximum and one minimum timestamp for any of the atime, ctime, or mtime settings. An error also results if the specified minimum exceeds the specified maximum. (The combination of -a -1 and -a +1 is an example of this error condition.) If the command line does not contain any -a, -c, -m, or -t options, target files are removed regardless of when they were created, modified, or last accessed.

RESTRICTIONS

The dirclean utility is less flexible than the find and rm combinations which it is intended to replace. Specifically, there is no way to give dirclean a file exclusion list.

EXIT STATUS

0 (Zero) Successfully traversed all the starting directories supplied by dirlist. 1 At least one removal operation failed during directory traversal. 2 At least one pathname in dirlist was not a directory. 3 A system call invoked by the utility failed unexpectedly. 4 Incorrect arguments or another usage error was encountered.

ERRORS

The following diagnostics may be printed to standard error during the normal course of utility operation. The message text shown in this reference page includes printf() substitution directives, such as %c, which are replaced with real values as explained in the message description. However, a message shown with a trailing %m ends with the standard strerror() text for a failure condition returned by an underlying system call. The diagnostic descriptions do not discuss the system call failure messages that replace %m. See intro(2) for information about errors returned by system calls. · Usage: dirclean [-{acmt} [+-]days] [-k types] [-o] [-v] [-D] dirlist An unrecognized option was encountered, or the dirlist argument was omitted. · dirclean: Invalid timestamp value for '-%c' option: %s The argument for one of the timestamp options (-a, -c, -m, or -t) was not syntactically valid. The argument was not a string of digits with an optional leading plus (+) or minus (-) . The '-%c' directive is replaced with the option being parsed, and the %s directive is replaced with the invalid argument. · dirclean: Out-of-range timestamp value for '-%c' option: %s The argument (%s) for the -a, -c, -m, or -t option (-%c) maps to a timestamp that is not supported in standard UNIX internal time representation format. Typically, this error occurs when the timestamp specifies a date and time before 1 January 1970. · dirclean: Timestamp value for '-%c' option conflicts with earlier values: %s The argument (%s) to the -a, -c, -m, or -t option (%c) represents a second attempt to set a removal threshold in terms of a file's atime, ctime, or mtime value. · dirclean: Timestamp constraints for '-%c' option impossible to satisfy: %s One of the timestamp options (%c) was specified twice, with both a +days argument and a -days value, and the minimum value for the corresponding timestamp exceeds the maximum allowed value. The second instance of the argument that causes this condition replaces %s. · dirclean: Bad argument to -k option: valid types are "bcdflps" The -k option included an invalid letter in the types value. · (Try 'dirclean -H' for help.) This message is appended to any of the preceding messages (all of which note invalid command-line arguments) to remind the user that the dirclean -H command displays usage information. · dirclean: Cannot open current directory: %m For proper operation, the dirclean utility needs to open its original directory ("."). This operation failed. · dirclean: Internal error: Invalid return (%d) from traversing directory: %s This message should never occur, as it indicates an internal logic error in the utility. Please report any occurrence of this message, along with a way to reproduce the problem, to your support representative or submit a Software Problem Report (SPR) that contains this information. · dirclean: lstat failure for starting directory: %s: %m One of the starting directories (%s) specified in dirlist does not exist or is not accessible. · dirclean: Starting directory argument is not a directory: %s One of the starting directories (%s) included in dirlist is not a directory. · dirclean: Cannot fchdir() back to original directory after processing "%s" argument: %m After recursively processing a starting directory (%s) in dirlist, an error occurred when the utility attempted to change directory back to its original location. (The utility changes directory back to its original location after processing each operand to ensure correct location should a subsequent operand be specified as a relative path). · dirclean: Cannot allocate space to process directory: %s: %m An error occurred when the utility made a system call to allocate space for holding a constructed pathname (%s). This error indicates that process data size limits or system paging space are unusually low. · dirclean: Cannot open directory: %s: %m The indicated directory (%s) could not be opened in order to traverse its entries. · dirclean: Directory moved during processing (skipped): %s The indicated directory (%s) changed between the time the utility parsed and saved the pathname operand and the time the utility attempted to open that directory for processing. This error does not occur if a directory was updated in a normal manner; the error means that the directory being opened was not the same directory as specified by the saved pathname. The volatility of the directory indicates that processing it might not be safe; therefore, the utility skipped over it to process the next operand, if any. · dirclean: Cannot fchdir() to process directory: %s: %m The utility could not change location to the indicated directory (%s) to start processing after the directory was successfully opened. (This error usually means that the directory's permissions allow reading but not searching.) · dirclean: Cannot lstat() directory entry: %s: %m An attempt to verify the file type of a pathname operand (%s) failed. · dirclean: Cannot fchdir() back to directory "%s" after processing sub-directory entry: %s: %m An attempt to return to a previous directory level failed. The first %s indicates the parent directory for which the fchdir() system call failed, and the second %s indicates the subdirectory that the utility had just finished processing. · dirclean: Removed directory %s An empty directory was successfully removed. This message appears only if the -v option is specified. · dirclean: Cannot unlink %s: %m An attempt to remove the specified pathname (%s) failed. · dirclean: Unlinked %s The indicated pathname was successfully removed. This message appears only if the -v option is specified. · dirclean: Cannot rmdir %s: %m An attempt to remove a directory (%s) failed for some reason other than condition that the directory was not empty. · dirclean: Failed in fuser() check of %s: %m The -o option was specified and when the utility was checking to see if the indicated file (%s) was in use, an unexpected error was encountered. · dirclean: utimes() failure for directory %s: %m When trying to restore the timestamps for the specified directory (%s), an unexpected error was encountered. The dirclean utility may issue the following additional diagnostics when the -D (debug) option is in effect: · Skipped entry: %s\n\tReason: %s This is the top-level debug message. The indicated file (the first %s) is not being removed for the reason given by the trailing %s. That reason will be one of the following: · Rejected by time-stamp constraints One of the timestamp options (-a, -c, -m, or -t) was specified, and the corresponding timestamps on the indicated file were rejected by those constraints. · This type of file is to be preserved Either the indicated file is a UNIX-domain socket and -k option was not specified, or the file is one that an explicit -k option marked for preservation. · Directory is the start of a different file system Descending into the indicated directory would require crossing filesystem boundaries. Doing so is not supported by this utility. · Directory is not empty An attempt to remove a directory failed because the directory was not empty. · File or directory is in use by another process The -o option was specified and the indicated file is open or otherwise in use by another process.

EXAMPLES

1. The following commands, which are included by default in the root user's crontab entry by current releases of the operating system, clean out the /tmp and /var/tmp directories: /usr/sbin/dirclean -a +2 /tmp/ /usr/sbin/dirclean -a +7 /var/tmp/ These entries replaced the find and rm invocations included in that crontab entry by older releases of the operating system. (For complete emulation of the former crontab entries, these dirclean commands should include -k bcdlps in addition to the options shown.) 2. The following command removes empty directories from a directory tree ($MYDIR): /usr/sbin/dirclean -k bcflps $MYDIR This dirclean command is equivalent to the following combination of find and rmdir commands: find $MYDIR -mount -depth -type d -exec rmdir {} \; 3. In preparation for recompiling files in a large project, the following command removes all entries from an object file directory (objs) but keeps the directory itself: /usr/sbin/dirclean -k '' objs

ENVIRONMENT VARIABLES

LANG Provides a default value for the internationalization variables that are unset or null. If LANG is unset or null, the corresponding value from the default locale is used. If any of the internationalization variables contain an invalid setting, the utility behaves as if none of the variables had been defined. LC_ALL If set to a non-empty string value, overrides the values of all the other internationalization variables. LC_MESSAGES Determines the locale for the format and contents of diagnostic messages written to standard error. NLSPATH Determines the location of message catalogs for the processing of LC_MESSAGES.

SEE ALSO

Commands: find(1), rm(1), rmdir(1), xargs(1) Functions: fchdir(2), fuser(2), lstat(2), rmdir(2), unlink(2), utimes(2)

Index Index for
Section 8
Index Alphabetical
listing for D
Top of page Top of
page