| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
acThe ac command prints out a report of connect
time (in hours) based on the logins/logouts in the current
wtmp file. A total is also printed out.
The accounting file wtmp is maintained by
init and login. Neither of these
programs creates the file; if the file is not there, no
accounting is done. To begin accounting, create the file with a
length of zero. NOTE: the wtmp file
can get really big, really fast. You might want to trim it every
once and a while.
GNU ac works nearly the same u*x ac,
though it's a little smarter in its printing out of daily
totals--it actually prints every day, rather than
skipping to the date of the next entry in the wtmp
file.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
All of the original ac's options have been
implemented, and a few have been added. Normally, when
ac is invoked, the output looks like this:
total 93867.14
|
where total is the number of hours of connect time for every
entry in the wtmp file. The rest of the flags modify
the output in one way or another.
-d--daily-totalsPrint totals for each day rather than just one big total at the end. The output looks like this:
Jul 3 total 1.17 Jul 4 total 2.10 Jul 5 total 8.23 Jul 6 total 2.10 Jul 7 total 0.30 |
-p--individual-totalsPrint time totals for each user in addition to the usual everything-lumped-into-one value. It looks like:
bob 8.06
goff 0.60
maley 7.37
root 0.12
total 16.15
|
peoplePrint out the sum total of the connect time used by all of the users included in people. Note that people is a space separated list of valid user names; wildcards are not allowed.
-f filename--file filenameRead from the file filename instead of the
system's wtmp file.
--complainWhen the wtmp file has a problem (a
time-warp, missing record, or whatever), print out an
appropriate error.
--rebootsReboot records are not written at the time of a
reboot, but when the system restarts; therefore, it is
impossible to know exactly when the reboot
occurred. Users may have been logged into the system at the
time of the reboot, and many ac's automatically
count the time between the login and the reboot record
against the user (even though all of that time
shouldn't be, perhaps, if the system is down for a
long time, for instance). If you want to count this time,
include the flag. To make ac behave like
the one that was distributed with your OS, include this
flag.
--supplantsSometimes a logout record is not written for a specific
terminal, so the time that the last user accrued cannot be
calculated. If you want to include the time from the user's
login to the next login on the terminal (though probably
incorrect), include this flag. To make
ac behave like the one that was distributed with
your OS, include this flag.
--timewarpsSometimes, entries in a wtmp file will
suddenly jump back into the past without a clock change
record occurring. It is impossible to know how long a user
was logged in when this occurs. If you want to count the time
between the login and the time warp against the user, include
this flag. To make ac behave like the
one that was distributed with your OS, include this
flag.
--compatibilityThis is shorthand for typing out the three above options.
-a--all-daysIf we're printing daily totals, print a record for every day instead of skipping intervening days where there is no login activity. Without this flag, time accrued during those intervening days gets listed under the next day where there is login activity.
-y--print-yearPrint out the year when displaying dates.
--print-zerosIf a total for any category (save the grand total) is zero, print it. The default is to suppress printing.
--debugPrint verbose internal information.
--tw-leniency valueSet the time warp leniency value (in seconds). Records in
wtmp files might be slightly out of order (most
notably when two logins occur within a one-second period -
the second one gets written first). By default, this value is
set to 1 second. Some wtmp's are really screwed
up (Suns) and require a larger value here. If the program
notices this problem, time is not assigned to users unless
the --timewarps flag is used. See the Problems
section for more information.
--tw-suspicious valueSet the time warp suspicious value (in seconds). If two
records in the wtmp file are farther than this
number of seconds apart, there is a problem with the wtmp
file (or your machine hasn't been used in a year). If the
program notices this problem, time is not assigned to users
unless the --timewarps flag is used.
-V--versionPrint ac's version number.
-h--helpPrint ac's usage string and default locations
of system files to standard output.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
For no fault of ac's, if two logins occur at the
same time (within a second of each other), each
login process will try to write an entry to the
wtmp file. With file system overhead, it is
forseeable that the entries would get written in the wrong order.
GNU ac automatically compensates for this, but some
other acs may not... beware.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
I've tested the standard ac in Ultrix 4.2
(DECstation/DECsystem), SunOS 4.1.1 (Sun3, Sun4, Sparc), Mach 2.5
(Omron/Luna), and DomainOS 10.3 (DN3500). All of these
acs have trouble parsing entries in which the line
is ftpxxxx (xxxx being some
number). Whenever these acs see one of these
entries, they log everyone out at the time of the entry.
HOW IT HAPPENS: if there is a user logged into the machine when an ftp connection occurs, (minimally) you'll get a login record for the user, a login record for the ftp connection, and the logouts for both afterwards (in either order).
TANGIBLE RESULT: the user who was logged in
gets 'logged out' at the time the ftp connection begins, and none
of the time spent during or after the ftp connection. Therefore,
when you run GNU ac, the totals will most likely be
greater than those of your system's ac (provided you
specify the other flags that will make GNU ac behave
like the system's).
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
On Suns, init is a little screwed up. For some
reason, after a shutdown record is written, a reboot record is
written with a time-stamp before the shutdown (less than
30 seconds, usually).
TANGIBLE RESULT: GNU ac will
notice the problem, log everyone out (you can specify if you want
the time to be added to the user's total) and begin a new day
entry based on the time of the out-of-sync record. If you try to
print out daily totals, you'll notice that some days might have
two or more entries.
SOLUTION: To fix this, a timewarp leniency value has been implemented. If any record is out of order by this number of seconds (defaults to 60) it gets ignored. If you need to change this value (if you think the totals are off because the value is too high), you can change it using the `--timewarp-value' flag. The rationale for the 60 second default is that of all of the machines with this problem, the largest timewarp was 45.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Some ac's on System V machines (I've tried SGI
Indigo & SGI Indy) forget to pay attention to the
ut_type field in a struct utmp. As
such, they chalk up a lot of time to non-existant processes
called LOGIN or runlevel.
TANGIBLE RESULT: The amount of total time
reported by the system's ac is
really off. Often, it's several times greater
than what it should be.
SOLUTION: GNU ac always pays
attention to the ut_type record, so there's no
possibility of chalking up time to anything but user
processes.
| [ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This document was generated on February, 6
2010 using texi2html
1.76.