Directory Service (DNS) cache - Gather information, statistics, initiate queries, flush the cache.
dscacheutil replaces most of the functionality of thelookupd tool provided prior to OS X Leopard.
Syntax
dscacheutil -q category [-a key value]
dscacheutil -cachedump [-buckets] [-entries [category]]
dscacheutil -configuration
dscacheutil -flushcache
dscacheutil -statistics
dscacheutil -h
Options
-h List the options for calling dscacheutil
-q category
Initiate a query using standard calls. These calls will either
return results from the cache or go fetch live data and place
them in the cache. By default if no specific query is requested
via -a then all results within that category will be returned.
-a key value
Optional flag to -q for a specific key with a value.
-cachedump
Dump an overview of the cache by default. Additional flags will
provide more detailed information.
-buckets
Use in conjunction with -cachedump to also print hash bucket
usage of the current cache.
-entries [category]
Use in conjunction with -cachedump to dump detailed information
about cache entries. An optional category can be supplied to
only see types of interest.
-configuration
Print current configuration information, such as the search pol-
icy from Directory Service and cache parameters.
-flushcache
Flush the entire cache. This should only be used in extreme cases.
Validation information is used within the cache along with other
techniques to ensure the OS has valid information
available to it.
-statistics
Print statistics from the cache including an overview and
detailed call statistics. Some calls are not cached but are
derived from other calls internally. Cache hits and cache misses
may not always be equal to external calls. For example getad-
drinfo is actually a combination of gethostbyname with other
calls internally to the cache to maximize cache hit rate.
Available categories and associated keys:
group name or gid
host name or ip_address (used for both IPv6 and IPv4)
mount name
protocol name or number
rpc name or number
service name or port
user name or uid
Examples
Edit the hosts file, then flush the DNS cache to have the changes take immediate effect:
$ sudo nano /private/etc/hosts
$ dscacheutil -flushcache
Lookup a user:
$ dscacheutil -q user -a name jdoe
name: jdoe
password: ********
uid: 501
gid: 501
dir: /Users/jdoe
shell: /bin/csh
gecos: John Doe
Lookup all users:
$ dscacheutil -q user
Dump cache overview:
$ dscacheutil -cachedump
Dump cache details with user entries:
$ dscacheutil -cachedump -entries user
List the hosts that are currently in the DNS cache:
$ dscacheutil -cachedump -entries Host |\
grep "Key: h_" | \
sed 's/^[ ]*Key: h_[a-z]*:\([^ ]*\)\( ipv[46]:1\)*/\1/g' | \
sort -u
"Talent is hitting a target no-one else can hit, genius is hitting a target no-one else can see" - Schopenhauer
Related:
dscacheutil man page - Apple.com
DirectoryService(8)
dsmemberutil(1)
Windows equivalent: ipconfig / flushdns