Seeing What's Going On Around You

You're logged in, looking at the command prompt, and ready to delve into this UNIX thing. Great! Let's have a look.…

Task 2.4: Who Are You?

While you're logged in to the system, you can learn a few more UNIX commands, including a couple that can answer a philosophical conundrum that has bothered men and women of thought for thousands of years: Who am I?


  1. The easiest way to find out “who you are” is to enter the whoami command:

    % whoami
    taylor
    %
    

    Try it on your system. The command lists the account name associated with the current login.

  2. Ninety-nine percent of the commands you type with UNIX don't change if you modify the punctuation and spacing. With whoami, however, adding spaces to transform the statement into proper English—that is, entering who am i—dramatically changes the result. On my system, I get the following results:

    % who am i
    mentor.utech.edu!taylor    ttyp4   Feb 8 14:34
    %
    

    This tells me quite a bit about my identity on the computer, including the name of the computer itself, my account name, and where and when I logged in. Try the command on your system and see what results you get.

    In this example, mentor is a hostname—the name of the computer I am logged in to—and utech.edu is the full domain name—the address of mentor. The exclamation point (!) separates the domain name from my account name, taylor. The ttyp4 (pronounced “tee-tee-why-pea-four”) is the current communication line I'm using to access mentor, and 5 October at 2:34pm is when I logged in to mentor today.

UNIX is full of oddities that are based on historical precedent. One is “tty” to describe a computer or terminal line. This comes from the earliest UNIX systems in which Digital Equipment Corporation teletypewriters would be hooked up as interactive devices. The teletypewriters quickly received the nickname “tty,” and all these years later, when people wouldn't dream of hooking up a teletypewriter, the line is still known as a tty line.


  1. One of the most dramatic influences UNIX systems have had on the computing community is the propensity for users to work together on a network, hooked up by telephone lines and modems (the predominant method until the middle to late 1980s) or by high-speed network connections to the Internet (a more common type of connection today). Regardless of the connection, however, you can see that each computer needs a unique identifier to distinguish it from others on the network. In the early days of UNIX, systems had unique hostnames, but as hundreds of systems have grown into the tens-of-thousands, that proved to be an unworkable solution.

  2. The alternative was what's called a “domain-based naming scheme,” where systems are assigned unique names within specific subsets of the overall network. Consider the output that was shown in instruction 2, for example:

    mentor.utech.edu!taylor    ttyp4   Feb 11 14:34
    

    The computer I use is within the .edu domain (read the hostname and domain—mentor.utech.edu—from right to left), meaning that the computer is located at an educational institute. Then, within the educational institute subset of the network, utech is a unique descriptor, and, therefore, if other UTech universities existed, they couldn't use the same top-level domain name. Finally, mentor is the name of the computer itself.

  3. Like learning to read addresses on envelopes, learning how to read domain names can unlock a lot of information about a computer and its location. For example, lib.stanford.edu is the library computer at Stanford University, and ccgate.infoworld.com tells you that the computer is at InfoWorld, a commercial computer site, and that its hostname is ccgate. You learn more about this a few hours down the road when you learn how to use electronic mail to communicate with people throughout the Internet.

  4. Another way to find out who you are in UNIX is the id command. The purpose of this command is to tell you what group or groups you're in and the numeric identifier for your account name (known as your user ID number or user ID). Enter id and see what you get. I get the following result:

    % id
    uid=211(taylor)  gid=50(users0) groups=50(users0)
    %
    

If you enter id, and the computer returns a different result or indicates that you need to specify a filename, don't panic. On many Berkeley-derived systems, the id command is used to obtain low-level information about files.


  1. In this example, you can see that my account name is taylor and that the numeric equivalent, the user ID, is 211. (Here it's abbreviated as uid—pronounce it “you-eye-dee” to sound like a UNIX expert). Just as the account name is unique on a system, so also is the user ID. Fortunately, you rarely, if ever, need to know these numbers, so focus on the account name and group name.

  2. Next, you can see that my group ID (or gid) is 50, and that group number 50 is known as the users0 group. Finally, users0 is the only group to which I belong.

    On another system, I am a member of two different groups:

    % id
    uid=103(taylor) gid=10(staff) groups=10(staff),44(ftp)
    %
    

    Although I have the same account name on this system (taylor), you can see that my user ID and group ID are both different from the earlier example. Note also that I'm a member of two groups: the staff group, with a group ID of 10, and the ftp group, with a group ID of 44.

Later, you learn how to set protection modes on your files so that people in your group can read your files, but those not in your group are barred from access. You've now learned a couple of different ways to have UNIX give you some information about your account.


Task 2.5: Finding Out What Other Users Are Logged in to the System

The next philosophical puzzle that you can solve with UNIX is “Who else is there?” The answer, however, is rather restricted, limited to only those people currently logged in to the computer at the same time. Three commands are available to get you this information, based on how much you'd like to learn about the other users: users, who, and w.


  1. The simplest of the commands is the users command, which lists the account names of all people using the system:

    % users
    david mark taylor
    %
    
  2. In this example, david and mark are also logged in to the system with me. Try this on your computer and see what other users—if any—are logged in to your computer system.

  3. A command that you've encountered earlier in this hour can be used to find out who is logged on to the system, what line they're on, and how long they've been logged in. That command is who:

    % who
    taylor   ttyp0   Oct  8 14:10   (limbo)
    david    ttyp2   Oct  4 09:08   (calliope)
    mark     ttyp4   Oct  8 12:09   (dent)
    %
    

    Here, you can see that three people are logged in, taylor (me), david, and mark. Further, you can now see that david is logged in by connection ttyp2 and has been connected since October 4 at 9:08 a.m. He is connected from a system called calliope. You can see that mark has been connected since just after noon on October 8 on line ttyp4 and is coming from a computer called dent. Note that I have been logged in since 14:10, which is 24-hour time for 2:10 p.m. UNIX doesn't always indicate a.m. or p.m.

The user and who commands can inform you who is using the system at any particular moment, but how do you find out what they're doing?


Task 2.6: What Is Everyone Doing on the Computer?

To find out what everyone else is doing, there's a third command, w, that serves as a combination of “Who are they?” and “What are they doing?”


  1. Consider the following output from the w command:

    % w
    2:12pm  up 7 days,  5:28,  3 users, load average: 0.33, 0.33, 0.02
    User     tty       login@  idle   JCPU   PCPU  what
    taylor   ttyp0     2:10pm            2         w
    david    ttyp2    Mon 9am  2:11   2:04   1:13  xfax
    mark     ttyp4    12:09pm  2:03                -csh
    %
    

    This is a much more complex command, offering more information than either users or who. Notice that the output is broken into different areas. The first line summarizes the status of the system and, rather cryptically, the number of programs that the computer is running at one time. Finally, for each user, the output indicates the user name, the tty, when the user logged in to the system, how long it's been since the user has done anything (in minutes and seconds), the combined CPU time of all jobs the user has run, and the amount of CPU time taken by the current job. The last field tells you what you wanted to know in the first place: What are the users doing?

    In this example, the current time is 2:12 p.m., and the system has been up for 7 days, 5 hours, and 28 minutes. Currently 3 users are logged in, and the system is very quiet, with an average of 0.33 jobs submitted (or programs started) in the last minute; 0.33, on average, in the last 5 minutes; and 0.02 jobs in the last 15 minutes.

    User taylor is the only user actively using the computer (that is, who has no idle time) and is using the w command. User david is running a program called xfax, which has gone for quite awhile without any input from the user (2 hours and 11 minutes of idle time). The program already has used 1 minute and 13 seconds of CPU time, and overall, david has used over 2 minutes of CPU time. User mark has a C shell running, -csh. (The leading dash indicates that this is the program that the computer launched automatically when mark logged in. This is akin to how the system automatically launches the Finder on a Macintosh on startup.) User mark hasn't actually done anything yet: notice there is no accumulated computer time for that account.

  2. Now it's your turn. Try the w command on your system and see what kind of output you get. Try to interpret all the information based on the explanation here. One thing is certain: Your account should have the w command listed as what you're doing.

On a multiuser UNIX system, the w command gives you a quick and easy way to see what's going on.


Task 2.7: Checking the Current Date and Time

You've learned how to orient yourself on a UNIX system, and you are able now to figure out who you are, who else is on the system, and what everyone is doing. What about the current time and date?


  1. Logic suggests that time shows the current time, and date the current date; but this is UNIX, and logic doesn't always apply. In fact, consider what happens when I enter time on my system:

    % time
    14.5u 17.0s 29:13 1% 172+217io 160pf+1w
    %
    

    The output is cryptic to the extreme and definitely not what you're interested in finding out. Instead, the program is showing how much user time, system time, and CPU time has been used by the command interpreter itself, broken down by input/output operations and more. This is not something I've ever used in 15 years of working with UNIX.

  2. Well, time didn't work, so what about date?

    % date
    Tue  Oct 5 15:03:41 EST 1993
    %
    

    That's more like it!

  3. Try the date command on your computer and see whether the output agrees with your watch.

How do you think date keeps track of the time and date when you've turned the computer off? Does the computer know the correct time if you unplug it for a few hours? (I hope so. Almost all computers today have little batteries inside for just this purpose.)


..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset