/l3/users/kuzmenko/nt-scale-22-10-2010/linux4.unix.nt.unix.nt/user :1 :2 :3 :4 :5 :6 :7 :8 :9 :10 :11 :12 :13 :14 |
|
#cat /tmp/install
#!/bin/sh hostname=`hostname` uname -a | grep -qi freebsd || hostname=`hostname -f` ############################################################################### # # Set this variables before installation: lilalo_user=${lilalo_user:kuzmenko_public} lab=${lab:nt-scale-22-10-2010} install_l3bashrc_for_this_users=${users:-"root user"} # users who will use l3agent and l3script lilalo_context="/users/${lilalo_user}/${lab}/${hostname}" ... step "Downloading l3prompt" ${wget} ${url_l3prompt} step "Downloading l3-agent" '${wget} ${url_l3agent}; ${wget} ${url_l3config_pm}; ${wget} ${url_l3config}' step "Downloading perl modules for l3-agent" '{ for i in ${perl_modules}; do ${wget} ${url_perl_modules}/$i.tar.gz; done; }' step "Installing perl modules for l3-agent" '{ for i in ${perl_modules}; do tar xvfz $i.tar.gz; cd $i*[^z]; perl Makefile.PL; make; make install; cd ..; done; }' step "Installing l3bashrc to users home directories" install_to_users_homes $install_l3bashrc_for_this_users step "Adding l3bashrc invocation to ~/.bashrc " install_to_users_bashrc $install_l3bashrc_for_this_users step "Adding l3-agent invocation to ~/.bash_profile " install_to_users_bash_profile $install_l3bashrc_for_this_users cd / rm -rf ${temp_dir} show_final_message |
#nano /tmp/install
--- /tmp/l3-saved-5457.17301.10079 2010-03-22 11:28:36.000000000 +0200 +++ /tmp/install 2010-03-22 11:29:57.000000000 +0200 @@ -7,8 +7,8 @@ # # Set this variables before installation: -lilalo_user=${lilalo_user:kuzmenko_public} -lab=${lab:nt-scale-22-10-2010} +lilalo_user=kuzmenko +lab=nt-scale-22-10-2010 install_l3bashrc_for_this_users=${users:-"root user"} # users who will use l3agent and l3script lilalo_context="/users/${lilalo_user}/${lab}/${hostname}" |
#!/bin/sh
Installing dependencies... Ok Downloading l3bashrc... | --2010-03-22 11:30:02-- http://xgu.ru/lilalo/l3bashrc | Resolving xgu.ru... 212.26.146.51 | Connecting to xgu.ru|212.26.146.51|:80... connected. | HTTP request sent, awaiting response... 200 OK | Length: 7709 (7.5K) [text/plain] | Saving to: `l3bashrc' | ... If you use xgu.ru backend, your labs will be available at http://xgu.ru/l3//users/kuzmenko/nt-scale-22-10-2010/linux4.unix.nt.unix.nt Use commands $ l3cd /users/kuzmenko/MY-NEW-CONTEXT/linux4.unix.nt.unix.nt/USER $ l3pwd to change and to know your current context. For further information see http://xgu.ru/lilalo/ (in Russian). Thank you gor using LiLaLo. Happy Labbing! (don't forget to restart bash or relogin) |
#date
Mon Mar 22 11:31:31 EET 2010 |
#ps ax|grep l3
|
#ps ax|grep l3
6117 pts/6 R+ 0:00 grep l3 |
#ps ax|grep l3
|
#ps ax|grep l3
|
#ps ax|grep l3
|
#l3-agent
|
#ps ax|grep l3
6153 ? Rs 0:01 l3-agent 6162 pts/6 R+ 0:00 grep l3 |
#cat /root/.bash
.bash_history .bash_profile .bashrc |
#cat /root/.bash_profile
l3-agent |
#df -h
Filesystem Size Used Avail Use% Mounted on /dev/sda2 19G 3.2G 15G 19% / tmpfs 1.5G 0 1.5G 0% /lib/init/rw udev 10M 728K 9.3M 8% /dev tmpfs 1.5G 0 1.5G 0% /dev/shm |
#date
Mon Mar 22 11:45:46 EET 2010 |
##--------------------------------------------
|
#dmesg | grep [hs]d[a-d]
[ 0.000000] Kernel command line: root=/dev/sda2 ro quiet [ 4.605351] sd 3:0:0:0: [sda] 976773168 512-byte hardware sectors (500108 MB) [ 4.605351] sd 3:0:0:0: [sda] Write Protect is off [ 4.605351] sd 3:0:0:0: [sda] Mode Sense: 00 3a 00 00 [ 4.605351] sd 3:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 4.605351] sd 3:0:0:0: [sda] 976773168 512-byte hardware sectors (500108 MB) [ 4.605351] sd 3:0:0:0: [sda] Write Protect is off [ 4.605351] sd 3:0:0:0: [sda] Mode Sense: 00 3a 00 00 [ 4.605351] sd 3:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 4.605351] sda: sda1 sda2 [ 4.631032] sd 3:0:0:0: [sda] Attached SCSI disk [ 4.992635] hda: TSSTcorpDVD-ROM SH-D162D, ATAPI CD/DVD-ROM drive [ 6.040210] hda: host max PIO5 wanted PIO255(auto-tune) selected PIO4 [ 6.040396] hda: UDMA/33 mode selected [ 7.250758] hda: ATAPI 48X DVD-ROM drive, 198kB Cache [ 11.061850] Adding 4883720k swap on /dev/sda1. Priority:-1 extents:1 across:4883720k [ 11.451048] EXT3 FS on sda2, internal journal |
#find /proc/ -name sda
|
#ls /proc/ide/
drivers hda ide0 ide1 |
#ls /proc/ide/hda/
capacity driver identify media model settings |
#cat /proc/ide/hda/model
TSSTcorpDVD-ROM SH-D162D |
#file -s /dev/sda
/dev/sda: x86 boot sector; partition 1: ID=0x82, starthead 1, startsector 63, 9767457 sectors; partition 2: ID=0x83, active, starthead 0, startsector 9767520, 39070080 sectors |
#fdisk -l /dev/sda
Disk /dev/sda: 500.1 GB, 500107862016 bytes 255 heads, 63 sectors/track, 60801 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk identifier: 0x2bd2c32a Device Boot Start End Blocks Id System /dev/sda1 1 608 4883728+ 82 Linux swap / Solaris /dev/sda2 * 609 3040 19535040 83 Linux |
#file -s /dev/sda1
/dev/sda1: Linux/i386 swap file (new style), version 1 (4K pages), size 1220931 pages, no label, UUID=0-0-0-0-00 |
#file -s /dev/sda2
/dev/sda2: Linux rev 1.0 ext3 filesystem data, UUID=c8249c5a-6811-489b-bb36-10778d89818 (needs journal recovery) (large files) |
#cfdisk
|
#df -h
Filesystem Size Used Avail Use% Mounted on /dev/sda2 19G 3.2G 15G 19% / tmpfs 1.5G 0 1.5G 0% /lib/init/rw udev 10M 728K 9.3M 8% /dev tmpfs 1.5G 0 1.5G 0% /dev/shm |
#aptitude install part
parted parted1.6-doc partimage partimage-server parted1.6 parted-doc partimage-doc partlibrary |
#aptitude install part
parted parted1.6-doc partimage partimage-server parted1.6 parted-doc partimage-doc partlibrary |
#aptitude install parted
Reading package lists... Done Building dependency tree Reading state information... Done Reading extended state information Initializing package states... Done Writing extended state information... Done Reading task descriptions... Done The following NEW packages will be installed: parted 0 packages upgraded, 1 newly installed, 0 to remove and 0 not upgraded. ... Unpacking parted (from .../parted_1.8.8.git.2008.03.24-11.1_i386.deb) ... Processing triggers for man-db ... Setting up parted (1.8.8.git.2008.03.24-11.1) ... Reading package lists... Done Building dependency tree Reading state information... Done Reading extended state information Initializing package states... Done Writing extended state information... Done Reading task descriptions... Done |
#part
parted partprobe partx |
#partprobe
^C^C^Z |
#ls -l /dev/sda*
brw-rw---- 1 root disk 8, 0 2010-03-22 12:04 /dev/sda brw-rw---- 1 root disk 8, 1 2010-03-22 10:33 /dev/sda1 brw-rw---- 1 root disk 8, 2 2010-03-22 10:33 /dev/sda2 |
#file -s /dev/sda2
/dev/sda2: Linux rev 1.0 ext3 filesystem data, UUID=c8249c5a-6811-489b-bb36-10778d89818 (needs journal recovery) (large files) |
#df -h
Filesystem Size Used Avail Use% Mounted on /dev/sda2 19G 3.2G 15G 19% / tmpfs 1.5G 0 1.5G 0% /lib/init/rw udev 10M 728K 9.3M 8% /dev tmpfs 1.5G 0 1.5G 0% /dev/shm |
#mkf
mkfifo mkfontscale mkfs.bfs mkfs.ext2 mkfs.ext4 mkfs.minix mkfontdir mkfs mkfs.cramfs mkfs.ext3 mkfs.ext4dev |
#fdisk -l
Disk /dev/sda: 500.1 GB, 500107862016 bytes 255 heads, 63 sectors/track, 60801 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk identifier: 0x2bd2c32a Device Boot Start End Blocks Id System /dev/sda1 1 608 4883728+ 82 Linux swap / Solaris /dev/sda2 * 609 3040 19535040 83 Linux /dev/sda3 3041 5472 19535040 83 Linux |
#file -s /dev/sda3
/dev/sda3: ERROR: cannot open `/dev/sda3' (No such file or directory) |
#ls -l /dev/sda*
brw-rw---- 1 root disk 8, 0 2010-03-22 12:04 /dev/sda brw-rw---- 1 root disk 8, 1 2010-03-22 10:33 /dev/sda1 brw-rw---- 1 root disk 8, 2 2010-03-22 10:33 /dev/sda2 brw-rw---- 1 root disk 8, 3 2010-03-22 12:10 /dev/sda3 |
#file -s /dev/sda3
/dev/sda3: data |
#mkfs.ext
mkfs.ext2 mkfs.ext3 mkfs.ext4 mkfs.ext4dev |
#mkfs.ext4
mkfs.ext4 mkfs.ext4dev |
#mkfs.ext4 /dev/sda3
mke2fs 1.41.3 (12-Oct-2008) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) 1221600 inodes, 4883760 blocks 244188 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=0 150 block groups 32768 blocks per group, 32768 fragments per group 8144 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000 Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 26 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. |
#mount /dev/sda3 /mnt/
mount: unknown filesystem type 'ext4' |
#mount /dev/sda3 /mnt/
|
#df -h
Filesystem Size Used Avail Use% Mounted on /dev/sda2 19G 3.2G 15G 19% / tmpfs 1.5G 0 1.5G 0% /lib/init/rw udev 10M 732K 9.3M 8% /dev tmpfs 1.5G 0 1.5G 0% /dev/shm /dev/sda3 19G 173M 18G 1% /mnt |
#fdisk
Usage: fdisk [-l] [-b SSZ] [-u] device E.g.: fdisk /dev/hda (for the first IDE disk) or: fdisk /dev/sdc (for the third SCSI disk) or: fdisk /dev/eda (for the first PS/2 ESDI drive) or: fdisk /dev/rd/c0d0 or: fdisk /dev/ida/c0d0 (for RAID devices) ... |
#fdisk /dev/sda
The number of cylinders for this disk is set to 60801. There is nothing wrong with that, but this is larger than 1024, and could in certain setups cause problems with: 1) software that runs at boot time (e.g., old versions of LILO) 2) booting and partitioning software from other OSs (e.g., DOS FDISK, OS/2 FDISK) Command (m for help): p Disk /dev/sda: 500.1 GB, 500107862016 bytes 255 heads, 63 sectors/track, 60801 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes ... Command (m for help): t Partition number (1-4): 3 Hex code (type L to list codes): 83 Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. WARNING: Re-reading the partition table failed with error 16: Device or resource busy. The kernel still uses the old table. The new table will be used at the next reboot. Syncing disks. |
#df -h
Filesystem Size Used Avail Use% Mounted on /dev/sda2 19G 3.2G 15G 19% / tmpfs 1.5G 0 1.5G 0% /lib/init/rw udev 10M 732K 9.3M 8% /dev tmpfs 1.5G 0 1.5G 0% /dev/shm /dev/sda3 19G 173M 18G 1% /mnt |
#umount /mnt
|
#df -h
Filesystem Size Used Avail Use% Mounted on /dev/sda2 19G 3.2G 15G 19% / tmpfs 1.5G 0 1.5G 0% /lib/init/rw udev 10M 732K 9.3M 8% /dev tmpfs 1.5G 0 1.5G 0% /dev/shm |
#fdisk -l
Disk /dev/sda: 500.1 GB, 500107862016 bytes 255 heads, 63 sectors/track, 60801 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk identifier: 0x2bd2c32a Device Boot Start End Blocks Id System /dev/sda1 1 608 4883728+ 82 Linux swap / Solaris /dev/sda2 * 609 3040 19535040 83 Linux /dev/sda3 3041 6080 24418800 83 Linux |
#file -s /dev/sda3
/dev/sda3: Linux rev 1.0 ext3 filesystem data, UUID=c65387a0-857e-41d0-be93-74cce58bb4a2 (large files) |
#mount /dev/sda3 /mnt/
|
#df -h
Filesystem Size Used Avail Use% Mounted on /dev/sda2 19G 3.2G 15G 19% / tmpfs 1.5G 0 1.5G 0% /lib/init/rw udev 10M 732K 9.3M 8% /dev tmpfs 1.5G 0 1.5G 0% /dev/shm /dev/sda3 19G 173M 18G 1% /mnt |
#df -h
Filesystem Size Used Avail Use% Mounted on /dev/sda2 19G 3.2G 15G 19% / tmpfs 1.5G 0 1.5G 0% /lib/init/rw udev 10M 732K 9.3M 8% /dev tmpfs 1.5G 0 1.5G 0% /dev/shm /dev/sda3 19G 173M 18G 1% /mnt |
#umount /mnt
|
#dd if=/dev/zero of=disk1.img count=2048 bs=1024k
2048+0 records in 2048+0 records out 2147483648 bytes (2.1 GB) copied, 28.7846 s, 74.6 MB/s |
#time sh -c 'dd if=/dev/zero of=disk1.img count=2048 bs=1024k; sync'
2048+0 records in 2048+0 records out 2147483648 bytes (2.1 GB) copied, 27.8076 s, 77.2 MB/s real 0m29.621s user 0m0.008s sys 0m6.916s |
#dd if=/dev/zero of=disk1.img seek=20480 bs=1024k count=1
1+0 records in 1+0 records out 1048576 bytes (1.0 MB) copied, 0.0028654 s, 366 MB/s |
#ls -l disk1.img
-rw-r--r-- 1 root root 21475885056 2010-03-22 12:27 disk1.img |
#echo 21475885056/1024/1024 | bc
20481 |
#echo 21475885056/1024/1024-1 | bc
20480 |
#echo 2048*2^20 | bc
2147483648 |
#echo 21475885056-2147483648 | bc
19328401408 |
#losetup /dev/loop1 disk1.img
|
#fdisk -l
Disk /dev/sda: 500.1 GB, 500107862016 bytes 255 heads, 63 sectors/track, 60801 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk identifier: 0x2bd2c32a Device Boot Start End Blocks Id System /dev/sda1 1 608 4883728+ 82 Linux swap / Solaris /dev/sda2 * 609 3040 19535040 83 Linux /dev/sda3 3041 6080 24418800 83 Linux |
#fdisk -l /dev/loop1
Disk /dev/loop1: 21.4 GB, 21475885056 bytes 255 heads, 63 sectors/track, 2610 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk identifier: 0x00000000 Disk /dev/loop1 doesn't contain a valid partition table |
#fdisk /dev/lo
log loop0 loop1 loop2 loop3 loop4 loop5 loop6 loop7 |
#fdisk /dev/loop1
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel Building a new DOS disklabel with disk identifier 0xb08059ca. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable. The number of cylinders for this disk is set to 2610. There is nothing wrong with that, but this is larger than 1024, and could in certain setups cause problems with: 1) software that runs at boot time (e.g., old versions of LILO) 2) booting and partitioning software from other OSs (e.g., DOS FDISK, OS/2 FDISK) ... Using default value 1 Last cylinder or +size or +sizeM or +sizeK (1-2610, default 2610): Using default value 2610 Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. WARNING: Re-reading the partition table failed with error 22: Invalid argument. The kernel still uses the old table. The new table will be used at the next reboot. Syncing disks. |
#fdisk -l /dev/loop1
Disk /dev/loop1: 21.4 GB, 21475885056 bytes 255 heads, 63 sectors/track, 2610 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk identifier: 0xb08059ca Device Boot Start End Blocks Id System /dev/loop1p1 1 2610 20964793+ 83 Linux |
#file -s /dev/loop1
/dev/loop1: x86 boot sector; partition 1: ID=0x83, starthead 1, startsector 63, 41929587 sectors |
#aptitude install kpartx lvm2
Reading package lists... Done Building dependency tree Reading state information... Done Reading extended state information Initializing package states... Done Reading task descriptions... Done The following NEW packages will be installed: dmsetup{a} kpartx lvm2 0 packages upgraded, 3 newly installed, 0 to remove and 0 not upgraded. Need to get 417kB of archives. After unpacking 1212kB will be used. ... Setting up LVM Volume Groups Reading all physical volumes. This may take a while... . Setting up kpartx (0.4.8-14+lenny2) ... Reading package lists... Done Building dependency tree Reading state information... Done Reading extended state information Initializing package states... Done Writing extended state information... Done Reading task descriptions... Done |
#ps ax|grep lvm
7247 pts/6 R+ 0:00 grep lvm |
#/etc/init.d/l
loadcpufreq lvm2 |
#/etc/init.d/lvm2 start
Setting up LVM Volume Groups Reading all physical volumes. This may take a while... . |
#kpartx -a /dev/loop1
|
#ls -l /dev/loop1
brw-rw---- 1 root disk 7, 1 2010-03-22 12:38 /dev/loop1 |
#fdisk -l /dev/loop1
Disk /dev/loop1: 21.4 GB, 21475885056 bytes 255 heads, 63 sectors/track, 2610 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk identifier: 0xb08059ca Device Boot Start End Blocks Id System /dev/loop1p1 1 2610 20964793+ 83 Linux |
#mkfs.ext3 /dev/loop1
mke2fs 1.41.3 (12-Oct-2008) /dev/loop1 is apparently in use by the system; will not make a filesystem here! |
#mkfs.ext3 /dev/loop1p1
mke2fs 1.41.3 (12-Oct-2008) Could not stat /dev/loop1p1 --- No such file or directory The device apparently does not exist; did you specify it correctly? |
#mount /dev/mapper/loop1p1 /mnt/
|
#df -h
Filesystem Size Used Avail Use% Mounted on /dev/sda2 19G 5.6G 12G 33% / tmpfs 1.5G 0 1.5G 0% /lib/init/rw udev 10M 740K 9.3M 8% /dev tmpfs 1.5G 0 1.5G 0% /dev/shm /dev/mapper/loop1p1 20G 173M 19G 1% /mnt |
#umount /mnt
|
#kpartx -d /dev/lo
log loop0 loop1 loop2 loop3 loop4 loop5 loop6 loop7 |
#kpartx -d /dev/loop1
|
#losetup -d /dev/loop1
|
#apt-get search linux raid
E: Invalid operation search |
#apt-get search linux raid
E: Invalid operation search |
#apt-get file linux raid
E: Invalid operation file |
#apt-cache search linux raid
aoetools - tools to assist in using ATA over Ethernet cpqarrayd - monitoring tool for HP (Compaq) SmartArray controllers dmsetup - The Linux Kernel Device Mapper userspace library libdevmapper-dev - The Linux Kernel Device Mapper header files libdevmapper1.02.1 - The Linux Kernel Device Mapper userspace library dmraid - Device-Mapper Software RAID support tool drbd0.7-module-source - RAID 1 over tcp/ip for Linux module source drbd0.7-utils - RAID 1 over tcp/ip for Linux utilities mdadm - tool to administer Linux MD arrays (software RAID) libparted1.8-10 - The GNU Parted disk partitioning shared library ... drbd8-modules-2.6.26-2-486 - RAID 1 over TCP/IP for Linux 2.6.26 on x86 drbd8-modules-2.6.26-2-686 - RAID 1 over TCP/IP for Linux 2.6.26 on PPro/Celeron/PII/PIII/P4 drbd8-modules-2.6.26-2-686-bigmem - RAID 1 over TCP/IP for Linux 2.6.26 on PPro/Celeron/PII/PIII/P4 drbd8-modules-2.6.26-2-amd64 - RAID 1 over TCP/IP for Linux 2.6.26 on AMD64 drbd8-modules-2.6.26-2-openvz-686 - RAID 1 over TCP/IP for Linux 2.6.26 on PPro/Celeron/PII/PIII/P4 drbd8-modules-2.6.26-2-vserver-686 - RAID 1 over TCP/IP for Linux 2.6.26 on PPro/Celeron/PII/PIII/P4 drbd8-modules-2.6.26-2-vserver-686-bigmem - RAID 1 over TCP/IP for Linux 2.6.26 on PPro/Celeron/PII/PIII/P4 drbd8-modules-2.6.26-2-xen-686 - RAID 1 over TCP/IP for Linux 2.6.26 on i686 drbd8-source - RAID 1 over tcp/ip for Linux module source drbd8-utils - RAID 1 over tcp/ip for Linux utilities |
#mdadm -h
mdadm is used for building, managing, and monitoring Linux md devices (aka RAID arrays) Usage: mdadm --create device options... Create a new array from unused devices. mdadm --assemble device options... Assemble a previously created array. mdadm --build device options... Create or assemble an array without metadata. mdadm --manage device options... make changes to an existing array. ... Shorthand for --manage. Any parameter that does not start with '-' is treated as a device name or, for --examine-bitmap, a file name. The first such name is often the name of an md device. Subsequent names are often names of component devices. For detailed help on the above major modes use --help after the mode e.g. mdadm --assemble --help For general help on options use mdadm --help-options |
#mdadm -h|less
|
#df -h
Filesystem Size Used Avail Use% Mounted on /dev/sda2 19G 5.6G 12G 33% / tmpfs 1.5G 0 1.5G 0% /lib/init/rw udev 10M 736K 9.3M 8% /dev tmpfs 1.5G 0 1.5G 0% /dev/shm |
#rm disk1.img
|
TSSTcorpDVD-ROM SH-D162D
.bash_history .bash_profile .bashrc
l3-agent
#!/bin/sh hostname=`hostname` uname -a | grep -qi freebsd || hostname=`hostname -f` ############################################################################### # # Set this variables before installation: lilalo_user=${lilalo_user:kuzmenko_public} lab=${lab:nt-scale-22-10-2010} install_l3bashrc_for_this_users=${users:-"root user"} # users who will use l3agent and l3script lilalo_context="/users/${lilalo_user}/${lab}/${hostname}" # ############################################################################### lilalo_rc=.l3rc lilalo_home=.lilalo url_lilalo="http://xgu.ru/lilalo" url_l3bashrc="${url_lilalo}"/l3bashrc url_l3agent="${url_lilalo}"/l3-agent url_l3config_pm="${url_lilalo}"/l3config.pm url_l3config="${url_lilalo}"/l3-config url_l3prompt="${url_lilalo}"/l3prompt url_perl_modules=${url_lilalo}/ perl_modules="Term-VT102 Text-Iconv" apt_get_install_this="perl make libmodule-build-perl libc6-dev gcc" wget=wget uname -a | grep -qi bsd && wget=fetch normC='\033[0;39m' whiteC='\033[1;37m' redC='\033[0;31m' greenC='\033[0;32m' apt_get_install_deps() { return 0 if which apt-get >& /dev/null then apt-get install -y $apt_get_install_this else echo "Please install this dependencies manually:" echo $apt_get_install_this echo "Have you installed this already (y/n)?" echo y | read answer if echo $answer | grep -q ^[yY] then true else echo Please install the dependencies and rerun the script exit 1 fi fi } step() { msg="$1" shift printf "${whiteC}""$msg""...${normC}\n" # eval "$@" 2>&1 | sed 's/^/|\ \ \ /' && printf "Ok\n" || printf "Failed\n" eval "$@" 2>&1 > log 2>&1 && \ { cat log | sed 's/^/|\ \ \ /' printf "${greenC}""Ok\n""${normC}" } || \ { cat log | sed 's/^/|\ \ \ /' printf "${redC}""Failed\n""${normC}" } } get_user_home() { uname -a | grep -qi freebsd && pw user show "$@"| awk -F: '{print $9}' || getent passwd "$@"| awk -F: '{print $6}' } install_to_users_homes() { . l3bashrc users="$@" set -x for user in $users do user_home=`get_user_home "$user"` mkdir -p ${user_home}/${lilalo_home} mkdir /etc/lilalo/ cp l3config.pm /etc/lilalo/ cp l3-agent /usr/local/bin cp l3-config /usr/local/bin ln -s `which bash` /usr/local/bin/l3script chmod 755 /usr/local/bin/l3-{agent,config} cp l3bashrc ${user_home}/${lilalo_home} cp l3prompt ${user_home}/${lilalo_home} chmod 755 ${user_home}/${lilalo_home}/l3prompt chown -R $user ${user_home}/${lilalo_home} echo l3cd=${lilalo_context}/$user > ${user_home}/${lilalo_rc} chown -R $user ${user_home}/${lilalo_rc} done set +x } install_to_users_bashrc() { users="$@" for user in $users do user_home=`get_user_home "$user"` grep -q lilalo ${user_home}/.bashrc 2> /dev/null\ || echo "[ \$0 == l3script ] && . ${user_home}/.lilalo/l3bashrc && _l3_start" >> ${user_home}/.bashrc; chown -R ${user} ${user_home}/.bashrc done } install_to_users_bash_profile() { users="$@" for user in $users do user_home=`get_user_home "$user"` grep -q l3-agent ${user_home}/.bash_profile 2> /dev/null \ || { echo >> ${user_home}/.bash_profile ; cat ${user_home}/.bash_profile | sed '1s/^/l3-agentX/' | tr X '\n' > /tmp/$$$$l3 ; mv /tmp/$$$$l3 ${user_home}/.bash_profile; chown -R ${user} ${user_home}/.bash_profile; } done } show_usage() { cat <<USAGE Usage: $0 USAGE } show_final_message() { cat <<FINAL_MESSAGE Installation is successfully completed. Now restart your shell or relogin to start script writing. Your current lilalo context is ${lilalo_context}/USER If you use xgu.ru backend, your labs will be available at http://xgu.ru/l3/${lilalo_context} Use commands $ l3cd ${lilalo_context%/*/*}/MY-NEW-CONTEXT/${hostname}/USER $ l3pwd to change and to know your current context. For further information see http://xgu.ru/lilalo/ (in Russian). Thank you gor using LiLaLo. Happy Labbing! (don't forget to restart bash or relogin) FINAL_MESSAGE } temp_dir=/tmp/lilalo-install-temp-$$ mkdir -p ${temp_dir} cd ${temp_dir} step "Installing dependencies" apt_get_install_deps step "Downloading l3bashrc" ${wget} ${url_l3bashrc} step "Downloading l3prompt" ${wget} ${url_l3prompt} step "Downloading l3-agent" '${wget} ${url_l3agent}; ${wget} ${url_l3config_pm}; ${wget} ${url_l3config}' step "Downloading perl modules for l3-agent" '{ for i in ${perl_modules}; do ${wget} ${url_perl_modules}/$i.tar.gz; done; }' step "Installing perl modules for l3-agent" '{ for i in ${perl_modules}; do tar xvfz $i.tar.gz; cd $i*[^z]; perl Makefile.PL; make; make install; cd ..; done; }' step "Installing l3bashrc to users home directories" install_to_users_homes $install_l3bashrc_for_this_users step "Adding l3bashrc invocation to ~/.bashrc " install_to_users_bashrc $install_l3bashrc_for_this_users step "Adding l3-agent invocation to ~/.bash_profile " install_to_users_bash_profile $install_l3bashrc_for_this_users cd / rm -rf ${temp_dir} show_final_message
Время первой команды журнала | 10:23:10 2010- 3-22 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Время последней команды журнала | 13:22:21 2010- 3-22 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Количество командных строк в журнале | 100 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Процент команд с ненулевым кодом завершения, % | 11.00 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Процент синтаксически неверно набранных команд, % | 0.00 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Суммарное время работы с терминалом *, час | 1.61 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Количество командных строк в единицу времени, команда/мин | 1.03 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Частота использования команд |
|
В журнал автоматически попадают все команды, данные в любом терминале системы.
Для того чтобы убедиться, что журнал на текущем терминале ведётся, и команды записываются, дайте команду w. В поле WHAT, соответствующем текущему терминалу, должна быть указана программа script.
Команды, при наборе которых были допущены синтаксические ошибки, выводятся перечёркнутым текстом:
$ l s-l bash: l: command not found |
Если код завершения команды равен нулю, команда была выполнена без ошибок. Команды, код завершения которых отличен от нуля, выделяются цветом.
$ test 5 -lt 4 |
Команды, ход выполнения которых был прерван пользователем, выделяются цветом.
$ find / -name abc find: /home/devi-orig/.gnome2: Keine Berechtigung find: /home/devi-orig/.gnome2_private: Keine Berechtigung find: /home/devi-orig/.nautilus/metafiles: Keine Berechtigung find: /home/devi-orig/.metacity: Keine Berechtigung find: /home/devi-orig/.inkscape: Keine Berechtigung ^C |
Команды, выполненные с привилегиями суперпользователя, выделяются слева красной чертой.
# id uid=0(root) gid=0(root) Gruppen=0(root) |
Изменения, внесённые в текстовый файл с помощью редактора, запоминаются и показываются в журнале в формате ed. Строки, начинающиеся символом "<", удалены, а строки, начинающиеся символом ">" -- добавлены.
$ vi ~/.bashrc
|
Для того чтобы изменить файл в соответствии с показанными в диффшоте изменениями, можно воспользоваться командой patch. Нужно скопировать изменения, запустить программу patch, указав в качестве её аргумента файл, к которому применяются изменения, и всавить скопированный текст:
$ patch ~/.bashrc |
Для того чтобы получить краткую справочную информацию о команде, нужно подвести к ней мышь. Во всплывающей подсказке появится краткое описание команды.
Если справочная информация о команде есть, команда выделяется голубым фоном, например: vi. Если справочная информация отсутствует, команда выделяется розовым фоном, например: notepad.exe. Справочная информация может отсутствовать в том случае, если (1) команда введена неверно; (2) если распознавание команды LiLaLo выполнено неверно; (3) если информация о команде неизвестна LiLaLo. Последнее возможно для редких команд.
Большие, в особенности многострочные, всплывающие подсказки лучше всего показываются браузерами KDE Konqueror, Apple Safari и Microsoft Internet Explorer. В браузерах Mozilla и Firefox они отображаются не полностью, а вместо перевода строки выводится специальный символ.
Время ввода команды, показанное в журнале, соответствует времени начала ввода командной строки, которое равно тому моменту, когда на терминале появилось приглашение интерпретатора
Имя терминала, на котором была введена команда, показано в специальном блоке. Этот блок показывается только в том случае, если терминал текущей команды отличается от терминала предыдущей.
Вывод не интересующих вас в настоящий момент элементов журнала, таких как время, имя терминала и других, можно отключить. Для этого нужно воспользоваться формой управления журналом вверху страницы.
Небольшие комментарии к командам можно вставлять прямо из командной строки. Комментарий вводится прямо в командную строку, после символов #^ или #v. Символы ^ и v показывают направление выбора команды, к которой относится комментарий: ^ - к предыдущей, v - к следующей. Например, если в командной строке было введено:
$ whoami
user
$ #^ Интересно, кто я?в журнале это будет выглядеть так:
$ whoami
user
Интересно, кто я? |
Если комментарий содержит несколько строк, его можно вставить в журнал следующим образом:
$ whoami
user
$ cat > /dev/null #^ Интересно, кто я?
Программа whoami выводит имя пользователя, под которым мы зарегистрировались в системе. - Она не может ответить на вопрос о нашем назначении в этом мире.В журнале это будет выглядеть так:
$ whoami user
|
Комментарии, не относящиеся непосредственно ни к какой из команд, добавляются точно таким же способом, только вместо симолов #^ или #v нужно использовать символы #=
1 2 3 4Группы команд, выполненных на разных терминалах, разделяются специальной линией. Под этой линией в правом углу показано имя терминала, на котором выполнялись команды. Для того чтобы посмотреть команды только одного сенса, нужно щёкнуть по этому названию.
LiLaLo (L3) расшифровывается как Live Lab Log.
Программа разработана для повышения эффективности обучения Unix/Linux-системам.
(c) Игорь Чубин, 2004-2008