Know Your Unix System Administrator

There are four major species of Unix sysad:

  1. The Technical Thug
    Usually a systems programmer who has been forced into system administration; writes scripts in a polyglot of the Bourne shell, sed, C, awk, perl, and APL.
  2. The Administrative Fascist
    Usually a retentive drone (or rarely, a harridan ex-secretary) who has been forced into system administration.
  3. The Maniac
    Usually an aging cracker who discovered that neither the Mossad nor Cuba are willing to pay a living wage for computer espionage. Fell into system administration; occasionally approaches major competitors with indesp schemes.
  4. The Idiot
    Usually a cretin, morpohodite, or old COBOL programmer selected to be the system administrator by a committee of cretins, morphodites, and old COBOL programmers.
How the Different Types of Unix Sysads Respond:

SITUATION: Low disk space.

  • Technical Thug:
    Writes a suite of scripts to monitor disk usage, maintain a database of historic disk usage, predict future disk usage via least squares regression analysis, identify users who are more than a standard deviation over the mean, and send mail to the offending parties. Places script in cron. Disk usage does not change, since disk-hogs, by nature, either ignore script-generated mail, or file it away in triplicate.
  • Administrative Fascist:
    Puts disk usage policy in motd. Uses disk quotas. Allows no exceptions, thus crippling development work. Locks accounts that go over quota.
  • Maniac:
    # cd /home
    # rm -rf `du -s * | sort -rn | head -1 | awk ‘{print $2}’`;
  • Idiot:
    # cd /home
    # cat `du -s * | sort -rn | head -1 | awk ‘{ printf “%s/*n”, $2}’` | compress

SITUATION: Excessive CPU usage.

  • Technical Thug:
    Writes a suite of scripts to monitor processes, maintain a database of CPU usage, identify processes more than a standard deviation over the norm, and renice offending processes. Places script in cron. Ends up renicing the production database into oblivion, bringing operations to a grinding halt, much to the delight of the xtrek freaks.
  • Administrative Fascist:
    Puts CPU usage policy in motd. Uses CPU quotas. Locks accounts that go over quota. Allows no exceptions, thus crippling development work, much to the delight of the xtrek freaks.
  • Maniac:
    # kill -9 `ps -augxww | sort -rn +8 -9 | head -1 | awk ‘{print $2}’`
  • Idiot:
    # compress -f `ps -augxww | sort -rn +8 -9 | head -1 | awk ‘{print $2}’`
  • SITUATION: New account creation.

  • Technical Thug:
    Writes perl script that creates home directory, copies in incomprehensible default environment, and places entries in /etc/passwd, /etc/shadow, and /etc/group. (By hand, NOT with passmgmt.) Slaps on setuid bit; tells a nearby secretary to handle new accounts. Usually, said secretary
    is still dithering over the difference between ‘enter’ and ‘return’; and so, no new accounts are ever created.
  • Administrative Fascist:
    Puts new account policy in motd. Since people without accounts cannot read the motd, nobody ever fulfills the bureaucratic requirements; and so, no new accounts are ever created.
  • Maniac:
    “If you’re too stupid to break in and create your own account, I don’t want you on the system. We’ve got too many goddamn sh*t-for-brains a**holes on this box anyway.”
  • Idiot:
    # cd /home; mkdir “Bob’s home directory”
    # echo “Bob Simon:gandalf:0:0::/dev/tty:compress -f” > /etc/passwd
  • SITUATION: Root disk fails.

  • Technical Thug:
    Repairs drive. Usually is able to repair filesystem from boot monitor. Failing that, front-panel toggles microkernel in and starts script on neighboring machine to load binary boot code into broken machine, reformat and reinstall OS. Lets it run over the weekend while he goes mountain climbing.
  • Administrative Fascist:
    Begins investigation to determine who broke the drive. Refuses to fix system until culprit is identified and charged for the equipment.
  • Maniac:
    • Large System: Rips drive from system, uses sledgehammer to smash same to flinders. Calls manufacturer, threatens pets. Abuses field engineer while they put in a new drive and reinstall the OS.
    • Small System: Rips drive from system, uses ballpeen hammer to smash same to flinders. Calls Requisitions, threatens pets. Abuses bystanders while putting in new drive and reinstalling OS.
  • Idiot:
    Doesn’t notice anything wrong.
  • SITUATION: Poor network response.

  • Technical Thug:
    Writes scripts to monitor network, then rewires entire machine room, improving response time by 2%. Shrugs shoulders, says, “I’ve done all I can do,” and goes mountain climbing.
  • Administrative Fascist:
    Puts network usage policy in motd. Calls up Berkeley and AT&T, badgers whoever answers for network quotas. Tries to get xtrek freaks fired.
  • Maniac:
    Every two hours, pulls ethernet cable from wall and waits for connections to time out.
  • Idiot:
    # compress -f /dev/en0
  • SITUATION: User questions.

  • Technical Thug:
    Hacks the code of emacs’ doctor-mode to answer new users questions. Doesn’t bother to tell people how to start the new “guru-mode”, or for that matter, emacs.
  • Administrative Fascist:
    Puts user support policy in motd. Maintains queue of questions. Answers them when he gets a chance, often within two weeks of receipt of the proper form.
  • Maniac:
    Screams at users until they go away. Sometimes barters knowledge for powerful drink and/or sycophantic adulation.
  • Idiot:
    Answers all questions to best of his knowledge until the user realizes few UNIX systems support punched cards or JCL.
  • SITUATION: Stupid user questions.

  • Technical Thug:
    Answers question in hex, binary, postfix, and/or French until user gives up and goes away.
  • Administrative Fascist:
    Locks user’s account until user can present documentation demonstrating their qualification to use the machine.
  • Maniac:
    # cat >> ~luser/.cshrc
    alias vi ‘rm !*;unalias vi;grep -v BoZo ~/.cshrc > ~/.z; mv -f
    ~/.z ~/.cshrc’

  • Idiot:
    Answers all questions to best of his knowledge. Recruits user to system administration team.
  • SITUATION: Process accounting management.

  • Technical Thug:
    Ignores packaged accounting software; trusts scripts to sniff out any problems & compute charges.
  • Administrative Fascist:
    Devotes 75% of disk space to accounting records owned by root and chmod’ed 000.
  • Maniac:
    Laughs fool head off at very mention of accounting.
  • Idiot:
    # lpr /etc/wtmp /usr/adm/paact
  • SITUATION: Religious war, BSD vs. System V.

  • Technical Thug:
    BSD. Crippled on System V boxes.
  • Administrative Fascist:
    System V. Horrified by the people who use BSD. Places frequent calls to DEA.
  • Maniac:
    Prefers BSD, but doesn’t care as long as HIS processes run quickly.
  • Idiot:
    # cd c:
  • SITUATION: Religious war, System V vs. AIX

  • Technical Thug:
  • Administrative Fascist:
    AIX–doesn’t much care for the OS, but loves the jackboots.
  • Maniac:
    System V, but keeps AIX skills up, knowing full well how much Big Financial Institutions
    love IBM…
  • Idiot:
  • SITUATION: Balky printer daemons.

  • Technical Thug:
    Rewrites lpd in FORTH.
  • Administrative Fascist:
    Puts printer use policy in motd. Calls customer support every time the printer freezes. Tries to get user who submitted the most recent job fired.
  • Maniac:
    Writes script that kills all the daemons, clears all the print queues, and maybe restarts the daemons. Runs it once a hour from cron.
  • Idiot:
    # kill -9 /dev/lp ; /dev/lp &
  • SITUATION: OS upgrade.

  • Technical Thug:
    Reads source code of new release, takes only what he likes.
  • Administrative Fascist:
    Instigates lawsuit against the vendor for having shipped a product with bugs in it in the first place.
  • Maniac:
    # uptime
    1:33pm up 19 days, 22:49, 167 users, load average: 6.49, 6.45, 6.31
    # wall
    Well, it’s upgrade time. Should take a few hours. And good luck on that 5:00 deadline, guys! We’re all pulling for you!
  • Idiot:
    # dd if=/dev/rmt8 of=/vmunix
  • SITUATION: Balky mail.

  • Technical Thug:
    Rewrites from scratch. Rewrites sendmail in SNOBOL. Hacks kernel to implement file locking. Hacks kernel to implement “better” semaphores. Rewrites sendmail in assembly. Hacks kernel too…
  • Administrative Fascist:
    Puts mail use policy in motd. Locks accounts that go over mail use quota. Keeps quota low enough that people go back to interoffice mail, thus solving problem.
  • Maniac:
    # kill -9 `ps -augxww | grep sendmail | awk ‘{print $2}’`
    # rm -f /usr/spool/mail/*
    # wall
    Mail is down. Please use interoffice mail until we have it back up.
    # write max
    I’ve got my boots and backpack. Ready to leave for Mount Tam?
  • Idiot:
    # echo “HELP!” | mail!BIFF!!!
  • SITUATION: Users want phone list application.

  • Technical Thug:
    Writes RDBMS in perl and Smalltalk. Users give up and go back to post-it notes.
  • Administrative Fascist:
    Oracle. Users give up and go back to post-it notes.
  • Maniac:
    Tells the users to use flat files and grep, the way God meant man to keep track of phone numbers. Users give up and go back to post-it notes.
  • Idiot:
    % dd ibs=80 if=/dev/rdisk001s7 | grep “Fred”

  • Other Guidelines:


  • Technical Thug:
    Longer than eight kilobytes. Sources the output of a perl script, rewrites itself.
  • Administrative Fascist:
    Typical lines include:
    umask 777
    alias cd ‘cd !*; rm -rf ching *hack mille omega rogue xtrek >& /dev/null &’
  • Maniac:
    Typical lines include:
    alias rm ‘rm -rf !*’
    alias hose kill -9 ‘`ps -augxww | grep !* | awk ‘{print $2}’`’
    alias kill ‘kill -9 !* ; kill -9 !* ; kill -9 !*’
    alias renice ‘echo Renice? You must mean kill -9.; kill -9 !*’
  • Idiot:
    Typical lines include:
    alias dir ls
    alias era rm
    alias kitty cat
    alias process_table ps
    setenv DISPLAY vt100

  • Technical Thug:
    Writes entries for Obsfuscated C contest. Optimizes INTERCAL scripts. Maintains ENIAC emulator. Virtual reality.
  • Administrative Fascist:
    Bugs office. Audits card-key logs. Modifies old TVs to listen in on cellular phone conversations. Listens to police band.
  • Maniac:
    Volunteers at Survival Research Labs. Bugs office. Edits card-key logs. Modifies old TVs to listen in on cellular phone conversations. Jams police band.
  • Idiot:
    Ties shoes. Maintains COBOL decimal to roman numeral converter. Rereads flowcharts from his salad days at Rand.

  • Technical Thug:
    Drinks “Smart Drinks.” Attends raves. Hangs out at poetry readings and Whole Earth Review events and tries to pick up Birkenstock MOTAS.
  • Administrative Fascist:
    Reads Readers Digest and Mein Kampf. Sometimes turns up car radio and sings along to John Denver. Golfs. Drinks gin martinis. Hangs out in yuppie bars and tries to pick up dominatrixes.
  • Maniac:
    Reads Utne Reader and Mein Kampf. Faithfully attends Dickies and Ramones concerts. Punches out people who say “virtual reality.” Drinks damn near anything, but favors Wild Turkey,
    Black Bush, and grain alcohol. Hangs out in neighborhood bars and tries to pick up MOTAS by drinking longshoremen under the table.
  • Idiot:
    Reads Time and Newsweek –and believes them. Drinks Jagermeister. Tries to pick up close blood relations — often succeeds, producing next generation of idiots.

  • Technical Thug:
    Clinton, but only because he liked Gore’s book.
  • Administrative Fascist:
    Bush. Possibly Clinton, but only because he liked Tipper.
  • Maniac:
    Frank Zappa.
  • Idiot:

  • Technical Thug:
    Richard Stallman – Larry Wall.
  • Administrative Fascist:
    Nixon – Buchanan.
  • Maniac:
    Frank Zappa.
  • Idiot:


  • Technical Fascist:
    Hacks kernel and writes a horde of scripts to prevent folk from ever using more than their fair share of system resources. Resulting overhead and load brings system to its knees.
  • Technical Maniac:
    Writes scripts that seem to be monitoring the system, but are actually encrypting large lists of passwords. Uses nearby nodes as beta test sites for worms.
  • Technical Idiot: Writes superuser-run scripts that sooner or later do an “rm -rf /”.
  • Fascistic Maniac:
    At first hint of cracker incursions, whether real or imagined, shuts down system by triggering
    water-on-the-brain detectors and Halon system.
  • Fascistic Idiot:
    # cp /dev/null /etc/passwd
  • Maniacal Idiot:
    Napalms the CPU.

Fun with Unix

If you type these in from the csh (c shell): in Unix you really do get these responses.

  • % make love
    Make: Don’t know how to make love. Stop.
  • % got a light?
    No match.
  • % sleep with me
    bad character
  • % man: Why did you get a divorce?
    man:: Too many arguments.
  • % make ‘heads or tails of all this’
    Make: Don’t know how to make heads or tails of all this. Stop.
  • % make sense
    Make: Don’t know how to make sense. Stop.
  • % make mistake
    Make: Don’t know how to make mistake. Stop.
  • % make
    Make: Don’t know how to make Stop.
  • % (-
    (-: Command not found.
  • % make light
    Make: Don’t know how to make light. Stop.
  • % date me
    You are not superuser: date not set Thu Aug 25 15:52:30 PDT 2012
  • % man rear
    No manual entry for rear.
  • % If I had a ) for every dollar Obama spent, what would I have?
    Too many )’s.
  • % * How would you describe Obama
    *: Ambiguous.
  • % %Vice-President
    %Vice-President: No such job.
  • % ls Obama-Ethics
    Obama-Ethics not found
  • % “How would you rate Clinton’s senility?
    Unmatched “.
  • % [Where is Jimmy Hoffa?
    Missing ]. |
  • % ^How did the^sex change operation go?
    Modifier failed.
  • % who is my match?
    No match.
  • % set i=”Democratic_Platform”;mkdir $i;chmod 000 $i;ls $i
    Democratic_Platform unreadable
  • % awk “Polly, the ship is sinking”
    awk: syntax error near line 1
    awk: bailing out near line 1
  • % ‘thou shalt not commit adultery’
    thou shalt not commit adultery: Command not found.

The ABCs of UNIX

A is for awk which runs like a snail, and
B is for biff which reads all your mail.

C is for cc as hackers recall, while
D is for dd the command that does all.

E is for emacs which rebinds your keys, and
F is for fsck which rebuilds your trees.

G is for grep a clever detective, while
H is for halt which may seem defective.

I is for indent which rarely amuses, and
J is for join which nobody uses.

K is for kill which makes you the boss, while
L is for lex which is missing from DOS.

M is for more from which less was begot, and
N is for nice which it really is not.

O is for od which prints out things nice, while
P is for passwd which reads in strings twice.

Q is for quota a Berkeley-type fable, and
R is for ranlib for sorting ar table.

S is for spell which attempts to belittle, while
T is for true which does very little.

U is for uniq which is used after sort, and
V is for vi which is hard to abort.

W is for whoami which tells you your name, while
X is, well, x of dubious fame.

Y is for yes which makes an impression, and
Z is for zcat which handles compression

Abbott and Costello Meet Unix

Costello calls Abbott with some questions about UNIX.

Costello: What is the command that will tell me the revision code of a program?

Abbott: Yes, that’s correct.

Costello: No, what is it?

Abbott: Yes.

Costello: So, which is the one?

Abbott: No. ‘which’ is used to find the program.

Costello: Stop this. Who are you?

Abbott: Use ‘who am i’ not ‘who r yoo’. You can also ‘finger yoo’ to get information about yoo’.

Costello: All I want to know is what finds the revision code?

Abbott: Use ‘what’.

Costello: That’s what I am trying to find out. Isn’t that true?

Abbott: No. ‘true’ gives you 0.

Costello: Which one?

Abbott: ‘true’ gives you 0. ‘which is program name’

Costello: Let’s get back to my problem. What program? How do I find it?

Abbott: Type ‘find / -name it -print’ to find ‘it’. Type ‘what program’ to get the revision code.

Costello: I want to find the revision code.

Abbott: You can’t ‘find revision code’, you must use ‘what program’.

Costello: Which command will do what I need?

Abbott: No. ‘which command’ will find ‘command’.

Costello: I think I understand. Let me write that.

Abbott: You can ‘write that’ only if ‘that’ is a user on your system.

Costello: Write what?

Abbott: No. ‘write that’. ‘what program’.

Costello: Cut that out!

Abbott: Yes. those are valid files for ‘cut’. Don’t forget the options.

Costello: Do you always do this?

Abbott: ‘du’ will give you disk usage.

Costello: HELP!

Abbott: ‘help’ is only used for Source Code Control System (SCCS).

Costello: You make me angry.

Abbott: No, I don’t ‘make me’ angry but I did ‘make program name’ when I was upset once.

Costello: I don’t want to make trouble, so no more.

Abbott: No ‘more’? ‘which’ will help you find ‘more’. Every system has ‘more’.

Costello: Nice help! I’m confused more now!

Abbott: Understand that since ‘help’ is such a small program, it is better not to ‘nice help’ and ‘more now’ is not allowed, but ‘at now’ is. Unless of course ‘now’ is a file name.

Costello: This is almost as confusing as my PC.

Abbott: I didn’t know you needed help with ‘pc’. Let me get you to the Pascal compiler team.