Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

I would love figuring out how much time I actually have spent in shell performing administrative duties. For billing of course, this information is not sufficient, but it would be helpful to figure out how much time I have actually spent in shell.

My question is:

  • How anyone got tips on how to calculate time spent in shell (in hours + minutes), let's say per user account?
  • Could anyone recommend a software that could be used to analyze this time?
  • Optionally I would like to know about ways how to categorise time spent (e.g. 1 hour for Apache, 2 hours for Samba, etc.)

Also, your takes on how you monitor your admin time, are also much appreciated!

To narrow down the problem, I am specifically interested in ways of tracking time spent in shell for Linux system administration

share|improve this question
add comment

4 Answers

up vote 4 down vote accepted

Hmm theres a few ways from creating a file on login and logout to fully featured tracking software take a look here:

http://www.cyberciti.biz/tips/howto-log-user-activity-using-process-accounting.html

Or google for 'audited shell'

If you use Emacs Org mode is used by a lot of people for this.

share|improve this answer
1  
Historically, process accounting has been used for billing (ya' know, back when "the machine" cost a bazillion dollars an hour to run). Tools that log the tasks performed are going to have a hard time divining the user's intent out of the log. "So... ya' spend 25 mintues in 'vi', eh? Working on /etc/samba.conf, eh? Oh-- you were in the restroom for 15 mintutes of that..." –  Evan Anderson Jan 28 '10 at 14:01
    
@evan-that's a common problem. I think Joel just addressed that in the latest StackOverflow podcast, where tracking work time and estimating programming tasks is an issue because a task you think will take 15 minutes takes hours or days because of not only "issues" but you have people web browsing or dreaming or doing other life-gets-in-the-way things that...well, makes us somewhat human. That's why I didn't really give suggestions here. What counts as "administrating from the shell"? Time scratching your head, time actually running commands? The better question is, what is he aiming to do? –  Bart Silverstrim Jan 28 '10 at 14:17
    
"Process Accounting" are the key words from @Evan Anderson's comment. His point about difficulty in divining intent from the list of time spent in each command remains. –  mpez0 Jan 28 '10 at 14:17
    
(to what end, that is) –  Bart Silverstrim Jan 28 '10 at 14:17
    
Process accounting seems to be the stuff I'm looking for! Thank you!! Also sorry for a bit badly spoken out question. I want to emphasise I am not talking about billing aspect here, I just want to figure out how much time I roughly spent in shell working with different software and on which day. –  Jaakko Jan 28 '10 at 14:18
add comment

If you just want to see how much time you spend logged-on why not look at the output of "last"? I suspect you want more detail than this, though.

Your statement "...ways of tracking time spent in shell for Linux system administration." gives me pause. That almost sounds like you're looking for some kind of automatic method of identifying what you're working on and logging the time.

I'd hypothesize that the amount of time you'd spend building and maintaining some kind of "AI" to analyze your commands and track time would dwarf the amount of time you actually spend on sysadmin duties. How does that tool know why you're tailing "/var/log/messages" today?

I work time-and-materials for all my Customers and have to keep fairly detailed logs of my activities and times. If there's a shortcut out there I'd certainly love to find it, but my methodology is, I expect, the only one that makes realistic sense:

  • Log start and stop times for given activities
  • Try to minimize interruptions to those activites and, when interrupted, log myself off that activity (and hopefully on to something else billable)
  • Categorize time associated with a given activity and write notes
  • Repeat ad infinitum (billing, where possible and appropriate!)

Lately I've been using an iPhone app on my iPod, HoursTracker, but previously I used such software as Notepad and Pieces of Paper with Writing on Them(tm). I don't see any reason why you couldn't use a simple shell script to append times and log details to a database, flat file, etc. You could probably su to different accounts prior to starting different admin activities so that you had a record of start / stop times on activities. Whatever you do, the usage methodology is a lot more important than the tool you use to gather data.

If you want to get good per-task times you're going to have to have the discipline to log when you start and stop working on a given task. If you want to get a good handle on your Samba-related admin time, you'll have to be sure to log yourself off of that task when you're doing Apache work, playing Server Fault, etc.

Like I said-- I'd love to find a shortcut. Some kind of brain-computer--GPS-telephone interface would be awesome, but it just doesn't exist that I've been able to find.

share|improve this answer
    
Thank you for a detailed answer. I'm pretty much aligned with what you say that there is and - most likely - will not be a tool that automatically knows what I am working on based on mere command-line history. However, information on any tools to that direction is still much appreciated. –  Jaakko Jan 28 '10 at 14:15
    
Evan, could you work on inventing your brain-computer-GPS-telephone interface? I've been in the market for one. –  Dave Drager Jan 28 '10 at 14:20
    
@Dave Drager: Right there with you. Something like MyLifeBits (research.microsoft.com/en-us/projects/mylifebits) might get close, admittedly. –  Evan Anderson Jan 28 '10 at 14:22
add comment

Time tracking can be as simple or difficult as you (or whomever you report to) wants to make it.

Personally what I do is I have a process running on my hosted server that has is connected to a google talk account. I then make notes to that process through the google talk which is running on my laptop, which gives me a time-stamped record of what I did. This, combined with my sent-items mail folder, helps a great deal when I am trying to figure out what I spent my (customer's) time on.

I picked Google Talk because it uses a SSL connection and therefore cannot be trivially snooped.

share|improve this answer
add comment

If you need to charge your hours against a particular project or customer, you should look at time tracking software used by lawyers, accountants, consultants, etc. We use some enterprisy godawful package at work for charging against projects.

For Linux, there's an app called Project Hamster which is a great tool for this sort of thing. For a knowledge worker like a sysadmin, automatic tracking isn't going to work in most situations.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.