text: Helen and Hard : Vennesla Library A Vennesla en Norvège, l'agence d'architecture Helen and Hard a réalisé cette bibliothèque à l'espace intérieur monumental et intime à la fois. Sous la structure de bois, les rayonnages se font alcôves, les plans de bois se plient pour proposer de confortables assises aux lecteurs. Sur ce projet, l'agence Helen and Hard précise: "The new library in Vennesla comprises a library, a café, meeting places and administrative areas and links an existing community house and learning centre together. Supporting the idea of an inviting public space, all main public functions have been gathered into one generous space allowing the structure combined with furniture and multiple spatial interfaces to be visible in the interior and from the exterior. An integrated passage brings the city life into and through the building. Furthermore, the new building was open and easy accessible from the main city square, knitting together the existing urban fabric. This was achieved by a large glass facade and urban loggia providing a protected outdoor seating area. In this project, we further developed a rib concept to create useable hybrid structures that combine a timber construction with all technical devices and the interior. The whole library consists of 27 ribs made of prefabricated glue-laminated timber elements and CNC cut plywood boards. These ribs inform the geometry of the roof, as well as the undulating orientation of the generous open space, with personal study zones nestled along the perimeter. Each rib consists of a glue laminated timber beam and column, acoustic absorbents which contain the air conditioning ducts, bent glass panes that serve as lighting covers and signs, and integrated reading niches and shelves. The gradually shifting shapes of the ribs are generated through adapting to the two adjacent buildings and also through spatial quality and functional demands for the different compartments of the library. Each end façade has been shaped according to the specific requirements of the site. At the main entrance, the rib forms the loggia which spans the width of the entire square. A main intention has also been to reduce the energy need for all three buildings through the infill concept and the use of high standard energy saving solutions in all new parts. A symbiosis of structure, technical infrastructure, furniture and interior in one architectonic element creates a strong spatial identity that meets the client's original intent to mark the city's cultural centre." Equipe : Reinhard Kropf, Siv Helene Stangeland, Håkon Solheim, Caleb Reed, Randi Augenstein Photographies: Erieta Attali Pour en savoir plus, visitez le site de l'agence Helen and Hard. Précédent Suivant


text:
|Snob Hollow Designs
Ad Options: * Mission Statement, Ad Restrictions, Using & Linking to maps
"Your Ad Here" Your link includes company logo: (Sample) - $250.00 per year.
Main Page:
- Banner Ad:* (Size=100x100 pixels) $100.00 a month, with text link on your County page.
* Main page banners ads designed by Snob Hollow Designs.
Individual County Pages: (One per county)
- Top of Page Static Banner Ad: Price: $450.00 a year. (Your ad banner will replace Google Ad banner)
* Clients may design banner ads for County pages (Specs: 728x90 including 2 pixel black border, no animation).
email Paul today to . Please include County name, website URL.*Rates subject to change without notice

subset: commoncrawl


text:
Table of Contents
The startup and shutdown scripts in
/etc/rc.d illustrate the uses
(and usefulness) of many of these comands. These are usually
invoked by root and used for system
maintenance or emergency filesystem repairs. Use with caution, as
some of these commands may damage your system if misused.
Show all logged on users. This is the approximate equivalent of who -q.
Lists the current user and the groups she belongs to. This corresponds to the $GROUPS internal variable, but gives the group names, rather than the numbers.
bozita cdrom cdwriter audio xgrp
echo $GROUPS
The chown command changes the ownership of a file or files. This command is a useful method that root can use to shift file ownership from one user to another. An ordinary user may not change the ownership of files, not even her own files. [88]
chown bozo *.txt
The chgrp command changes the
group ownership of a file or
files. You must be owner of the file(s) as well as a member
of the destination group (or root)
to use this operation.
chgrp --recursive dunderheads *.data # The "dunderheads" group will now own all the "*.data" files #+ all the way down the $PWD directory tree (that's what "recursive" means).
The useradd administrative command adds a user account to the system and creates a home directory for that particular user, if so specified. The corresponding userdel command removes a user account from the system [89] and deletes associated files.
The adduser command is a synonym for useradd and is usually a symbolic link to it.
Modify a user account. Changes may be made to the password, group membership, expiration date, and other attributes of a given user's account. With this command, a user's password may be locked, which has the effect of disabling the account.
Modify a given group. The group name and/or ID number may be changed using this command.
The id command lists the real and effective user IDs and the group IDs of the user associated with the current process. This is the counterpart to the $UID, $EUID, and $GROUPS internal Bash variables.
uid=501(bozo) gid=501(bozo) groups=501(bozo),22(cdrom),80(cdwriter),81(audio)
echo $UID
The id command shows the effective IDs only when they differ from the real ones.
Also see Example 9.5, "Am I root?".
The lid (list ID) command shows the group(s) that a given user belongs to, or alternately, the users belonging to a given group. May be invoked only by root.
lid bozo
lid daemon
bin(gid=1) daemon(gid=2) adm(gid=4) lp(gid=7)
Show all users logged on to the system.
bozo tty1 Apr 27 17:45 bozo pts/0 Apr 27 17:46 bozo pts/1 Apr 27 17:47 bozo pts/2 Apr 27 17:49
-m gives detailed information about
only the current user. Passing any two arguments to
who is the equivalent of who
-m, as in who am i or who
The Man.
who -m
localhost.localdomain!bozo pts/2 Apr 27 17:49
whoami is similar to who -m, but only lists the user name.
Show all logged on users and the processes belonging to them. This is an extended version of who. The output of w may be piped to grep to find a specific user and/or process.
w | grep startx
bozo tty1 - 4:22pm 6:41 4.47s 0.45s startx
Show current user's login name (as found in
/var/run/utmp). This is a
near-equivalent to whoami,
However . . .
Password: ......
While logname prints the name of the logged in user, whoami gives the name of the user attached to the current process. As we have just seen, sometimes these are not the same.
Runs a program or script as a substitute user. su rjones starts a shell as user rjones. A naked su defaults to root. See Example A.14, "fifo: Making daily backups, using named pipes".
Runs a command as root (or another user). This may be used in a script, thus permitting a regular user to run the script.
#!/bin/bash # Some commands. sudo cp /root/secretfile /home/bozo/secret # Some more commands.
The file
/etc/sudoers holds
the names of users permitted to invoke
Sets, changes, or manages a user's password.
The passwd command can be used in a script, but probably should not be.
Example 17.1. Setting a new password
#!/bin/bash # setnew-password.sh: For demonstration purposes only. # Not a good idea to actually run this script. # This script must be run as root. ROOT_UID=0 # Root has $UID 0. E_WRONG_USER=65 # Not root? E_NOSUCHUSER=70 SUCCESS=0 if [ "$UID" -ne "$ROOT_UID" ] then echo; echo "Only root can run this script."; echo exit $E_WRONG_USER else echo echo "You should know better than to run this script, root." echo "Even root users get the blues... " echo fi username=bozo NEWPASSWORD=security_violation # Check if bozo lives here. grep -q "$username" /etc/passwd if [ $? -ne $SUCCESS ] then echo "User $username does not exist." echo "No password changed." exit $E_NOSUCHUSER fi echo "$NEWPASSWORD" | passwd --stdin "$username" # The '--stdin' option to 'passwd' permits #+ getting a new password from stdin (or a pipe). echo; echo "User $username's password changed!" # Using the 'passwd' command in a script is dangerous. exit 0
The passwd command's
-u, and
-d options permit
locking, unlocking, and deleting a user's password. Only
root may use these options.
Show users' logged in time, as read from
/var/log/wtmp. This is one of the GNU
accounting utilities.
total 68.08
List last logged in users, as read from
/var/log/wtmp. This command can also
show remote logins.
For example, to show the last few times the system rebooted:
last reboot
reboot system boot 2.6.9-1.667 Fri Feb 4 18:18 (00:02) reboot system boot 2.6.9-1.667 Fri Feb 4 15:20 (01:27) reboot system boot 2.6.9-1.667 Fri Feb 4 12:56 (00:49) reboot system boot 2.6.9-1.667 Thu Feb 3 21:08 (02:17) . . . wtmp begins Tue Feb 1 12:50:09 2005
Change user's group ID without logging out. This permits access to the new group's files. Since users may be members of multiple groups simultaneously, this command finds only limited use.
Kurt Glaesemann points out that the newgrp command could prove helpful in setting the default group permissions for files a user writes. However, the chgrp command might be more convenient for this purpose.
Echoes the name (filename) of the current user's terminal. Note that each separate xterm window counts as a different terminal.
Shows and/or changes terminal settings. This complex command, used in a script, can control terminal behavior and the way output displays. See the info page, and study it carefully.
Example 17.2. Setting an erase character
#!/bin/bash # erase.sh: Using "stty" to set an erase character when reading input. echo -n "What is your name? " read name # Try to backspace #+ to erase characters of input. # Problems? echo "Your name is $name." stty erase '#' # Set "hashmark" (#) as erase character. echo -n "What is your name? " read name # Use # to erase last character typed. echo "Your name is $name." exit 0 # Even after the script exits, the new key value remains set. # Exercise: How would you reset the erase character to the default value?
Example 17.3. secret password: Turning off terminal echoing
#!/bin/bash # secret-pw.sh: secret password echo echo -n "Enter password " read passwd echo "password is $passwd" echo -n "If someone had been looking over your shoulder, " echo "your password would have been compromised." echo && echo # Two line-feeds in an "and list." stty -echo # Turns off screen echo. # May also be done with # read -sp passwd # A big Thank You to Leigh James for pointing this out. echo -n "Enter password again " read passwd echo echo "password is $passwd" echo stty echo # Restores screen echo. exit 0 # Do an 'info stty' for more on this useful-but-tricky command.
A creative use of stty is detecting a user keypress (without hitting ENTER).
Example 17.4. Keypress detection
#!/bin/bash # keypress.sh: Detect a user keypress ("hot keys"). echo old_tty_settings=$(stty -g) # Save old settings (why?). stty -icanon Keypress=$(head -c1) # or $(dd bs=1 count=1 2> /dev/null) # on non-GNU systems echo echo "Key pressed was \""$Keypress"\"." echo stty "$old_tty_settings" # Restore old settings. # Thanks, Stephane Chazelas. exit 0
Also see Example 9.3, "Once more, timed input" and Example A.43, "A command-line stopwatch".
Set certain terminal attributes. This command writes
to its terminal's
stdout a string that
changes the behavior of that terminal.
setterm -cursor off
The setterm command can be used within a
script to change the appearance of text written to
stdout, although there are certainly
better tools available
for this purpose.
setterm -bold on echo bold hello setterm -bold off echo normal hello
Show or initialize terminal settings. This is a less capable version of stty.
tset -r
Terminal type is xterm-xfree86. Kill is control-U (^U). Interrupt is control-C (^C).
Set or display serial port parameters. This command must be run by root and is usually found in a system setup script.
# From /etc/pcmcia/serial script: IRQ=`setserial /dev/$DEVICE | sed -e 's/.*IRQ: //'` setserial /dev/$DEVICE irq 0 ; setserial /dev/$DEVICE irq $IRQ
The initialization process for a terminal uses getty or agetty to set it up for login by a user. These commands are not used within user shell scripts. Their scripting counterpart is stty.
Enables or disables write access to the current user's terminal. Disabling access would prevent another user on the network to write to the terminal.
It can be quite annoying to have a message about ordering pizza suddenly appear in the middle of the text file you are editing. On a multi-user network, you might therefore wish to disable write access to your terminal when you need to avoid interruptions.
This is an acronym for "write all," i.e., sending a message to all users at every terminal logged into the network. It is primarily a system administrator's tool, useful, for example, when warning everyone that the system will shortly go down due to a problem (see Example 19.1, "broadcast: Sends message to everyone logged in").
wall System going down for maintenance in 5 minutes!
Broadcast message from bozo (pts/1) Sun Jul 8 13:53:27 2001... System going down for maintenance in 5 minutes!
If write access to a particular terminal has been disabled with mesg, then wall cannot send a message to that terminal.
Output system specifications (OS, kernel version,
etc.) to
stdout. Invoked with the
-a option, gives verbose system info
(see Example 16.5, "Logfile: Using xargs to monitor system log"). The
option shows only the OS type.
uname -s
uname -a
Linux iron.bozo 2.6.15-1.2054_FC5 #1 Tue Mar 14 15:48:33 EST 2006 i686 i686 i386 GNU/Linux
Show system architecture. Equivalent to uname -m. See Example 11.27, "Using command substitution to generate the case variable".
uname -m
Gives information about previous commands, as stored
in the
/var/account/pacct file. Command
name and user name can be specified by options. This is
one of the GNU accounting utilities.
List the last login time of all system users. This
references the
root tty1 Fri Dec 7 18:43:21 -0700 2001 bin **Never logged in** daemon **Never logged in** ... bozo tty1 Sat Dec 8 21:14:29 -0700 2001
lastlog | grep root
root tty1 Fri Dec 7 18:43:21 -0700 2001
This command will fail if the user invoking
it does not have read permission for the
/var/log/lastlog file.
List open files. This command outputs a detailed table of all currently open files and gives information about their owner, size, the processes associated with them, and more. Of course, lsof may be piped to grep and/or awk to parse and analyze its results.
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME init 1 root mem REG 3,5 30748 30303 /sbin/init init 1 root mem REG 3,5 73120 8069 /lib/ld-2.1.3.so init 1 root mem REG 3,5 931668 8075 /lib/libc-2.1.3.so cardmgr 213 root mem REG 3,5 36956 30357 /sbin/cardmgr ...
The lsof command is a useful,
if complex administrative tool. If you are unable to
dismount a filesystem and get an error message that it is
still in use, then running lsof helps
determine which files are still open on that filesystem. The
-i option lists open network socket files,
and this can help trace intrusion or hack attempts.
lsof -an -i tcp
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME firefox 2330 bozo 32u IPv4 9956 TCP 126.96.36.199:57596->126.96.36.199:http ... firefox 2330 bozo 38u IPv4 10535 TCP 22.214.171.124:57708->220.127.116.11:http ...
See Example 30.2, "IP addresses" for an effective use of lsof.
System trace: diagnostic and debugging tool for tracing system calls and signals. This command and ltrace, following, are useful for diagnosing why a given program or package fails to run . . . perhaps due to missing libraries or related causes.
strace df
execve("/bin/df", ["df"], [/* 45 vars */]) = 0 uname({sys="Linux", node="bozo.localdomain", ...}) = 0 brk(0) = 0x804f5e4 ...
This is the Linux equivalent of the Solaris truss command.
Library trace: diagnostic and debugging tool that traces library calls invoked by a given command.
ltrace df
__libc_start_main(0x804a910, 1, 0xbfb589a4, 0x804fb70, 0x804fb68 <unfinished ...> setlocale(6, "") = "en_US.UTF-8" bindtextdomain("coreutils", "/usr/share/locale") = "/usr/share/locale" textdomain("coreutils") = "coreutils" __cxa_atexit(0x804b650, 0, 0, 0x8052bf0, 0xbfb58908) = 0 getenv("DF_BLOCK_SIZE") = NULL ...
The nc (netcat) utility is a complete toolkit for connecting to and listening to TCP and UDP ports. It is useful as a diagnostic and testing tool and as a component in simple script-based HTTP clients and servers.
nc localhost.localdomain 25
220 localhost.localdomain ESMTP Sendmail 8.13.1/8.13.1; Thu, 31 Mar 2005 15:41:35 -0700
A real-life usage example.
Example 17.5. Checking a remote server for identd
#! /bin/sh ## Duplicate DaveG's ident-scan thingie using netcat. Oooh, he'll be p*ssed. ## Args: target port [port port port ...] ## Hose stdout _and_ stderr together. ## ## Advantages: runs slower than ident-scan, giving remote inetd less cause ##+ for alarm, and only hits the few known daemon ports you specify. ## Disadvantages: requires numeric-only port args, the output sleazitude, ##+ and won't work for r-services when coming from high source ports. # Script author: Hobbit <firstname.lastname@example.com> # Used in ABS Guide with permission. # --------------------------------------------------- E_BADARGS=65 # Need at least two args. TWO_WINKS=2 # How long to sleep. THREE_WINKS=3 IDPORT=113 # Authentication "tap ident" port. RAND1=999 RAND2=31337 TIMEOUT0=9 TIMEOUT1=8 TIMEOUT2=4 # --------------------------------------------------- case "${2}" in "" ) echo "Need HOST and at least one PORT." ; exit $E_BADARGS ;; esac # Ping 'em once and see if they *are* running identd. nc -z -w $TIMEOUT0 "$1" $IDPORT || \ { echo "Oops, $1 isn't running identd." ; exit 0 ; } # -z scans for listening daemons. # -w $TIMEOUT = How long to try to connect. # Generate a randomish base port. RP=`expr $$ % $RAND1 + $RAND2` TRG="$1" shift while test "$1" ; do nc -v -w $TIMEOUT1 -p ${RP} "$TRG" ${1} < /dev/null > /dev/null & PROC=$! sleep $THREE_WINKS echo "${1},${RP}" | nc -w $TIMEOUT2 -r "$TRG" $IDPORT 2>&1 sleep $TWO_WINKS # Does this look like a lamer script or what . . . ? # ABS Guide author comments: "Ain't really all that bad . . . #+ kinda clever, actually." kill -HUP $PROC RP=`expr ${RP} + 1` shift done exit $? # Notes: # ----- # Try commenting out line 30 and running this script #+ with "localhost.localdomain 25" as arguments. # For more of Hobbit's 'nc' example scripts, #+ look in the documentation: #+ the /usr/share/doc/nc-X.XX/scripts directory.
And, of course, there's Dr. Andrew Tridgell's notorious one-line script in the BitKeeper Affair:
echo clone | nc thunk.org 5000 > e2fsprogs.dat
Shows memory and cache usage in tabular form. The output of this command lends itself to parsing, using grep, awk or Perl. The procinfo command shows all the information that free does, and much more.
total used free shared buffers cached Mem: 30504 28624 1880 15820 1608 16376 -/+ buffers/cache: 10640 19864 Swap: 68540 3128 65412
To show unused RAM memory:
bash$free | grep Mem | awk '{ print $4 }'
Extract and list information and statistics from the
pseudo-filesystem. This gives a very extensive and
detailed listing.
procinfo | grep Bootup
Bootup: Wed Mar 21 15:15:50 2001 Load average: 0.04 0.21 0.34 3/47 6829
List devices, that is, show installed hardware.
Device DMA IRQ I/O Ports ------------------------------------------------ cascade 4 2 dma 0080-008f dma1 0000-001f dma2 00c0-00df fpu 00f0-00ff ide0 14 01f0-01f7 03f6-03f6 ...
Show (disk) file usage, recursively. Defaults to current working directory, unless otherwise specified.
bash$du -ach
1.0k ./wi.sh 1.0k ./tst.sh 1.0k ./random.file 6.0k . 6.0k total
Shows filesystem usage in tabular form.
Filesystem 1k-blocks Used Available Use% Mounted on /dev/hda5 273262 92607 166547 36% / /dev/hda8 222525 123951 87085 59% /home /dev/hda7 1408796 1075744 261488 80% /usr
Lists all system bootup messages to
stdout. Handy for debugging and
ascertaining which device drivers were installed
and which system interrupts in use. The output
of dmesg may, of course, be
parsed with grep,
sed, or awk from within a script.
dmesg | grep hda
Kernel command line: ro root=/dev/hda2 hda: IBM-DLGA-23080, ATA DISK drive hda: 6015744 sectors (3080 MB) w/96KiB Cache, CHS=746/128/63 hda: hda1 hda2 hda3 < hda5 hda6 hda7 > hda4
Gives detailed and verbose statistics on a given file (even a directory or device file) or set of files.
stat test.cru
File: "test.cru" Size: 49970 Allocated Blocks: 100 Filetype: Regular File Mode: (0664/-rw-rw-r--) Uid: ( 501/ bozo) Gid: ( 501/ bozo) Device: 3,8 Inode: 18185 Links: 1 Access: Sat Jun 2 16:40:24 2001 Modify: Sat Jun 2 16:40:24 2001 Change: Sat Jun 2 16:40:24 2001
If the target file does not exist, stat returns an error message.
stat nonexistent-file
nonexistent-file: No such file or directory
In a script, you can use stat to extract information about files (and filesystems) and set variables accordingly.
#!/bin/bash # fileinfo2.sh # Per suggestion of Joël Bourquard and . . . # http://www.linuxquestions.org/questions/showthread.php?t=410766 FILENAME=testfile.txt file_name=$(stat -c%n "$FILENAME") # Same as "$FILENAME" of course. file_owner=$(stat -c%U "$FILENAME") file_size=$(stat -c%s "$FILENAME") # Certainly easier than using "ls -l $FILENAME" #+ and then parsing with sed. file_inode=$(stat -c%i "$FILENAME") file_type=$(stat -c%F "$FILENAME") file_access_rights=$(stat -c%A "$FILENAME") echo "File name: $file_name" echo "File owner: $file_owner" echo "File size: $file_size" echo "File inode: $file_inode" echo "File type: $file_type" echo "File access rights: $file_access_rights" exit 0 sh fileinfo2.sh File name: testfile.txt File owner: bozo File size: 418 File inode: 1730378 File type: regular file File access rights: -rw-rw-r--
Display virtual memory statistics.
procs memory swap io system cpu r b w swpd free buff cache si so bi bo in cs us sy id 0 0 0 0 11040 2636 38952 0 0 33 7 271 88 8 3 89
Shows how long the system has been running, along with associated statistics.
10:28pm up 1:57, 3 users, load average: 0.17, 0.34, 0.27
A load average of 1 or less indicates that the system handles processes immediately. A load average greater than 1 means that processes are being queued. When the load average gets above 3 (on a single-core processor), then system performance is significantly degraded.
Lists the system's host name. This command sets the host
name in an
setup script (
or similar). It is equivalent to uname
-n, and a counterpart to the $HOSTNAME internal
echo $HOSTNAME
Similar to the hostname command are the domainname, dnsdomainname, nisdomainname, and ypdomainname commands. Use these to display or set the system DNS or NIS/YP domain name. Various options to hostname also perform these functions.
Echo a 32-bit hexadecimal numerical identifier for the host machine.
This command allegedly fetches a "unique" serial number for a particular system. Certain product registration procedures use this number to brand a particular user license. Unfortunately, hostid only returns the machine network address in hexadecimal, with pairs of bytes transposed.
The network address of a typical non-networked Linux
machine, is found in
cat /etc/hosts
127.0.0.1 localhost.localdomain localhost
As it happens, transposing the bytes of
127.0.0.1, we get
0.127.1.0, which translates in
hex to
007f0100, the exact equivalent
of what hostid returns, above. There
exist only a few million other Linux machines with this
identical hostid.
Invoking sar (System Activity Reporter) gives a very detailed rundown on system statistics. The Santa Cruz Operation ("Old" SCO) released sar as Open Source in June, 1999.
This command is not part of the base Linux distribution, but may be obtained as part of the sysstat utilities package, written by Sebastien Godard.
Linux 2.4.9 (brooks.seringas.fr) 09/26/03 10:30:00 CPU %user %nice %system %iowait %idle 10:40:00 all 2.21 10.90 65.48 0.00 21.41 10:50:00 all 3.36 0.00 72.36 0.00 24.28 11:00:00 all 1.12 0.00 80.77 0.00 18.11 Average: all 2.23 3.63 72.87 0.00 21.27 14:32:30 LINUX RESTART 15:00:00 CPU %user %nice %system %iowait %idle 15:10:00 all 8.59 2.40 17.47 0.00 71.54 15:20:00 all 4.07 1.00 11.95 0.00 82.98 15:30:00 all 0.79 2.94 7.56 0.00 88.71 Average: all 6.33 1.70 14.71 0.00 77.26
Show information and statistics about a designated elf binary. This is part of the binutils package.
readelf -h /bin/bash
ELF Header: Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 Class: ELF32 Data: 2's complement, little endian Version: 1 (current) OS/ABI: UNIX - System V ABI Version: 0 Type: EXEC (Executable file) . . .
The size [/path/to/binary] command gives the segment sizes of a binary executable or archive file. This is mainly of use to programmers.
size /bin/bash
text data bss dec hex filename 495971 22496 17392 535859 82d33 /bin/bash
Appends a user-generated message to the system log
/var/log/messages). You do not have
to be root to invoke
logger Experiencing instability in network connection at 23:10, 05/21. # Now, do a 'tail /var/log/messages'.
By embedding a logger command in a script,
it is possible to write debugging information to
logger -t $0 -i Logging at line "$LINENO". # The "-t" option specifies the tag for the logger entry. # The "-i" option records the process ID. # tail /var/log/message # ... # Jul 7 20:48:58 localhost ./test.sh[1712]: Logging at line 3.
This utility manages the system log files, rotating,
compressing, deleting, and/or e-mailing them, as appropriate.
This keeps the
from getting cluttered with old log files.
Usually cron runs
logrotate on a daily basis.
Adding an appropriate entry to
/etc/logrotate.conf makes it possible
to manage personal log files, as well as system-wide
Stefano Falsetto has created rottlog, which he considers to be an improved version of logrotate.
Statistics: lists currently
executing processes by owner and PID (process ID). This
is usually invoked with
ax or
aux options,
and may be piped to grep
or sed to search for a
specific process (see Example 15.14, "Forcing a log-off" and Example 29.3, "Finding the process associated with a PID").
ps ax | grep sendmail
295 ? S 0:00 sendmail: accepting connections on port 25
To display system processes in graphical "tree" format: ps afjx or ps ax --forest.
Combining the ps command with grep or kill.
ps a | grep mingetty
2212 tty2 Ss+ 0:00 /sbin/mingetty tty2 2213 tty3 Ss+ 0:00 /sbin/mingetty tty3 2214 tty4 Ss+ 0:00 /sbin/mingetty tty4 2215 tty5 Ss+ 0:00 /sbin/mingetty tty5 2216 tty6 Ss+ 0:00 /sbin/mingetty tty6 4849 pts/2 S+ 0:00 grep mingetty
pgrep mingetty
2212 mingetty 2213 mingetty 2214 mingetty 2215 mingetty 2216 mingetty
Compare the action of pkill with killall.
Lists currently executing processes in
"tree" format. The
-p option
shows the PIDs, as well as the process names.
Continuously updated display of most cpu-intensive
processes. The
-b option displays in text
mode, so that the output may be parsed or accessed from
a script.
top -b
8:30pm up 3 min, 3 users, load average: 0.49, 0.32, 0.13 45 processes: 44 sleeping, 1 running, 0 zombie, 0 stopped CPU states: 13.6% user, 7.3% system, 0.0% nice, 78.9% idle Mem: 78396K av, 65468K used, 12928K free, 0K shrd, 2352K buff Swap: 157208K av, 0K used, 157208K free 37244K cached PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME COMMAND 848 bozo 17 0 996 996 800 R 5.6 1.2 0:00 top 1 root 8 0 512 512 444 S 0.0 0.6 0:04 init 2 root 9 0 0 0 0 SW 0.0 0.0 0:00 keventd ...
Run a background job with an altered priority. Priorities run from 19 (lowest) to -20 (highest). Only root may set the negative (higher) priorities. Related commands are renice and snice, which change the priority of a running process or processes, and skill, which sends a kill signal to a process or processes.
Keeps a command running even after user logs off. The command will run as a foreground process unless followed by &. If you use nohup within a script, consider coupling it with a wait to avoid creating an orphan or zombie process.
Identifies process ID (PID) of a running job. Since job control commands, such as kill and renice act on the PID of a process (not its name), it is sometimes necessary to identify that PID. The pidof command is the approximate counterpart to the $PPID internal variable.
pidof xclock
Example 17.6. pidof helps kill a process
#!/bin/bash # kill-process.sh NOPROCESS=2 process=xxxyyyzzz # Use nonexistent process. # For demo purposes only... # ... don't want to actually kill any actual process with this script. # # If, for example, you wanted to use this script to logoff the Internet, # process=pppd t=`pidof $process` # Find pid (process id) of $process. # The pid is needed by 'kill' (can't 'kill' by program name). if [ -z "$t" ] # If process not present, 'pidof' returns null. then echo "Process $process was not running." echo "Nothing killed." exit $NOPROCESS fi kill $t # May need 'kill -9' for stubborn process. # Need a check here to see if process allowed itself to be killed. # Perhaps another " t=`pidof $process` " or ... # This entire script could be replaced by # kill $(pidof -x process_name) # or # killall process_name # but it would not be as instructive. exit 0
Identifies the processes (by PID) that are accessing
a given file, set of files, or directory. May also be
invoked with the
-k option, which kills
those processes. This has interesting implications for
system security, especially in scripts preventing
unauthorized users from accessing system services.
fuser -u /usr/bin/vim
/usr/bin/vim: 3207e(bozo)
fuser -u /dev/null
/dev/null: 3009(bozo) 3010(bozo) 3197(bozo) 3199(bozo)
One important application for fuser is when physically inserting or removing storage media, such as CD ROM disks or USB flash drives. Sometimes trying a umount fails with a device is busy error message. This means that some user(s) and/or process(es) are accessing the device. An fuser -um /dev/device_name will clear up the mystery, so you can kill any relevant processes.
umount /mnt/usbdrive
umount: /mnt/usbdrive: device is busy
fuser -um /dev/usbdrive
/mnt/usbdrive: 1772c(bozo)
kill -9 1772
umount /mnt/usbdrive
The fuser command, invoked with the
-n option identifies the processes
accessing a port. This
is especially useful in combination with nmap.
nmap localhost.localdomain
PORT STATE SERVICE 25/tcp open smtp
fuser -un tcp 25
25/tcp: 2095(root)
ps ax | grep 2095 | grep -v grep
2095 ? Ss 0:00 sendmail: accepting connections
Administrative program scheduler, performing such
duties as cleaning up and deleting system log files and
updating the slocate database. This
is the superuser version of at (although each user may have
their own
crontab file which can be
changed with the crontab command).
It runs as a daemon
and executes scheduled entries from
Some flavors of Linux run crond, Matthew Dillon's version of cron.
The init command is the parent of all processes. Called
in the final step of a bootup, init
determines the runlevel of the system from
/etc/inittab. Invoked by its alias
telinit, and by
root only.
Symlinked to init, this is a means of changing the system runlevel, usually done for system maintenance or emergency filesystem repairs. Invoked only by root. This command can be dangerous -- be certain you understand it well before using!
Shows the current and last runlevel, that is, whether the system
is halted (runlevel
0), in single-user mode
1), in multi-user mode (
3), in X Windows (
5), or
rebooting (
6). This command accesses the
/var/run/utmp file.
Command set to shut the system down, usually just prior to a power down.
On some Linux distros, the halt command has 755 permissions, so it can be invoked by a non-root user. A careless halt in a terminal or a script may shut down the system!
Starts or stops a system service.
The startup scripts in
/etc/rc.d use this
command to start services at bootup.
/sbin/service iptables stop
Flushing firewall rules: [ OK ] Setting chains to policy ACCEPT: filter [ OK ] Unloading iptables modules: [ OK ]
Network mapper and port scanner. This command scans a server to locate open ports and the services associated with those ports. It can also report information about packet filters and firewalls. This is an important security tool for locking down a network against hacking attempts.
#!/bin/bash SERVER=$HOST # localhost.localdomain (127.0.0.1). PORT_NUMBER=25 # SMTP port. nmap $SERVER | grep -w "$PORT_NUMBER" # Is that particular port open? # grep -w matches whole words only, #+ so this wouldn't match port 1025, for example. exit 0 # 25/tcp open smtp
Network interface configuration and tuning utility.
ifconfig -a
lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:10 errors:0 dropped:0 overruns:0 frame:0 TX packets:10 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:700 (700.0 b) TX bytes:700 (700.0 b)
The ifconfig command is most often used at bootup to set up the interfaces, or to shut them down when rebooting.
# Code snippets from /etc/rc.d/init.d/network # ... # Check that networking is up. [ ${NETWORKING} = "no" ] && exit 0 [ -x /sbin/ifconfig ] || exit 0 # ... for i in $interfaces ; do if ifconfig $i 2>/dev/null | grep -q "UP" >/dev/null 2>&1 ; then action "Shutting down interface $i: " ./ifdown $i boot fi # The GNU-specific "-q" option to "grep" means "quiet", i.e., #+ producing no output. # Redirecting output to /dev/null is therefore not strictly necessary. # ... echo "Currently active devices:" echo `/sbin/ifconfig | grep ^[a-z] | awk '{print $1}'` # ^^^^^ should be quoted to prevent globbing. # The following also work. # echo $(/sbin/ifconfig | awk '/^[a-z]/ { print $1 })' # echo $(/sbin/ifconfig | sed -e 's/ .*//') # Thanks, S.C., for additional comments.
Show current network statistics and information,
such as routing tables and active connections. This utility
accesses information in
(Chapter 29,
/dev and
/proc). See Example 29.4, "On-line connect status".
netstat -r is equivalent to route.
Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State Active UNIX domain sockets (w/o servers) Proto RefCnt Flags Type State I-Node Path unix 11 [ ] DGRAM 906 /dev/log unix 3 [ ] STREAM CONNECTED 4514 /tmp/.X11-unix/X0 unix 3 [ ] STREAM CONNECTED 4513 . . .
A netstat -lptu shows sockets that are listening to ports, and the associated processes. This can be useful for determining whether a computer has been hacked or compromised.
This is the command set for configuring a wireless network. It is the wireless equivalent of ifconfig, above.
General purpose utility for setting up, changing, and analyzing IP (Internet Protocol) networks and attached devices. This command is part of the iproute2 package.
ip link show
1: lo: <LOOPBACK,UP> mtu 16436 qdisc noqueue link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast qlen 1000 link/ether 00:d0:59:ce:af:da brd ff:ff:ff:ff:ff:ff 3: sit0: <NOARP> mtu 1480 qdisc noop link/sit 0.0.0.0 brd 0.0.0.0
ip route list
169.254.0.0/16 dev lo scope link
Or, in a script:
#!/bin/bash # Script by Juan Nicolas Ruiz # Used with his kind permission. # Setting up (and stopping) a GRE tunnel. # --- start-tunnel.sh --- LOCAL_IP="192.168.1.17" REMOTE_IP="10.0.5.33" OTHER_IFACE="192.168.0.100" REMOTE_NET="192.168.3.0/24" /sbin/ip tunnel add netb mode gre remote $REMOTE_IP \ local $LOCAL_IP ttl 255 /sbin/ip addr add $OTHER_IFACE dev netb /sbin/ip link set netb up /sbin/ip route add $REMOTE_NET dev netb exit 0 ############################################# # --- stop-tunnel.sh --- REMOTE_NET="192.168.3.0/24" /sbin/ip route del $REMOTE_NET dev netb /sbin/ip link set netb down /sbin/ip tunnel del netb exit 0
Show info about or make changes to the kernel routing table.
Destination Gateway Genmask Flags MSS Window irtt Iface pm3-67.bozosisp * 255.255.255.255 UH 40 0 0 ppp0 127.0.0.0 * 255.0.0.0 U 40 0 0 lo default pm3-67.bozosisp 0.0.0.0 UG 40 0 0 ppp0
The iptables command set is a packet filtering tool used mainly for such security purposes as setting up network firewalls. This is a complex tool, and a detailed explanation of its use is beyond the scope of this document. Oskar Andreasson's tutorial is a reasonable starting point.
See also shutting down iptables and Example 30.2, "IP addresses".
Check network and system configuration. This command
lists and
manages the network and system services started at bootup in
Originally a port from IRIX to Red Hat Linux, chkconfig may not be part of the core installation of some Linux flavors.
chkconfig --list
atd 0:off 1:off 2:off 3:on 4:on 5:on 6:off rwhod 0:off 1:off 2:off 3:off 4:off 5:off 6:off ...
Network packet "sniffer." This is a tool for analyzing and troubleshooting traffic on a network by dumping packet headers that match specified criteria.
Dump ip packet traffic between hosts bozoville and caduceus:
tcpdump ip host bozoville and caduceus
Of course, the output of tcpdump can be parsed with certain of the previously discussed text processing utilities.
Mount a filesystem, usually on an external device,
such as a floppy or CDROM. The file
/etc/fstab provides a handy listing
of available filesystems, partitions, and devices,
including options, that may be automatically or manually
mounted. The file
/etc/mtab shows
the currently mounted filesystems and partitions
(including the virtual ones, such as
mount -a mounts all filesystems and
partitions listed in
except those with a
option. At bootup, a startup script in
rc.sysinit or something similar)
invokes this to get everything mounted.
mount -t iso9660 /dev/cdrom /mnt/cdrom # Mounts CD ROM. ISO 9660 is a standard CD ROM filesystem. mount /mnt/cdrom # Shortcut, if /mnt/cdrom listed in /etc/fstab
The versatile mount command can even mount an ordinary file on a block device, and the file will act as if it were a filesystem. Mount accomplishes that by associating the file with a loopback device. One application of this is to mount and examine an ISO9660 filesystem image before burning it onto a CDR. [90]
Example 17.7. Checking a CD image
# As root... mkdir /mnt/cdtest # Prepare a mount point, if not already there. mount -r -t iso9660 -o loop cd-image.iso /mnt/cdtest # Mount the image. # "-o loop" option equivalent to "losetup /dev/loop0" cd /mnt/cdtest # Now, check the image. ls -alR # List the files in the directory tree there. # And so forth.
Unmount a currently mounted filesystem. Before physically removing a previously mounted floppy or CDROM disk, the device must be umounted, else filesystem corruption may result.
umount /mnt/cdrom # You may now press the eject button and safely remove the disk.
The automount utility, if properly installed, can mount and unmount floppies or CDROM disks as they are accessed or removed. On "multispindle" laptops with swappable floppy and optical drives, this can cause problems, however.
The newer Linux distros have deprecated
mount and umount.
The successor, for command-line mounting of removable storage
devices, is gnome-mount. It can take the
-d option to mount a device file by its listing in
For example, to mount a USB flash drive:
gnome-mount -d /dev/sda1
gnome-mount 0.4
. . . /dev/sda1 63584 12034 51550 19% /media/disk
Forces an immediate write of all updated data from
buffers to hard drive (synchronize drive
with buffers). While not strictly necessary, a
sync assures the sys admin or
user that the data just changed will survive a sudden
power failure. In the olden days, a
sync (twice, just to make absolutely sure) was a
useful precautionary measure before a system reboot.
At times, you may wish to force an immediate buffer flush, as when securely deleting a file (see Example 16.61, "Securely deleting a file") or when the lights begin to flicker.
Sets up and configures loopback devices.
Example 17.8. Creating a filesystem in a file
SIZE=1000000 # 1 meg head -c $SIZE < /dev/zero > file # Set up file of designated size. losetup /dev/loop0 file # Set it up as loopback device. mke2fs /dev/loop0 # Create filesystem. mount -o loop /dev/loop0 /mnt # Mount it. # Thanks, S.C.
Creates a swap partition or file. The swap area must subsequently be enabled with swapon.
Enable / disable swap partitition or file. These commands usually take effect at bootup and shutdown.
Create a Linux ext2 filesystem. This command must be invoked as root.
Example 17.9. Adding a new hard drive
#!/bin/bash # Adding a second hard drive to system. # Software configuration. Assumes hardware already mounted. # From an article by the author of the ABS Guide. # In issue #38 of _Linux Gazette_, http://www.linuxgazette.com. ROOT_UID=0 # This script must be run as root. E_NOTROOT=67 # Non-root exit error. if [ "$UID" -ne "$ROOT_UID" ] then echo "Must be root to run this script." exit $E_NOTROOT fi # Use with extreme caution! # If something goes wrong, you may wipe out your current filesystem. NEWDISK=/dev/hdb # Assumes /dev/hdb vacant. Check! MOUNTPOINT=/mnt/newdisk # Or choose another mount point. fdisk $NEWDISK mke2fs -cv $NEWDISK1 # Check for bad blocks (verbose output). # Note: ^ /dev/hdb1, *not* /dev/hdb! mkdir $MOUNTPOINT chmod 777 $MOUNTPOINT # Makes new drive accessible to all users. # Now, test ... # mount -t ext2 /dev/hdb1 /mnt/newdisk # Try creating a directory. # If it works, umount it, and proceed. # Final step: # Add the following line to /etc/fstab. # /dev/hdb1 /mnt/newdisk ext2 defaults 1 1 exit
See also Example 17.8, "Creating a filesystem in a file" and Example 31.3, "Creating a ramdisk".
Create a DOS FAT filesystem.
Tune ext2 filesystem. May be used to change filesystem parameters, such as maximum mount count. This must be invoked as root.
This is an extremely dangerous command. Use it at your own risk, as you may inadvertently destroy your filesystem.
Dump (list to
stdout) very verbose
filesystem info. This must be invoked as
root#dumpe2fs /dev/hda7 | grep 'ount count'
dumpe2fs 1.19, 13-Jul-2000 for EXT2 FS 0.5b, 95/08/09 Mount count: 6 Maximum mount count: 20
List or change hard disk parameters. This command must be invoked as root, and it may be dangerous if misused.
Create or change a partition table on a storage device, usually a hard drive. This command must be invoked as root.
Use this command with extreme caution. If something goes wrong, you may destroy an existing filesystem.
Filesystem check, repair, and debug command set.
fsck: a front end for checking a UNIX filesystem (may invoke other utilities). The actual filesystem type generally defaults to ext2.
e2fsck: ext2 filesystem checker.
debugfs: ext2 filesystem debugger. One of the uses of this versatile, but dangerous command is to (attempt to) recover deleted files. For advanced users only!
All of these should be invoked as root, and they can damage or destroy a filesystem if misused.
Checks for bad blocks (physical media flaws) on a storage device. This command finds use when formatting a newly installed hard drive or testing the integrity of backup media. [91] As an example, badblocks /dev/fd0 tests a floppy disk.
The badblocks command may be invoked destructively (overwrite all data) or in non-destructive read-only mode. If root user owns the device to be tested, as is generally the case, then root must invoke this command.
The lsusb command lists all USB (Universal Serial Bus) buses and the devices hooked up to them.
The usbmodules command outputs information about the driver modules for connected USB devices.
Bus 001 Device 001: ID 0000:0000 Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 1.00 bDeviceClass 9 Hub bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 8 idVendor 0x0000 idProduct 0x0000 . . .
Lists pci busses present.
00:00.0 Host bridge: Intel Corporation 82845 845 (Brookdale) Chipset Host Bridge (rev 04) 00:01.0 PCI bridge: Intel Corporation 82845 845 (Brookdale) Chipset AGP Bridge (rev 04) 00:1d.0 USB Controller: Intel Corporation 82801CA/CAM USB (Hub #1) (rev 02) 00:1d.1 USB Controller: Intel Corporation 82801CA/CAM USB (Hub #2) (rev 02) 00:1d.2 USB Controller: Intel Corporation 82801CA/CAM USB (Hub #3) (rev 02) 00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev 42) . . .
Creates a boot floppy which can be used to bring up the
system if, for example, the MBR (master boot record) becomes
corrupted. Of special interest is the
option, which uses mkisofs to create a
bootable ISO9660 filesystem image
suitable for burning a bootable CDR.
The mkbootdisk command is actually
a Bash script, written by Erik Troan, in the
/sbin directory.
Creates an ISO9660 filesystem suitable for a CDR image.
CHange ROOT directory. Normally commands are fetched
from $PATH, relative to
/, the default
directory. This changes the
root directory to a different one
(and also changes the working directory to there). This is
useful for security purposes, for instance when the system
administrator wishes to restrict certain users, such as
those telnetting in,
to a secured portion of the filesystem (this is sometimes
referred to as confining a guest user to a "chroot
jail"). Note that after a chroot,
the execution path for system binaries is no longer
chroot /opt would cause
references to
to be translated to
/opt/usr/bin. Likewise,
chroot /aaa/bbb /bin/ls would
redirect future instances of ls
/aaa/bbb as the base directory,
rather than
/ as is
normally the case. An alias XX 'chroot /aaa/bbb
ls' in a user's
effectively restricts which portion of the filesystem
she may run command "XX" on.
The chroot command is also handy
when running from an emergency boot floppy
(chroot to
or as an option to lilo when recovering
from a system crash. Other uses include installation from a
different filesystem (an rpm
option) or running a readonly filesystem from a CD ROM.
Invoke only as root, and use with
It might be necessary to copy certain system
files to a chrooted directory,
since the normal
$PATH can no longer
be relied upon.
This utility is part of the procmail package (www.procmail.org). It creates a lock file, a semaphore that controls access to a file, device, or resource.
The lock file serves as a flag that this particular file, device, or resource is in use by a process (and is therefore "busy"). The presence of a lock file permits only restricted access (or no access) to other processes.
lockfile /home/bozo/lockfiles/$0.lock # Creates a write-protected lockfile prefixed with the name of the script. lockfile /home/bozo/lockfiles/${0##*/}.lock # A safer version of the above, as pointed out by E. Choroba.
Lock files are used in such applications as protecting system mail folders from simultaneously being changed by multiple users, indicating that a modem port is being accessed, and showing that an instance of Firefox is using its cache. Scripts may check for the existence of a lock file created by a certain process to check if that process is running. Note that if a script attempts to create a lock file that already exists, the script will likely hang.
Normally, applications create and check for lock files
in the
A script can test for the presence of a lock file by
something like the following.
appname=xyzip # Application "xyzip" created lock file "/var/lock/xyzip.lock". if [ -e "/var/lock/$appname.lock" ] then #+ Prevent other programs & scripts # from accessing files/resources used by xyzip. ...
Much less useful than the lockfile command is flock. It sets an "advisory" lock on a file and then executes a command while the lock is on. This is to prevent any other process from setting a lock on that file until completion of the specified command.
flock $0 cat $0 > lockfile__$0 # Set a lock on the script the above line appears in, #+ while listing the script to stdout.
Unlike lockfile, flock does not automatically create a lock file.
Creates block or character device files (may be necessary when installing new hardware on the system). The MAKEDEV utility has virtually all of the functionality of mknod, and is easier to use.
Utility for creating device files. It must be run as
root, and in the
/dev directory. It is a sort
of advanced version of mknod.
Automatically deletes files which have not been accessed within a specified period of time. Usually invoked by cron to remove stale log files.
The dump command is an elaborate filesystem backup utility, generally used on larger installations and networks. [93] It reads raw disk partitions and writes a backup file in a binary format. Files to be backed up may be saved to a variety of storage media, including disks and tape drives. The restore command restores backups made with dump.
Perform a low-level format on a floppy disk
Sets an upper limit on use
of system resources. Usually invoked with the
-f option, which sets a limit on file size
(ulimit -f 1000 limits files to 1 meg
-t option limits the coredump
size (ulimit -c 0 eliminates coredumps).
Normally, the value of ulimit
would be set in
~/.bash_profile (see Appendix H, Important Files).
Judicious use of ulimit can protect a system against the dreaded fork bomb.
# This script is for illustrative purposes only.
# Run it at your own peril -- it WILL freeze your system.
while true # Endless loop.
$0 & # This script invokes itself . . .
#+ forks an infinite number of times . . .
#+ until the system freezes up because all resources exhausted.
done # This is the notorious "sorcerer's appentice" scenario.
exit 0 # Will not exit here, because this script will never terminate.
A ulimit -Hu XX (where
XX is the user process limit) in
/etc/profile would abort
this script when it exceeded the preset limit.
Display user or group disk quotas.
Set user or group disk quotas from the command-line.
User file creation permissions
mask. Limit the default file
attributes for a particular user. All files created
by that user take on the attributes specified by
umask. The (octal) value passed to
umask defines the file permissions
disabled. For example, umask
022 ensures that new files will have at most
755 permissions (777 NAND 022).
Of course, the user may later change the
attributes of particular files with chmod. The usual practice
is to set the value of umask
/etc/profile and/or
~/.bash_profile (see Appendix H, Important Files).
Example 17.10. Using umask to hide an output file from prying eyes
#!/bin/bash # rot13a.sh: Same as "rot13.sh" script, but writes output to "secure" file. # Usage: ./rot13a.sh filename # or ./rot13a.sh <filename # or ./rot13a.sh and supply keyboard input (stdin) umask 177 # File creation mask. # Files created by this script #+ will have 600 permissions. OUTFILE=decrypted.txt # Results output to file "decrypted.txt" #+ which can only be read/written # by invoker of script (or root). cat "$@" | tr 'a-zA-Z' 'n-za-mN-ZA-M' > $OUTFILE # ^^ Input from stdin or a file. ^^^^^^^^^^ Output redirected to file. exit 0
Get info about or make changes to root device, swap space, or video mode. The functionality of rdev has generally been taken over by lilo, but rdev remains useful for setting up a ram disk. This is a dangerous command, if misused.
List installed kernel modules.
Module Size Used by autofs 9456 2 (autoclean) opl3 11376 0 serial_cs 5456 0 (unused) sb 34752 0 uart401 6384 0 [sb] sound 58368 0 [opl3 sb uart401] soundlow 464 0 [sound] soundcore 2800 6 [sb sound] ds 6448 2 [serial_cs] i82365 22928 2 pcmcia_core 45984 0 [serial_cs ds i82365]
Doing a cat /proc/modules gives the same information.
Force installation of a kernel module (use modprobe instead, when possible). Must be invoked as root.
Force unloading of a kernel module. Must be invoked as root.
Module loader that is normally invoked automatically in a startup script. Must be invoked as root.
Creates module dependency file. Usually invoked from a startup script.
Output information about a loadable module.
modinfo hid
filename: /lib/modules/2.4.20-6/kernel/drivers/usb/hid.o description: "USB HID support drivers" author: "Andreas Gal, Vojtech Pavlik <email@example.com>" license: "GPL"
Runs a program or script with certain environmental variables
set or changed (without changing the overall system
environment). The
permits changing the environmental variable
varname for the duration of the
script. With no options specified, this command lists all
the environmental variable settings.
The first line of a script (the "sha-bang" line) may use env when the path to the shell or interpreter is unknown.
#! /usr/bin/env perl print "This Perl script will run,\n"; print "even when I don't know where to find Perl.\n"; # Good for portable cross-platform scripts, # where the Perl binaries may not be in the expected place. # Thanks, S.C.
Or even ...
#!/bin/env bash # Queries the $PATH enviromental variable for the location of bash. # Therefore ... # This script will run where Bash is not in its usual place, in /bin. ...
Show shared lib dependencies for an executable file.
ldd /bin/ls
libc.so.6 => /lib/libc.so.6 (0x4000c000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000)
Run a command repeatedly, at specified time intervals.
The default is two-second intervals, but this may be changed
with the
-n option.
watch -n 5 tail /var/log/messages # Shows tail end of system log, /var/log/messages, every five seconds.
Remove the debugging symbolic references from an executable binary. This decreases its size, but makes debugging it impossible.
This command often occurs in a Makefile, but rarely in a shell script.
List symbols in an unstripped compiled binary.
Command-line tool for manipulating the root window of the screen.
Example 17.11. Backlight: changes the brightness of the (laptop) screen backlight
#!/bin/bash # backlight.sh # reldate 02dec2011 # A bug in Fedora Core 16/17 messes up the keyboard backlight controls. # This script is a quick-n-dirty workaround, essentially a shell wrapper #+ for xrandr. It gives more control than on-screen sliders and widgets. OUTPUT=$(xrandr | grep LV | awk '{print $1}') # Get display name! INCR=.05 # For finer-grained control, set INCR to .03 or .02. old_brightness=$(xrandr --verbose | grep rightness | awk '{ print $2 }') if [ -z "$1" ] then bright=1 # If no command-line arg, set brightness to 1.0 (default). else if [ "$1" = "+" ] then bright=$(echo "scale=2; $old_brightness + $INCR" | bc) # +.05 else if [ "$1" = "-" ] then bright=$(echo "scale=2; $old_brightness - $INCR" | bc) # -.05 else if [ "$1" = "#" ] # Echoes current brightness; does not change it. then bright=$old_brightness else if [[ "$1" = "h" || "$1" = "H" ]] then echo echo "Usage:" echo "$0 [No args] Sets/resets brightness to default (1.0)." echo "$0 + Increments brightness by 0.5." echo "$0 - Decrements brightness by 0.5." echo "$0 # Echoes current brightness without changing it." echo "$0 N (number) Sets brightness to N (useful range .7 - 1.2)." echo "$0 h [H] Echoes this help message." echo "$0 any-other Gives xrandr usage message." bright=$old_brightness else bright="$1" fi fi fi fi fi xrandr --output "$OUTPUT" --brightness "$bright" # See xrandr manpage. # As root! E_CHANGE0=$? echo "Current brightness = $bright" exit $E_CHANGE0 # =========== Or, alternately . . . ==================== # #!/bin/bash # backlight2.sh # reldate 20jun2012 # A bug in Fedora Core 16/17 messes up the keyboard backlight controls. # This is a quick-n-dirty workaround, an alternate to backlight.sh. target_dir=\ /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/backlight/acpi_video0 # Hardware directory. actual_brightness=$(cat $target_dir/actual_brightness) max_brightness=$(cat $target_dir/max_brightness) Brightness=$target_dir/brightness let "req_brightness = actual_brightness" # Requested brightness. if [ "$1" = "-" ] then # Decrement brightness 1 notch. let "req_brightness = $actual_brightness - 1" else if [ "$1" = "+" ] then # Increment brightness 1 notch. let "req_brightness = $actual_brightness + 1" fi fi if [ $req_brightness -gt $max_brightness ] then req_brightness=$max_brightness fi # Do not exceed max. hardware design brightness. echo echo "Old brightness = $actual_brightness" echo "Max brightness = $max_brightness" echo "Requested brightness = $req_brightness" echo # ===================================== echo $req_brightness > $Brightness # Must be root for this to take effect. E_CHANGE1=$? # Successful? # ===================================== if [ "$?" -eq 0 ] then echo "Changed brightness!" else echo "Failed to change brightness!" fi act_brightness=$(cat $Brightness) echo "Actual brightness = $act_brightness" scale0=2 sf=100 # Scale factor. pct=$(echo "scale=$scale0; $act_brightness / $max_brightness * $sf" | bc) echo "Percentage brightness = $pct%" exit $E_CHANGE1
Remote distribution client: synchronizes, clones, or backs up a file system on a remote server.
[88] This is the case on a Linux machine or a UNIX system with disk quotas.
[89] The userdel command will fail if the particular user being deleted is still logged on.
[90] For more detail on burning CDRs, see Alex Withers' article, Creating CDs, in the October, 1999 issue of Linux Journal.
[92] Since only root
has write permission in the
/var/lock directory,
a user script cannot set a lock file there.
[93] Operators of single-user Linux systems generally prefer something simpler for backups, such as tar.
[94] As of the version
4 update of Bash, the
-c options take a block size
of 512 when in POSIX
mode. Additionally, there are two new options:
-b for socket buffer size, and
-T for the limit on the number of
[95] NAND is the logical not-and operator. Its effect is somewhat similar to subtraction.
[96] In Bash and other Bourne shell derivatives, it is possible to set variables in a single command's environment.
var1=value1 var2=value2 commandXXX # $var1 and $var2 set in the environment of 'commandXXX' only.


text:
SAHITYA AKADEMI AWARD for Sindhi book Manush Nagri - (2013). A long poem of human quest. Presented at New Delhi.Full text available here ,in Arabic and Devnagri.Also audio version.
LITERARY AWARD (2009) by Akhil Bharat Sindhi Boli Sahitya Sabha.Presented at Jaipur.
SAHITYAKAR GAURAV PURASKAR (2009) by Sindhi Sahitya Academy, Gujarat State, Presented at Ahmedabad.
Copyright © 2014, Namdev Tarachandani. All rights reserved | Sitemap
Website design by D&C


text:
Spend your visit to northwest Illinois at a winery. The Fisherman's Cabin at Rocky Waters Vineyard sleeps up to 10 and offers a beautiful view of the lake from the deck.
Return to Previous Page
Things To Do
Places To Stay
Byway Bites
Plan Your Trip
Insider's Guide
About The Byway
International Visitors
In The News
Illinois Tourist Information Centers
Privacy Policy
Site Map
© Copyright 2023 Great Rivers Country. All Rights Reserved.
581 South Deere Road | Macomb, Illinois 61455
Design and Development by J Rudny, LLC.
This project was funded in whole or in part through a grant from the Illinois Department of Transportation


text:
The Power BI new workspace experience has been General Available since April 2019. It offers improved security management, more flexible workspace roles, and new capabilities like a contact list to help you support your teams. Using the new workspace experience also enables several major features like shared and certified datasets and large models, to name a few.
Today, we released the documentation for workspace upgrade. We have not yet released the feature, so hold tight its coming soon. We've published the documentation so you can prepare for the new capability and seek clarification of any questions you may have before the release.
How to prepare for the upgrade
Who can upgrade a workspace and how does it work?
Workspace admins will be able to upgrade workspaces they own. Power BI admins can see which workspaces are classic workspaces by using the workspaces list in the Power BI admin portal. They can then work with workspace admins to upgrade the desired workspaces.
Watch the video below to see the upgrade in action. Scroll forward to 17 minutes and 26 seconds to the workspace upgrade section.
What is the user experience after an upgrade?
For end users, the upgrade keeps things like they were before you upgraded the workspace. The URLs and item identifiers of the workspace, the items it contains, and the app you published from it don't change. Features like data refresh, subscriptions, and so forth keep working as they did before the upgrade.
Additionally, upgrading your Power BI workspace doesn't change or remove the Office 365 Group. Any of the Teams, SharePoint Sites, OneNote notebooks, or other things tied to the Office 365 Groups continue to exist and work as they did before.
Your end users will need to refresh their web browsers after the upgrade happens, so you may want to upgrade at off-hours.
There are important differences if the workspace has installed or published content packs, these are described below at a high level, and more extensively in the documentation.
What are the biggest changes to be aware of after upgrade?
Firstly, your workspace in Power BI isn't tied to the Office 365 Group anymore. That means that if you delete the Office 365 Group, the workspace won't be deleted. Also, if you delete the workspace, the Office 365 Group won't be deleted.
The workspace access list and roles assigned to users are updated. You'll want to review these after upgrade to make sure you understand the changes. The Owners of the Office 365 Group are added as Admins of the workspace. The members of the Office 365 Group are not added individually to the workspace access list. Instead, the Office 365 Group is added with the appropriate workspace role.
In most cases, the Office 365 Group will be given the Member role. However, if your workspace is 'read-only' then they'll be given the Viewer role.
You will want to review the permissions after upgrade section in the documentation to familiarize yourself with the details.
What happens if I'm still using content packs?
The new workspace experience doesn't support content packs. Instead, use apps and shared datasets to distribute content in the workspace. We recommend removing published or installed content packs from the workspace prior to upgrade.
However, if there are published or installed content packs when you upgrade, the upgrade process attempts to preserve the content. The top thing you should know is that we copy the content so it's still available to users, but it won't update any more. Because we copy the content URLs to items in content pack will change so you'll need to distribute new URL to anyone you shared those items to. There is no way to restore the content pack or the association of content to the content pack after you upgrade. If you are still using content packs read through the documentation which covers what happens in detail.
Can I move my organization entirely off classic workspaces?
The public preview allows upgrading individual workspace. It doesn't provide tools for bulk upgrade. New Office 365 Groups will continue to be listed as workspaces in Power BI. For organizations wanting to move their workspaces, the documentation offers some suggested approaches for doing so.
Can I go back to a classic workspace after the upgrade?
For 30 days after the upgrade, you can use the go back to classic workspace option to return to an Office 365 Group based workspace. When you do this, some aspects of your classic workspace won't be restored, like content packs. You'll want to learn more about going back to a classic workspace since there are a number of cases when you won't be able to go back.
Next Steps
Learn more about upgrading classic workspaces in Power BI
Learn more about the new workspace experience


text:
Last fall, we told you that The New Yorker artist Bob Staake does his cover illustration using Adobe Photoshop 3.0—yes, a version from 1995.
Now comes the tale of another New Yorker cover artist, taking an entirely different technological approach. For this week's edition, Jorge Colombo created the entire cover using the iPhone application Brushes.
Colombo no doubt used his incredible powers of reasoning and deduction to determine that the $5 he spent on the app were well worth it.
The magazine's art editor, Françoise Mouly, told The New York Times that "it doesn't feel like something that was done digitally," adding that the image was "poetic and magical."
You can scope the video below:


text:
Gland, Switzerland: An ever-growing dependence on fish means governments must understand that the current fisheries crisis is an issue of fundamental humanitarian importance. Strong management measures to achieve sustainable fisheries and eradicating unfair competition caused by illegal fishing or unfair exploitation contracts must be a priority on the policy agenda, WWF International reiterated today.
The global environment organisation's message comes after the release of the latest State of the World's Fisheries and Aquaculture report (SOFIA 2012) issued today in Rome by the UN Food and Agriculture Organization (FAO).
SOFIA 2012 estimates that in 2009, 57 per cent of marine fisheries are fully exploited, while 30 per cent of all assessed marine stocks are over-exploited. The report shows that fisheries- related employment supports the livelihoods of 10-12 per cent of the world's population (660-820 million people), with 4.3 billion people depending on fish to provide about 15 per cent of their animal derived protein.
"With such dependency on fish meeting a rapidly growing population, we simply cannot sustain a situation where 87 per cent of global marine fisheries are at or above full exploitation" said Alfred Schumm, Leader of WWF's global Smart Fishing Initiative. "Using the precautionary approach, a holistic suite of ecosystem- and science based measures must be adopted if we are to realise the clear economic, environmental and social benefits of sustainably managed fisheries" added Schumm.
Importantly, SOFIA 2012 also recognizes that controlling illegal, unreported and unregulated vessels is a burden gradually falling on coastal states, port states, regional fisheries bodies, and others entities.
"Nobody wants the efforts of the good players to be undermined by an ugly underbelly of illegal fishing. We urge countries to push for the ratification and implementation of essential tools to manage this, such as the Port State Measures Agreement and the Global Record of Fishing Vessels as well as we urge fisheries to implement satellite AIS and electronic observer tools on every fishing- and carrier-vessel" said Mr Schumm.
Finding Sustainable Solutions
A key challenge in moving fisheries to a sustainable path is finding solutions that are socially, economically and politically viable.
"The current fisheries crisis should be seen as an opportunity for change. As our fish stocks decrease at the same time as demand increases, it is vital we find innovative solutions that work for both people and nature" said Dr. Robin Davies, Deputy Leader of WWF's Smart Fishing Initiative.
WWF is currently aiming to realize the future economic value of recovered and sustainably managed fish stocks via the establishmen oft a Financial Institution for the Recovery of Marine Ecosystems (FIRME) which employs an investment model that finances conservation without adversely impacting livelihoods. According to the international conservation organization, FIRME could be one way to do this.


text:
Grupo Posadas Customer Story
Grupo Posadas reduces website cost of ownership by 40% with CIGNEX, Alfresco and Liferay
- Reduced Web site total cost of ownership (TCO) by 40 percent
- Increased revenue per available room rates
- Improved the online experience for potential customers
- Increased brand recognition
- Established real time content publishing
- Reduced content storage costs
- Improved the accuracy of portal search results
With the rise of popular internet-based travel sites and growing competition, Grupo Posadas, the largest Latin American hotel chain operator, was facing a number of new challenges. The company's revenue per available room rates were not growing as expected, guests were not able to effectively develop an emotional connection to its brands and the company could not easily promote online offers to its customers and partners. As a result, Posadas needed to re-examine its Web strategy for its eight hotel brands and 112 hotels.
Its existing J2EE and Documentum-based Web sites were cumbersome to manage, lacked appropriate workflows, and made updating site content difficult. Sites often contained duplicate content, took a long to time upload and returned inaccurate search results. In addition, managing multiple sites were becoming too costly to support.
Posadas needed to build a stronger online presence for customers that would provide an emotional connection to its brands and deliver content through multiple online channels including social media.
The company realized that its decentralized legacy Web strategy made it difficult to respond to evolving business practices and customer expectations. In order to provide a richer online experience, the company needed an integrated Web strategy based on open standards that would provide a flexible and cost effective internet architecture for years to come.
Posadas selected CIGNEX, a global leader in Enterprise Open Source Solutions and Platinum Partner to both Alfresco and Liferay, to build and implement an Integrated Content Management Portal (ICMP) leveraging the strengths of Alfresco Enterprise Content Management and Liferay 6, an open source portal and social collaboration solution. Posadas was impressed with CIGNEX expertise and proven track record successfully helping hundreds of companies worldwide implement Alfresco and Liferay technologies.
Within six months, CIGNEX successfully implemented Phase One of the Alfresco and Liferay ICMP which can now support over 2,000 users and 750 concurrent users. With the open, flexible architecture, CIGNEX can customize the company portals to fit its evolving business needs. CIGNEX also included robust security in each portal with data encryption, audit/compliance reporting and advancedaccess controls with secure access to legacy systems.
With Alfresco as the document management (DM) and Web content management (WCM) system, Posadas can easily create real time sales promotions on its Fiesta Americana, Live Aqua, Fiesta Americana Grand and Caesar Park Web sites as well as across partner sites. This allows the company to quickly respond to market demands and stay competitive.
Using Alfresco's content as a service platform, the Posadas content repository is accessible anywhere, anytime through a single point of access and control.
Employees have flexible editing options and can work offline, online or in update modes. CIGNEX created advanced workflows in Alfresco for all the Posadas brands creating uniformity and making it easier to manage portal content. More importantly, Alfresco and Liferay's support for social collaboration has allowed Posadas to integrate social media into its Web strategy incorporating blogs, Facebook, Twitter and LinkedIn. This provides a richer experience for users and allows customers to connect with the hotel brands in a new ways.
CIGNEX has completed the first phase of the Alfresco and Liferay implementation rolling out new portal sites across four of the eight hotel brands. Since the launch of the new portals, the company has seen its revenue per room rates increase. The new portals provide a personalized experience for potential guests and have been well received by online users.
For the Posadas marketing and Web team, the new portals are easier to manage and publish content to in multiple languages. No longer does it take days or weeks to roll out new promotions or content to the sites, Posadas' marketing team can create content, get it approved through built in workflows, test it and publish it in a matter of minutes. This allows Posadas to have a more interactive portal and respond quickly to changing customer behaviors.
In addition to improving the company's brand recognition, the new portal is extremely cost effective. Posadas has seen a 40 percent reduction in total cost of ownership with the new Alfresco and Liferay implementation from its previous legacy solution. With Alfresco and Liferay there are no upfront licensing costs and technology subscriptions include support, maintenance and upgrades making it an extremely cost effective alternative. Both technologies are developed on Java allowing the Posadas IT team to leverage its existing technical skills without the need to hire expensive platform experts. Providing further cost savings, the centralized repository has also reduced content storage costs.
Next Steps
CIGNEX is continuing to roll out Phase Two of the project across the remaining Posada hotel brands.


text:
Growth & Care
|USDA Plant Hardiness Zone
|Growth Rate
|Recommended Pruning Method
|Late Winter Pruning
|Fruit Tree Pollinator Requirement
|Foliage Type
|Fall Color
|Plant Form
|Upright Spreading
|Flower Period
|Flower Color
|Flower Fragrance
Additional Categories
|Additional Category
|Landscape Application
|Screening, Garden, Naturalizing, Orchard
Planting & Growing
Smokey Saskatoon will grow to be about 12 feet tall at maturity, with a spread of 8 feet. It tends to be a little leggy, with a typical clearance of 2 feet from the ground, and is suitable for planting under power lines. It grows at a medium rate, and under ideal conditions can be expected to live for approximately 25 years. This is a self-pollinating variety, so it doesn't require a second plant nearby to set fruit.
This shrub is quite ornamental as well as edible, and is as much at home in a landscape or flower garden as it is in a designated edibles garden. It does best in full sun to partial shade. It prefers to grow in average to moist conditions, and shouldn't be allowed to dry out. It is not particular as to soil type or pH. It is somewhat tolerant of urban pollution. This is a selection of a native North American species.
Features & Attributes
Smokey Saskatoon is bathed in stunning clusters of white flowers rising above the foliage from early to mid spring before the leaves. It has dark green deciduous foliage. The oval leaves turn an outstanding yellow in the fall. It features an abundance of magnificent blue berries in late spring.
This is a multi-stemmed deciduous shrub with an upright spreading habit of growth. Its relatively fine texture sets it apart from other landscape plants with less refined foliage. This is a relatively low maintenance plant, and is best pruned in late winter once the threat of extreme cold has passed. It is a good choice for attracting birds to your yard, but is not particularly attractive to deer who tend to leave it alone in favor of tastier treats. It has no significant negative characteristics.
Aside from its primary use as an edible, Smokey Saskatoon is sutiable for the following landscape applications:
Hedges/Screening, General Garden Use, Naturalizing And Woodland Gardens, Orchard/Edible Landscaping
Edible Qualities
Smokey Saskatoon is a large shrub that is typically grown for its edible qualities, although it does have ornamental merits as well. It produces small blue berries which are usually ready for picking from late spring to early summerfrom late spring to early summer. The berries have a sweet taste.
The berries are most often used in the following ways:
Fresh Eating, Cooking, Baking, Preserves


text:
The tire pressures specified for your vehicle are agreed between the vehicle manufacturer and the tire producer. The recommended tire pressures for your vehicle//tire combination can be found in your vehicle handbook, inside the fuel filler flap or on the driver's door post.
Tire pressure influences many important characteristics of the vehicle performance, such as: driving comfort, directional stability, cornering and braking grip, plus the general handling behaviour.
Driving with incorrect tire pressure will have a negative influence on one or more of these important characteristics.
Your tires must be inflated to the pressure specified by the vehicle and tire manufacturer. This normally varies depending on the load and service conditions.
The specified pressure always refers to the COLD tire and must not be allowed to fall below this value. The pressure inside warm tires will be higher due to the fact that driving causes heat build up. So never reduce the pressure inside warm tires. because when they have cooled down their pressure could fall to below the minimum tire pressure.
The tire pressure (including the spare if you have one) should be checked and adjusted every 14 days. Especially important is to check and adjust your tire pressures before going on a long journey or on holiday, where the additional load may require the tire pressures to be increased according to the specification.
Driving on overinflated tires will have a negative impact on:
Keep to the specified pressures recommended by the vehicle and tire manufacturer.
Driving on underinflated tires has a negative impact on:
SAFETY WARNING - Underinflation can lead to the inside of the tire being damaged. This can result in tire failure or even a blowout. Hidden tire damages are not rectified by adjusting the tire pressure.
A Tire Pressure Monitoring System (TPMS) must be installed in all new cars (category M1) from November 1st, 2014 onwards in Europe. The Tire Pressure Monitoring Systems can be based on different concepts and sensors. There are essentially 2 main types of TPMS system:
Direct systems - pressure sensors integrated with the valve or attached to the rim or inside of the tire.
Indirect systems - no pressure sensor fitted to the tire/rim. Pressure differences are measured "indirectly" via for example tire rolling circumference changes.
Car manufacturers may opt either for direct or for indirect systems.
Fitment and maintenance of TPMS systems should be left to the tire specialists.
Nitrogen is sometimes offered as an alternative to air for tire inflation.
Nitrogen is an inert (non-flammable) gas – basically, nothing more than dry air with oxygen removed.
Air contains about 78% nitrogen. Because of nitrogen's inert properties, it is often used in highly specialized tire service applications and/or demanding environments such as aircraft and mining applications. Nitrogen is also often used in motor racing.
For normal tire service applications, nitrogen tire inflation is not required. However, nitrogen tire inflation does not harm tires and may marginally contribute to reductions in tire inflation loss by permeation. Nevertheless, nitrogen will not prevent any tire inflation loss caused by punctures, tire/rim interface (bead) leaks, valve leaks, valve/rim interface leaks, wheel leaks, etc.
Whether inflated with air or nitrogen, regular tire inflation pressure maintenance remains critical and necessary. Use of nitrogen alone is not a replacement for regular tire inflation pressure maintenance.


text:
Well, this is some country down here. They raise cotton instead of wheat and hay. Had some cidar today but not like that in Tompkins County. On our way home now.
Found in "The Grapes of Wrath" by John Steinbeck. Published by The Viking Press, 1939.
-Click to enlarge photos-


text:
The 'Gem' books from publisher Collins(/HarperCollins) were tiny, pocket-sized compendiums of fascinating facts on child-friendly topics. Back in 1989, the printing presses spat out this fairly average little dinosaurs-and-all-that book, with text by Beverly Halstead and illustrations by Jenny Halstead. Both of which are quite bland, with a few eccentricities to liven things up. Much like my writing for Love in the Time of Chasmosaurs. A lot of the illustrations are clearly based on those by more established artists, notably Burian and Sibbick, as in the below illustration of swimming 'brontosaurs' (as B. Halstead insists on calling them).
Just some fat old sauropods paddling along. Wait a minute, those heads look a little peculiar...
Good grief.
Moving on, then. B. Halstead is quite insistent that all of the 'carnosaurs' were scavengers (with one notable exception, but we'll get to that) - not just Tyrannosaurus, but all of them. Specifically, Allosaurus and Megalosaurus are provided as examples of creatures that were "most likely not active hunters but rather scavengers", with the following evidence given:
"...the remains of a brontosaur's tail [have been found] with scratch marks made by the teeth of carnosaurs, together with some broken teeth. It is clear that a carnosaur was eating bits of meat off a brontosaur tail - a hunter would have been concerned with ripping open a dinosaur and wolfing down the entrails, not picking at what was left of the tail."The idea of a predator opportunistically scavenging being completely preposterous, of course. J. Halstead provides a skulking vision of Megalosaurus, Neave Parker-stylee.
As if the treatment of its Jurassic theropod kin wasn't cruel enough, Tyrannosaurus suffers the indignity of being described as a fat ol' farm animal with big teeth. Apparently, the terrifying tyrant reptile "waddled along just like a goose...at about 4kph (2.5mph)", presumably while taking tiny baby steps. B. Halstead also believes that teeth "just like steak knives" would only have been good for tackling "inert flesh". Because, well, have you ever used a steak knife on a live cow? EXACTLY. At least, judging by this illustration, the lazy bastard tyrannosaur had a pretty colour scheme going on.
Stop the presses, though, for there is at least one 'carnosaur' in this book that gets a favourable press. What's more, it had only recently been described when this Gem was published. That's right - it's the British spinosaur Baryonyx. Although B. Halstead notes that its narrow jaws and conical teeth had been interpreted as being similar to those of "fish-eating crocodilians", he considers the idea that such a large creature could have subsisted on fish as being nonsense. Rather, B. Halstead is keen on the idea that
"...the specialisation of the skull was so that they could thrust their heads into the body cavity to drag out the entrails - 'Claws' [a popular nickname for Baryonyx at the time] was...a specialised visceral feeder."You heard it here first. Probably. Even though it's in a book from 1989. In any case, we are subsequently treated to an unusually gory, graphic and grim depiction of Baryonyx ripping an Iguanodon corpse to bits. Happily, the popular ornithopod maintains its characteristic thumbs-up gesture, even while being feasted upon by specialised intestine scoffers.
Fortunately, B. Halstead has no eccentric opinions on Archaeopteryx - following the long-established consensus view that it evolved from other theropod dinosaurs. Unfortunately, J. Halstead opted to go for the 'stick-on fingers' look so favoured by artists who are apparently unaware of what a bird's skeleton looks like. I do like a blue Archaeopteryx, though...
...certainly much more than I like a beaked, distressed-looking Sordes. Apparently, pterosaurs shouldn't be classified as reptiles because they've been found to have had a furry covering. Good old fashioned paraphyletic taxonomy - donchaluvit?
The following image makes it probable that, at least on a few occasions, J. Halstead just couldn't be bothered. The poses match up quite well with the real fossils, but the dinosaurs themselves look...horrible. Nevertheless, I couldn't help but note the similarity of this Velociraptor to the one featured in Know the World of Dinosaurs. Could it be that one is merely a copy of t'other, or is it simply coincidence - a case of artistic laziness/tight deadlines/lack of advice from the 'consultant/s' convergently producing a similarly snub-nosed result? It's one to ponder, that.
And finally...Lystrosaurus just loves to be eaten. What does it care? It pretty much dominates the planet! Until next time...


text:
Recent Stories
1336 U Street, NW previously home to Newtown (and Tabaq before them) "Welcome to Hawthorne, a four-story bar and DJ-focused venue at the intersection of 14th & U Streets with…
Update: "We're sad to announce that Celebrate Petworth tomorrow has been cancelled." "September 23, 2023 // 11am-5pm on the 800 block of Upshur Street NW Celebrate Petworth is a free…
If you get a photo with any of your shirt/merch on your travels – please send a photo with where you went to my email at [email protected] thanks! Thanks to…
"Dear PoPville, George Washington University maintains the Community Counseling Service Center and is currently accepting new clients. This underutilized resource serves to make mental health access available to all who…
District Cutlery is celebrating their 10th and 11th anniversaries this week (we forgot last year) and offering customers 25% off all sharpening services. Walk-in service at Union Market is welcome or you can make arrangements for mail-in service on their website. Typical turn-around is less than an hour (but sometimes the queue gets long).
DMV's professional chefs and passionate home cooks have trusted the District Cutlery with their knives for over 10 years. You can see pictures of their work @districtcutlery Instagram. They also specialize in sharpening styling shears, scissors and smaller garden tools and axes.
Girls in Gear is a Non-Profit that teaches girls age 5+ life skills through bike skills. We aim to get your girl to fall in love with herself, her friends, and her bike! Registration is open across the DMV for our eight-week program that starts the weekend of September 23rd. Programming runs for 90 minutes once a week on a weekend morning.
All abilities of riders – balance bikes, training wheels, two wheels, road-bike pros and everything in between – are welcome. We are non-competitive and focus on having fun no matter what your level of riding is. We pride ourselves in being a low-cost program and also have a no-questions-asked scholarship policy that includes bikes and helmets if needed.
DMV Sites Fall 2023:
Fall Collection Celebration
LiLi The First FALL COLLECTION is so grand and exceptional, they needed two days to celebrate it.
Saturday – OPEN HOUSE, cookies and cocktails with newly arrived collections from Paris, Tokyo, Turin, Tel-Aviv and NY.
Sunday – MEET THE DESIGNER,
'the feels': an IRL evening for singles
'the feels' is the best dating event you've not yet tried. Formulated in partnership with Columbia University, the format fuses mindfulness + your body's somatic intelligence. Research done in partnership with Columbia shows they're 2x more effective than a typical


text:
How to Choose Couch
Buying furniture may seem like an easy task, but once you get into the process, you'll soon realize that it's not as easy as you think. This is especially true when buying a sofa. Most likely the biggest furniture in your living room, so you have to choose it carefully. There are a few steps you need to follow and make sure you work with the right home furnishings store in Atlanta.
How to Choose Couch
Size is the first thing you should consider because it affects every other option. You need to think about your space and where the sofa will go into your home. Measure to ensure you get accurate details. Also, think about usage. For example, if you know there are usually three people sitting on a coach at a time, you need a good sized sofa. Is there a nap on the couch? It can also affect your size choices.
Next, note the material sofa. Like its size, material choices will affect other choices you have. You may want to visit the home furniture store in Atlanta to see better material choices and consider what you want. Also, do an online investigation to see what others are saying about different materials. Some may be easier to clean than others or last longer than others. This is a good thing to know.
Colors or Patterns
Finally, you need to consider the color or pattern of the sofa. This is usually limited by your choice of sizes and other materials, so you might not be too difficult choosing colors. In addition, you put in a room that already has decoration and style, so you have to match it with it.
Feature option
Once you decide on the sofa you want, you can consider any additional features, such as built in a recliner or a large choice. You can also consider waterproofing or get other special things done to treat the fabric or the surface.


text:
You know what I hate? Audible character heartbeats in games. I can't deal with that. It's too stressful. I start breathing harder and I start to feel my own blood rushing as I start pondering the possibility that somehow—despite all logic—I'm about to suffer a heart attack. I mean, listen to my heart (which is now also audible!) go, feel that chest tighten! Ugh.
Okay. At that point I need to stop and regroup. Breathe, Patricia. You're not going to have a heart attack, idiot. Really. Usually, this retreat takes place outside of the game—I put my headphones down, close my eyes for a bit. I try to calm down and relax before I tackle the game again.
Usually, I don't think feeling like this is worth it and will just quit a game right then and there. But today I played the demo of Fibrillation, an experimental indie horror game, and things felt different. That's because the game has a mechanic that I'm surprised I haven't seen in a game before, especially a horror game: the ability to close your eyes. Yes, in-game.
Eventually I found myself clicking the "blink" button just so that it seemed like my character was blinking all the time, too.
Closing your eyes isn't the most ideal way to deal with a situation, but having it there added to the atmosphere. There was my character, trying to make out pathways in dark hallways and creepy rooms, suddenly there's this random apparition and you know what? Maybe that thing in the corner of my eyes wasn't actually there. Maybe my character needs a short break, or maybe this isn't real and I just need to close my eyes for a bit to realize that. Closing my eyes helped me feel like I was more in-tune with the character.
Eventually I found myself clicking the "blink" button just so that it seemed like my character was blinking all the time. There's no way he's breathing as hard as he is without having his eyes go a little erratic. But more importantly, having the option meant that I didn't have to pause the game and do it myself: I could close my eyes in-game and just take a breather that way.
The funny thing is, the more I did it, the more it felt like my character's heartbeat calmed down—even though it's entirely possible that the heartbeat audio didn't let up or become softer. What mitigates fear is often psychological like that.
I could see this working in other games. A lot of horror games like to use situations where you're managing something—like opening a lock or foraging your bag for supplies—while a threat looms. If you had to close your eyes so that your character could calm down before moving forward even though something was about to get you, now that'd be compelling. You'd have to be brave and keep collected even though you can't see what's happening around you: not an easy feat!
I didn't get far enough in Fibrillation to see if it pulled something like that. I got lost in this big warehouse and things got kind of claustrophobic in there. My cowardly, wussy self gave up. Those of you who are the courageous type can find the game here, if not vote for it on Steam Greenlight here.


text:
Build a repository of reputation data to determine threat levels for file hashes.
- Getting started with Reputation
Get started with Reputation
- Overview
Understand terminology, how to manage reputation data, and how Reputation integrates with other Tanium solutions
- Requirements
Review the system and product requirements, required configurations, and user role configurations
- Configuring sources
Configure reputation sources
- Exporting data
Export reputation data
- Release notes
Get a list of changes for each Reputation release
- Community
Read articles written by Tanium subject-matter experts on Reputation best practices
This documentation may provide access to or information about content, products (including hardware and software), and services provided by third parties ("Third Party Items"). With respect to such Third Party Items, Tanium Inc. and its affiliates (i) are not responsible for such items, and expressly disclaim all warranties and liability of any kind related to such Third Party Items and (ii) will not be responsible for any loss, costs, or damages incurred due to your access to or use of such Third Party Items unless expressly set forth otherwise in an applicable agreement between you and Tanium.
Further, this documentation does not require or contemplate the use of or combination with Tanium products with any particular Third Party Items and neither Tanium nor its affiliates shall have any responsibility for any infringement of intellectual property rights caused by any such combination. You, and not Tanium, are responsible for determining that any combination of Third Party Items with Tanium products is appropriate and will not cause infringement of any third party intellectual property rights.
Tanium is committed to the highest accessibility standards to make interaction with Tanium software more intuitive and to accelerate the time to success. For more information, see Tanium Product Accessibility.
Last updated: 10/3/2023 3:50 PM | Feedback


text:
In just a couple of hours, I'm heading off to Berlin for IFA 2013, where the latest electronics announcements are served up amid the dulcet tones of oompah bands and accompanied by visions of frauleins hoisting overflowing beer steins. I'll be posting more from the road in the coming days, but in the meantime, let's see what you've all had to say in the last few weeks.
First up: Opposing views on Snowden continue to roll in from all sides.
[ For a humorous take on the tech industry's shenanigans, subscribe to Robert X. Cringely's Notes from the Underground newsletter and follow Cringely on Twitter. | For a quick, smart take on the news you'll be talking about, check out InfoWorld TechBrief -- subscribe today. ]
In "Edward Snowden, Bradley Manning, and the war on whistleblowers," I agreed with the increasingly common notion that our government is, well, waging a war on whistleblowers, to our nation's detriment.
As usual, frequent correspondent T. M. B. disagrees with me in the strongest (and longest) terms possible.
Sorry, I can't agree with your contention that there is a War on Whistleblowers. If Snowden wanted to tell the world that classified employees can get access to things they aren't supposed to, that's one thing. For years government agencies have assumed that people wouldn't peek into areas that aren't their concern, and for the most part they were right. My job is too important to me to jeopardize it just because I'm curious about what the Prez had for breakfast. Snowden represents a new breed - people who think that it's their supervisor's responsibility to stop them from accessing what they shouldn't, rather than a question of personal integrity and honor.
On the flip side, reader M. W. argues:
No, Snowden is not a traitor. He released information that was considered 'classified', but if he did not reveal the information, would anyone else? How many other security personnel have seen the same terrifying information, but have chosen to disregard it. I believe that I heard that there are over 800,000 contract security personnel that have the high security clearance. And no one considers that an issue? I give Snowden a big attaboy for his disclosure of NSA criminal activity, no matter what his reasons were. It is time that Americans stand up for liberty and freedom, or there will be chaos to follow. If the feds are out of line, they need to be prosecuted. Make an example of them.
I don't think we'll ever reach a consensus on this one. But it's still more interesting to talk about than whether the next iPhone will come with a gold cover.
In "See you, Steve: 5 could-be, would-be Ballmers to consider," I suggested a few possible candidates for replacing The Mad Ballmer as el jefe at Microsoft, then opened the floor for nominees to the Cringe faithful.
I got one vote for Scott Forstall, the senior VP who was unceremoniously booted from Apple Inc. last October. That suggestion came from a "M. W." using a .me email address. (Scott, was that really you? Come on, fess up.)