The contents of this assignment:
1, write a script to complete the following functions
(1) Pass a disk device file path to the script to determine whether the device exists;
(2) If present, displays all the partition information on this device;
For:
#!/bin/bash#if [$#-ne 1]; Thenecho "Please enter a disk device." Exit 2fiif [-B $]; Then Fdisk-l $1elseecho the "This disk device was not exist." Fi
2, write a script to complete the following functions
Pass a parameter to the script, this parameter is one of gzip, bzip2 or XZ;
(1) If the value of parameter 1 is gzip, use the TAR and gzip archive to compress/etc directories into the/backups directory and name/backups/etc-20160613.tar.gz;
(2) If the value of parameter 1 is bzip2, use tar and bzip2 archive to compress/etc directory to/backups directory, and named/backups/etc-20160613.tar.bz2;
(3) If the value of parameter 1 is XZ, then the tar and XZ archives are used to compress/etc directories into the/backups directory and named/backups/etc-20160613.tar.xz;
(4) Any other value, the error compression tool is displayed, and an abnormal exit is performed;
For:
#!/bin/bash#[-d/backups] | | Mkdir/backupsread-p "Pelase input a Argu (GZIP/BZIP2/XZ):" Argucase $argu ingzip) tar-pzcf/backups/etc-' Date +%y%m%d '. Ta R.GZ/ETC;; bzip2) tar-pjcf/backups/etc-' Date +%y%m%d '. tar.bz2/etc; XZ) tar-pjcf/backups/etc-' Date +%y%m%d '. tar.xz/etc; *) echo "error compression tools";; Esac
3. Write a script that accepts a path parameter:
(1) If it is an ordinary document, it can be accessed normally;
(2) If it is a catalog file, then the CD command is available for it;
(3) If the file is a symbolic link, the description is a access path;
(4) Other is impossible to judge;
For:
If [$#-lt 1];thenecho "Please input a URL" fiif [-L $];thenecho "This is a access URL" elif [-D $];thenecho "can us E CD common "Elif [-F $];thenecho" normal access "Elseecho" Unknow "fi
4, write a script, get the host name of the current host, judge
(1) If the host name is empty or localhost, or "(none)", it is named mail.magedu.com;
(2) Otherwise, display the existing host name can be;
For:
#!/bin/bashhostname= ' hostname ' if [$hostname = = Localhost-o $hostname = = None];thenhostname Mail.magedu.comelseecho $ho Stnamefi
5. Write a script to complete the following tasks:
(1) Sequentially copy each direct file or subdirectory in the/var/log directory to the/TMP/TEST1-TESTN directory, respectively;
(2) The Cp-r command is used only when copying the directory;
(3) use CP command when copying files;
(4) Use the cp-d command when copying a linked file;
(5) All remaining types, using the CP-A command;
For:
#!/bin/bashmkdir /tmp/test1-testnpath= "/TMP/TEST1-TESTN" for file in /var/log/*;d o if [ -d$file ]; then cp-r $file $path elif [ -l$file ];then cp-d $ file $path elif [ -f$file ];then cp$file $path else cp-a $file $path fidone
6. Please describe in detail the start-up process of the CentOS system (detailed to what each process system does)
For:
The CentOS host is started in the following order (1) post power-on self-Test (2) bios read the BIOS setup parameters in the CMOS to identify the underlying hardware, find the boot device (3) mbr (1) Read the first 446 bytes of bootloader in the boot device MBR (2) the sector after reading the MBR is used to identify the area where grub and kernel kernel are located (3) Launch grub (4) grub Display Menu interface, select Run kernel kernel ; The configuration file is/boot/grub/grub.conf (1) provides a menu, and provides interactive interface (2) load user-selected kernel or operating system (3) provides a protection mechanism for menus (5) kernel itself initialization (1 ) detects all the hardware devices that can be identified; (2) Load the hardware driver (possibly with RAMDisk load driver) (3) Mount the root file system as read-only; (4) The first application running user space:/sbin/init (6) init run/sbin/init program, configuration file/etc/ Inittab and/ETC/INIT/*.CONF   Set default RunLevel such as:id:3:initdefault: run System initial scripts such as:si::sysinit:/etc/rc.d/rc.sysinit (1) Set host name; (2) Set Welcome information; (3) Activate Udev and selinux; (4) mount the file system defined in the/etc/fstab file; (5 Detect the root file system, and re-mount the root file system in read-write mode; (6) Set system clock; (7) Activate swap device; (8) set kernel parameters according to/etc/sysctl.conf file; (9) activating LVM and Software raid equipment; (Ten) load drivers for additional devices; (one) cleanup operations ; Close the service that needs to be shut down in the corresponding script, start the service that needs to start (the actual service command is located in/ETC/RC.D/INIT.D) l0:0:wait:/etc/rc.d/rc 0 l1:1:wait:/etc/rc.d/ rc 1 ... l6:6:wait:/etc/rc.d/rc 6 set up a login terminal tty1:2345:respawn:/usr/sbin/mingetty tty1 tty2:2345:respawn:/usr/sbin/mingetty tty2 ... tty6:2345: Respawn:/usr/sbin/mingetty tty6
7. Add a new piece of hardware to the CentOS 6 running on the virtual machine, providing two primary partitions;
(1) Create a new two primary partition for the hard disk, and install grub for it;
(2) Provide kernel and RAMDisk files for the first primary partition of the hard disk, and provide rootfs for the second partition;
(3) for Rootfs to provide bash, LS, cat programs and the library files that depend on;
(4) Provide the configuration file for grub;
(5) The new hard disk is set as the first boot item and can start the target host normally;
For:
Add a piece of hard disk ~]# fdisk /dev/sdb // The new drive SDB is divided into 2 main zones ~]# mke2fs -t ext4 /dev/sdb{1,2} //Formatting Partitions ~]# mount /dev/sdb1 /mnt //mount partition 1 to/mnt directory ~]# grub-install --root-directory=/mnt /dev/sdb //installing grub to partition 1 on ~]# cp /boot/ initramfs-2.6.32-504.el6.i686.img /mnt/initramfs //Copying kernel files ~]# cp /boot/ vmlinuz-2.6.32-504.el6.i686 /mnt/vmlinuz //Copying RAMDisk files ~]# vim /mnt/boot/grub/grub.conf //Creating grub.conf Files default=0   TIMEOUT=5    TITLE CENTOS6 (Test) root (hd0,0) kernel /vmlinuz ro root=/dev/sda2 selinux=0 init=/bin/bash initrd /initramfs~]# umount /dev/sdb1 //Unload Partition 1~]# mount /dev/sdb2 /mnt //Mount Partition 2~]# mkdir -p /mnt/{bin,sbin, Lib,lib64,etc,home,root,media,mnt,dev,tmp}~]# mkdir -p /mnt/{usr/{bin,sbin,lib,lib64},var{lib, lib64,log,local,cache},proc,sys,selinux}~]# cp /bin/{bash,ls,cat} /mnt/bin~]# cp ' LDD /bin/{bash,ls,cat}|grep -eo "/lib.*[[:space:]" | sort -u ' / mnt/lib //copy lib file ~]# sync //Synchronous ~]# init 6 //Restart the console after you enter BIOS settings Adjust the hard drive boot order after saving exit.
8. Write a script
(1) can accept four parameters: Start, stop, restart, status
Start: Output "starting script name finished."
...
(2) Any other parameters, all error exits;
For:
#!/bin/bash#if [ $# -eq 1 ];then case $1 in start) echo "starting $0 Finished. " ;; stop) echo "stopping $0 Finished. " ;; restart) echo "restart $0 finished. " ;; status) echo "status $0 Finished. " ;; *) echo "Error 2" exit 1 ;; esacelse echo "Error 1" fi
9, write a script to determine whether a given user is logged into the current system;
(1) If the login, the user login, the script terminates;
(2) Every 3 seconds, check whether the user is logged in;
For:
#!/bin/bash#if ID $ &>/dev/null && [$#-eq 1], then until W |grep "^$1\>" &>/dev/null; Do sleep 3 echo "seaching ..." Done with Echo "is online." else echo "UserId is error." Fi
10, write a script, display the user selected to view the information;
CPU) Display CPU Info
MEM) Display Memory info
Disk) Display Disk info
Quit) quit
Not these four options, the prompt error, and ask the user to re-select, only to give the correct choice;
For:
#!/bin/bash#cat << eofcpu) display CPU Infomem) display memory Infodisk) display disk infoquit) quit====== ========================eofread-p "Enter a option:" Optionuntil ["$option" = = ' cpu '-o ' $option "= =" Mem "-O" $option " = = "Disk"-O "$option" = = "Quit"];d o read-p "wrong option, Enter again:" Optiondonecase "$option" in CPU) LSCPU ;; MEM) Cat/proc/meminfo;; disk) fdisk-l;; *) echo "Quit ..." exit 0;; Esac
11. Write a script
(1) Return a user's UID and shell with function implementation; The user name is passed through the parameters;
(2) Prompt the user to enter a user name or enter "quit" to exit;
When the user name is entered, the calling function displays the user information;
Exit the script when the user enters quit, and further: after displaying the user-related information you typed, remind the output user name or quit again:
For:
#!/bin/bash#function userInfo {uid= ' grep "^$1\>"/etc/passwd | cut-d:-f3 ' ushell= ' grep "^$1\>"/etc/passwd | cut-d :-f7 '}read-p ' Input a user name or quit: "Optionuntil [" $option "= =" Quit "];d o if ID $option &>/dev/null;th En userInfo $option echo-e "User:\t$option\nuid:\t$uid\nshell:\t$ushell" Else echo "Id is wrong." Fi read-p "Input a user name or quit:" Optiondone
12, write a script to complete the following functions (using functions)
(1) Prompt the user to enter the name of an executable command; Get all the library files that this command relies on;
(2) Copy the command file to the corresponding Rootfs path in the/mnt/sysroot directory, for example, if the original path of the copied file is/usr/bin/useradd, it is copied to the/mnt/sysroot/usr/bin/directory;
(3) Copy the library files that this command relies on to the corresponding Rootfs path in the/mnt/sysroot directory, and the rules related to the above command;
For:
#!/bin/bashmkdir-p/mnt/sysrootdestpath= "/mnt/sysroot" read-p "Enter a command:" Commandwhich--skip-alias ${command} & Amp;>/dev/null[$-ne 0] && echo "command NotFound" && exit 1binary= ' which--skip-alias ${command} ' m Kdir-p ${destpath} ' dirname ${binary} ' cp--preserve ${binary} ${destpath}${binary}for lib in ' LDd ${binary} | awk ' (nr>1) {print$ (NF-1)} ';d o mkdir-p${destpath} ' dirname ${lib} ' cp--preserve ${lib} ${destpath}${lib}d One
This article from "The Boundless" blog, declined reprint!
Linux+python high-end operation and maintenance class fifth time operation