On Tue, Oct 22, 2019 at 07:02:03PM -0700, Kurt H Maier wrote:
On Tue, Oct 22, 2019 at 05:07:33PM -0700, Mary Ann
Horton wrote:
dd is deprecated?? I'm surprised. I use it
all the time.
dd is not deprecated. The maintainer of the jargon file is not a
reliable narrator. dd(1) is even specified in IEEE Std 1003.1-2017,
which mentions the JCL history and explains that it takes 'operands' and
not 'options' to retain compatibility with the original syntax.
dd(1) on Plan 9 changes to regular option flags, such as -if= and -of=,
and some folks get disproportionately annoyed by the change. Can't
please everyone, I guess.
I really need to move this into the distros, it's dd on steriods and the
docs don't list the latest options, I made it go backwards, I made it
use the crc/xor stuff that bk has, I made it use the compression stuff
that bk has:
LMDD(8) LMBENCH LMDD(8)
NAME
lmdd - move io for performance and debugging tests
SYNOPSIS
lmdd [ option=value ] ...
DESCRIPTION
lmdd copies a specified input file to a specified output with possible
conversions. This program is primarily useful for timing I/O since it
prints out the timing statistics after completing.
OPTIONS
if=name Input file is taken from name; internal is the default.
internal is a special file that acts like Sun's
/dev/zero, i.e., it provides a buffer of zeros without
doing a system call to get them.
The following file names are taken to mean the standard
input: -, 0, or stdin.
of=name Output file is taken from name; internal is the default.
internal is a special file that acts like /dev/null,
without doing a system call to get rid of the data.
The following file names are taken to mean the standard
output: -, 1, or stdout.
The following file names are taken to mean the standard
error: 2, or stderr.
bs=n Input and output block size n bytes (default 8192).
Note that this is different from dd(1), it has a 512
byte default. Also note that the block size can be
followed by 'k' or 'm' to indicate kilo bytes
(*1024) or
megabytes (*1024*1024), respectively.
ipat=n If n is non zero, expect a known pattern in the file
(see opat). Mismatches will be displayed as "ERROR:
off=%d want=%x got=%x". The pattern is a sequence of 4
byte integers with the first 0, second 1, and so on.
The default is not to check for the pattern.
opat=n If n is non zero, generate a known pattern on the output
stream. Used for debugging file system correctness.
The default is not to generate the pattern.
mismatch=n If n is non zero, stop at the first mismatched value.
Used with ipat.
skip=n Skip n input blocks before starting copy.
fsync=n If n is non-zero, call fsync(2) on the output file
before exiting or printing timing statistics.
sync=n If n is non-zero, call sync(2) before exiting or print-
ing timing statistics.
rand=n This argument, by default off, turns on random behavior.
The argument is not a flag, it is a size, that size is
used as the upper bound for the seeks. Also note that
the block size can be followed by 'k' or 'm' to
indicate
kilo bytes (*1024) or megabytes (*1024*1024),
flush=n If n is non-zero and mmap(2) is available, call msync(2)
to invalidate the output file. This flushes the file to
disk so that you don't have unmount/mount. It is not as
good as mount/unmount because it just flushes file pages
- it misses the indirect blocks which are still cached.
Not supported on all systems, compile time option.
rusage=n If n is non-zero, print rusage statistics as well as
timing statistics. Not supported on all systems, com-
pile time option.
count=n Copy only n input records.
EXAMPLES
This is the most common usage, the intent is to measure disk perfor-
mance. The disk is a spare partition mounted on /spare.
# mount /spare
# lmdd if=internal of=/spare/XXX count=1000 fsync=1
7.81 MB in 3.78 seconds (2.0676 MB/sec)
: Flush cache
# umount /spare
# mount /spare
# lmdd if=/spare/XXX of=internal
7.81 MB in 2.83 seconds (2.7611 MB/sec)
AUTHOR
Larry McVoy, lm(a)sun.com
(c)1994 Larry McVoy $Date$ LMDD(8)