第二天重点 bash-4.1$ :修改配置文件 .bashrc 删除.bashrc ,添加就好了 [root@centos /home/basher]#ls -a . .bash_logout .bashrc .mozilla .. .bash_profile .gnome2 [root@centos /home/basher]# rm /home/basher/.bashrc rm: remove regular file `/home/basher/.bashrc'? y [root@centos /home/basher]#su - basher [basher@centos ~]$bash bash-4.1$ echo $SHELL

1、centos6——centos7 相连 ssh @root 172.18.118.243 22 screen -S HELP screen -ls screen -x HELP 2、 linux 密码不记得,怎么办

第三天重点: 文件名规则:除了斜杠和nul

[root@centos7 ~]#rpm -qa |grep man 查看包是否安装 man 中文包安装: mount /dev/cdrom /media 挂载,并安装 systemctl start autofs systemctl enable autofs man passwd :进入第五章节 mna -a passwd q ctrl +d [root@centos7 zh_CN]#pwd /usr/share/man/zh_CN

[root@centos7 zh_CN]#man -aw ls

/usr/share/man/man1/ls.1.gz /usr/share/man/zh_CN/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz

[root@centos7 zh_CN]#

centos 7: /etc/man_db.conf

man变量配置文件:MANDATORY_MANPATH /usr/share/man/zh_CN

*****************—-------> echo$PAT H: 环境变量 export '$PATH:/app' . /etc/profile

centos 6: /etc/man.conf

-普通文件

d目录文件
[root@centos7 ~]#ll -ld /etc/ drwxr-xr-x. 139 root root 8192 May 19 08:57 /etc/

b块设备文件

c字符设备文件 [root@centos7 ~]#ll /dev/tty crw-rw-rw-. 1 root tty 5, 0 May 19 08:47 /dev/tty [root@centos7 ~]#ll /dev/pts/0 crw--w----. 1 sun tty 136, 0 May 19 08:50 /dev/pts/0

l软链接文件 [root@centos7 ~]#ll /usr/sbin/clock lrwxrwxrwx. 1 root root 7 May 16 13:10 /usr/sbin/clock -> hwclock p管道文件 s套接字文件 [root@centos7 ~]#ll /run/*.sock srw-rw-rw-. 1 root root 0 May 19 08:47 /run/gssproxy.sock srw-rw-rw-. 1 root root 0 May 19 08:47 /run/rpcbind.sock 创建nc -Ul mage.sock 通信 加入nc -U mage.sock ctrl +d 退出

pwd -p :如果是软连接将显示原始目录 [root@centos7 etc]#cd /etc/init.d [root@centos7 init.d]#pwd -P /etc/rc.d/init.d [root@centos7 init.d]#ll /etc/init.d lrwxrwxrwx. 1 root root 11 May 16 13:09 /etc/init.d -> rc.d/init.d

相对路径子目录: [root@centos7 ~]#cd /etc/sysconfig [root@centos7 sysconfig]#cd /etc/sysconfig/network-scripts/^C [root@centos7 sysconfig]#cd network-scripts/ [root@centos7 network-scripts]# 路径的切换:上级目录 [root@centos7 sysconfig]#cd /etc/sysconfig/network-scripts/mage/ [root@centos7 mage]#pwd /etc/sysconfig/network-scripts/mage [root@centos7 mage]#cd ../../

**********************——————>bash /app/txt.sh ********************》root/ txt.sh 执行命令

[root@centos7 back]#dirname /app/back /app [root@centos7 back]#basename /app/back
back

文件名通配符 *:匹配零或多个任意字符 ?:匹配任意一个单一字符 0-9:表示任何数字 a-Z:表示所有字母,包括大小写 [linux]:表示包含l或i或n或u或x [^linux]:表示不包含l和i和n和u和x [:digit:]:表示任意数字 [:lower:]:表示小写字母 [:upper:]:表示大写字母 [:alpha:]:表示大小写字母 [:alnum:]:表示任意字母或数字 [:blank:]:表示空格(水平制表符)及TAB [:space:]:表示空格(水平制表符)、回车(垂直制表符)及TAB [:punct:]:表示符号 [:print:]:表示可打印字符

-rw-------. 1 root root 1489 May 15 13:25 anaconda-ks.cfg

    -/d/l/s/b/c/p 表示文件的类型
    rw-  ---  --- 表示owner,group,other的权限
    . 表示该文件有selinux的context标签,可用-Z 详细查看
    1 表示硬链接数
    root 表示该文件的owner
    root 表示该文件的group
    1495 表示该文件的大小,默认bytes -h以人类可读性显示,则显示具体的单位
    May 15 11:23 默认显示为mtime,可使用u或--time=atime来显示atime
                                s  可使用--time=ctime来显示ctime
    anaconda-ks.cfg  文件名

作业: 1、[root@centos7 app]#ls /app/k*[:digit:][:lower:] [root@centos7 app]#ls /app/[0-9][0-9][0-9] 2、[root@centos7 app]#ls -d /proc/[0-9][0-9][0-9] 3、[root@centos7 app]#ls /app/[[:punct:][:digit:]] /app/8973 /app/987 /app/a+3 /app/a &71qa1 /app/k21a [root@centos7 app]#ls /app/[[:punct:][0-9]*
/app/8973 /app/987 /app/a+3 /app/a &71qa1 /app/k21a 4、[root@centos7 app]#ls m*[[:digit:]]x m2x 5、[root@centos7 app]#ls [A-Z][0-9][0-9]
ls [A-Z]
[[:digit:]][[:digit:]] A23 6、[root@centos7 app]#ls [[:lower:]][0-9].conf qa13.conf [root@centos7 app]#ls [[:lower:]][[:digit:]].conf
qa13.conf 7、[root@centos7 ~]#ls [^.]* a anaconda-ks.cfg initial-setup-ks.cfg txt.sh

8、alias baketc='cp -av /etc/ /app/backupdate +%F' 9、[root@centos /app]#cp -av /root/* /app/testdir/rootdir

10、[root@centos /app]#mkdir -pv /testdir/dir8/{x/{a,b,c},y/{a,b,c}} [root@centos /app]#mkdir -pv /app/testdir{11,12/dir14,13/dir15} 目录 11、[root@centos /app]#mkdir -pv /app/testdir/dir/{9/x/a,10/y/b} mkdir: created directory /app/testdir/dir' mkdir: created directory/app/testdir/dir/9' mkdir: created directory /app/testdir/dir/9/x' mkdir: created directory/app/testdir/dir/9/x/a' mkdir: created directory /app/testdir/dir/10' mkdir: created directory/app/testdir/dir/10/y' mkdir: created directory `/app/testdir/dir/10/y/b'

12、[root@centos /app]#mkdir -pv /app/testdir/dir/{11,12/dir14,13/dir15}

练习: 1、显示/var目录下所有以l开头,以一个小写字母结尾,且中间出现至少一位数字的文件或目录 ls /var/l*[0-9][[:lower:]]d 2、显示/etc目录下以任意一位数字开头,且以非数字结尾的文件或目录 ls /etc/[0-9][^0-9] 3、显示/etc/目录下以非字母开头,后面跟了一个字母及其它任意长度任意字符的文件或目录 ls /etc/[^a-Z][a-Z]* 4、显示/etc/目录下所有以rc开头,并后面是0-6之间的数字,其它为任意字符的文件或目录 ls -d /etc/rc[0-6]* 5、显示/etc目录下,所有以.d结尾的文件或目录 ls -d /etc/.d 6、显示/etc目录下,所有.conf结尾,且以m,n,r,p开头的文件或目录 ls -d /etc/[mnrp].conf 7、只显示/root下的隐藏文件和目录 ls -d .* 8、只显示/etc下的非隐藏目录 ls -d /etc/*/

cp -av /etc/  /app/testdir/backup`date +%F`

实验: 文件改名及备份 root@centos7 app]#ls f10.conf.bak f2.conf.bak f4.conf.bak f6.conf.bak f8.conf.bak f1.conf.bak f3.conf.bak f5.conf.bak f7.conf.bak f9.conf.bak [root@centos7 app]#rename conf.bak conf *.bak [root@centos7 app]#ls f10.conf f2.conf f4.conf f6.conf f8.conf f1.conf f3.conf f5.conf f7.conf f9.conf

[root@centos7 app]#touch f{1..10}.conf
[root@centos7 app]#ls 1 f10.conf f2.conf f4.conf f6.conf f8.conf backup2018-05-19 f1.conf f3.conf f5.conf f7.conf f9.conf [root@centos7 app]#rename conf conf.bak f* 批量备份文件 2 ls -Z selinux [root@centos ~]#getenforce ^C
[root@centos ~]#vim /etc/selinux/config^C [root@centos ~]# 3 [root@centos ~]#stty -echoctl ————>bashrc 去掉ctrl +c 字符 4 [root@centos ~]#stat anaconda-ks.cfg File: `anaconda-ks.cfg' Size: 1489 Blocks: 8 IO Block: 4096 regular file Device: 802h/2050d Inode: 1051842 Links: 1 Access: (0600/-rw-------) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2018-05-19 15:56:07.426235498 +0800 读 Modify: 2018-05-15 13:25:14.120999614 +0800 修改 Change: 2018-05-15 13:25:20.471999612 +0800 元数据时间

4 touch a stat 刷新时间 ctime touch -a 刷新 a,c 时间 a time touch -c 刷新 a,m 时间 mtime

ASCII>> utf -8 127位 中国GB2312 16位 2^16=65536 man 7 ascii 查看 ASCII 表 6 bc 计算使用 obase=2;ibase=10 9 1001 7 [root@centos ~]#echo -e "a\n" 换行 a

[root@centos ~]#echo -e "\007" 7 、?* 表示2个字符以上
8、提示符怎么修改原始~/.bashrc 9、[1-36-9] :表示一位数字 10、[root@centos ~]#ls [[:blank:]] a b [root@centos ~]#ls [[:space:]] a b

11、 [root@centos ~]#echo -e "aaad d" |tr -d [[:blank:]] aaadd [root@centos ~]#echo -e "aaad d\n" |tr -d [[:blank:]] aaadd

[root@centos ~]#echo -e "aaad d\n" |tr -d [[:space:]] aaadd[root@centos ~]# [root@centos ~]#ls [[:punct:]] 表示包含符号 CP 命令 软连接 [root@centos /app]#mkdir dir2 [root@centos /app]#cp /etc/passwd . [root@centos /app]#ls dir2 passwd [root@centos /app]#ln -s passwd mima [root@centos /app]#ll total 8 drwxr-xr-x. 2 root root 4096 May 19 22:21 dir2 lrwxrwxrwx. 1 root root 6 May 19 22:22 mima -> passwd -rw-r--r--. 1 root root 1609 May 19 22:21 passwd [root@centos /app]#cp -d mima dir2/ [root@centos /app]#cd dir2 [root@centos /app/dir2]#ls mima [root@centos /app/dir2]#ll total 0 lrwxrwxrwx. 1 root root 6 May 19 22:23 mima -> passwd 闪烁 [root@centos /app/dir2]#touch passwd [root@centos /app/dir2]#ll total 0 lrwxrwxrwx. 1 root root 6 May 19 22:23 mima -> passwd 找到路径 -rw-r--r--. 1 root root 0 May 19 22:23 passwd [root@centos /app/dir2]#

[root@centos /app]#cp -av * /newapp dir2' ->/newapp/dir2' dir2/mima' ->/newapp/dir2/mima' dir2/passwd' ->/newapp/dir2/passwd' mima' ->/newapp/mima' passwd' ->/newapp/passwd'

[root@centos /etc]#du -sh 字节 h
41M
生成一个 bigfile 清空文件 [root@centos /app/source]#dd if=/dev/zero of=bigfile bs=1M count=20 [root@centos /app/source]#du -sh 21M mkdir source target cp -a source/* target/ [root@centos /app/source]#du -sh [root@centos /app/target]# > /app/target/bigfile 清空 [root@centos /app/target]#rm -rf * 删除

cp -f

[sun@centos7 app]$chmod 000 1111 [sun@centos7 app]$ll total 8 ----------. 1 sun sun 2234 May 16 14:23 1111 -rw-r--r--. 1 sun sun 2234 May 16 14:13 passwd [sun@centos7 app]$cat 1111 cat: 1111: Permission denied [sun@centos7 app]$ll -dl /app drwxrwxrwx. 2 root root 32 May 16 14:23 /app [sun@centos7 app]$cp -f /etc/passwd 1111 [sun@centos7 app]$cat 1111 [sun@centos7 app]$ll 1111 -rw-r--r--. 1 sun sun 2234 May 16 14:24 1111 [sun@centos7 app]$ll /etc/passwd -rw-r--r--. 1 root root 2234 May 16 13:22 /etc/passwd [sun@centos7 app]$

mv 移动并改名 [root@centos7 app]#ls 1111 a backup2018-05-16 dir2 [root@centos7 app]#mv a dir2/ [root@centos7 app]#ll total 4 -rw-r--r--. 1 sun sun 2234 May 16 14:24 1111 drwx------. 2 root root 6 May 16 14:34 backup2018-05-16 drwxr-xr-x. 2 root root 15 May 16 14:40 dir2 [root@centos7 app]#mv dir2/a ./passwd [root@centos7 app]#ls 1111 backup2018-05-16 dir2 passwd [root@centos7 app]# 删除根下面所有的目录: [root@centos ~]#cd / [root@centos /]# rm-rf *^C [root@centos /]#cd [root@centos ~]#rm -rf / 快照:关机快照 内存占用空间

硬链接 inode 编号 indoe bitmap block bitmap [root@centos /app]#ls -i source/fstab 131074 source/fstab [root@centos /app]#ls -i target/1fstab
131074 target/1fstab [root@centos /app]#

[root@centos /app]#ln passwd haha 最后一个分区 [root@centos /app]#ls -i 11 haha 11 passwd 131073 source 393217 target

ln /etc/passwd /bin/haha

df /etc /dev/sd2
df /bin

软链接 :是路径 指针 [root@centos /app]#mkdir source target [root@centos /app]#ls source target [root@centos /app]#cp /etc/passwd source/ [root@centos /app]#cd target/ [root@centos /app/target]#ln -s ../source/passwd mima [root@centos /app/target]#ll mima lrwxrwxrwx. 1 root root 16 May 16 14:29 mima -> ../source/passwd [root@centos /app/target]#

[root@centos ~]#ll -ld /etc/init.d lrwxrwxrwx. 1 root root 11 May 15 13:14 /etc/init.d -> rc.d/init.d [root@centos ~]#ll -ld /var/mail lrwxrwxrwx. 1 root root 10 May 15 13:14 /var/mail -> spool/mail 软连接 [root@centos /app]#ll /tmp/a/b/c/d/exe lrwxrwxrwx. 1 root root 30 May 16 15:23 /tmp/a/b/c/d/exe -> ../../../../../app/1/2/3/4/txt

怎么查看软链接真实 路径

[root@centos /var/www]#mkdir /var/www/magetest [root@centos /var/www]#cd /var/www/magetest [root@centos /var/www/magetest]#vim hello.html [root@centos /var/www/magetest]#ln -s /var/www/magetest/hello.html /var/www/magetest/index.html [root@centos /var/www/mage]#rm -rf index.html [root@centos /var/www/mage]#ln -s hello.html index.html [root@centos /var/www/mage]#ll total 4

-rw-r--r--. 1 root root 9 May 16 15:27 hello.html lrwxrwxrwx. 1 root root 10 May 16 15:43 index.html -> hello.html

file- f 产看文件列表 [root@centos /app]#vim liebiao.txt /etc/grub/ /etc/passwd /app/txt [root@centos /app]#file -f liebiao.txt /etc/grub/: cannot open `/etc/grub/' (No such file or directory) /etc/passwd: ASCII text /app/txt: ASCII text 查看软连接类型:

[root@centos /app]#file -L /etc/system-release /etc/system-release: ASCII text

第4天 3A 认证 授权 审计 authentication authorization accouting aduition

root :管理员 Linux 组: groupname gid
管理员组 root
other

Linux安全上下文 进程(process) 进程访问资源的权限取决于运行者的身份 管理员 (root) /bin/cat (所有用户都能使用) /root/.bashrc 判断:1使用工具 2 使用文件
[root@centos ~]#ll /bin/cat -rwxr-xr-x. 1 root root 48568 Mar 23 2017 /bin/cat [root@centos ~]#ll /root/.bashrc -rw-r--r--. 1 root root 206 May 16 16:52 /root/.bashrc zhangsan (1000 uid ,2000gid,3000gid) /bin/cat (rootuid=0,admin=2000) /app/passwd (root,root) 组:admin :2000 rw-r--r-- (other) 既不是所有者也不属于组,但是属于other ------rwx (zhangsan ,root )/app/passwd 所有者/所有有组 ---rwxrwx (1000,3000) 所有者没有权限,owner权限生效,组权限没有用! inode 65535 存的inode 对应的id 号 Linux组 :有且只能有一个 附加组可以有多个 /etc/passwd man 5 passwd /etc/shadow /etc/group /etc/gshadow passwd : [root@centos7 ~]#openssl rand -base64 30 |head -c30
j+6PERTSQf/tpkuGiHUQS2+5BLgMG3

加密算法: sha512位 root uid=0 张三 uid=0 通过 /etc/passwd 查看uid

root [root@centos ~]#useradd -s /sbin/nologin user2 创建系统 /sbin/nologin useradd: user 'user2' already exists [root@centos ~]#usermod -s /sbin/nologin user2
[root@centos ~]#su - user2 This account is currently not available.

[root@centos ~]#ls -I "[^.]*" -a 去掉点的文件忽略不带点的文件 . .bash_profile .dbus .gnupg .lesshst .rnd .. .bashrc .esd_auth .gtk-bookmarks .local .ssh .abrt .cache .gconf .gvfs .nautilus .tcshrc .bash_history .config .gnome2 .ICEauthority .pulse .viminfo .bash_logout .cshrc

[root@centos ~]#ll /etc/shadow ----------. 1 root root 2046 May 22 10:13 /etc/shadow 修改密码为啥没有读写权限 cat /etc/ shadow
1 date +%s 1970 _2018年秒 vim /etc/shadow

[root@centos ~]#chage -l sun Last password change : May 15, 2018 Password expires : never Password inactive : never Account expires : never Minimum number of days between password change : 2 Maximum number of days between password change : 99999 Number of days of warning before password expires : 7
date -s 设定时间 [root@centos ~]#echo centos |passwd --stdin sun history 取消

minix mum date :

[root@centos ~]#date -s '2018-5-25' 2天时间内不能修改密码 Fri May 25 00:00:00 CST 2018 [root@centos ~]#su - sun [sun@centos ~]$passwd 普通用户不能添加user名 超级用户切换密码,不要验证,普通用户切换密码需要验证

maximum date : date -s 设定时间 [root@centos ~]#echo centos |passwd --stdin sun history 取消 HISTCONTROL=ignorespace 取消历史和空格文件 echo $HISTCONTROL nano ~/.bash_profile 配置文件 history echo centos |passwd --stdin sun [root@centos ~]#

取消时间: warning 时间 [cao@centos ~]$su - sun warning 时间 Password: Warning: your password will expire in 6 days

expires time 过期时间 过了会让你修改密码
[sun@centos ~]$su - sun Password: You are required to change your password immediately (password aged) Changing password for sun. (current) UNIX password: 账户过期时间: Password: Your account has expired; please contact your system administrator su: incorrect password 例如:公司外来一个员工,如果2018年月sun底离职 date 显示当前时间:

date -s '2018-12-29' 距离1970年时间 -2018-12-29多少天 clock -s 硬件时间设置软件时间 date +%s 2018-12-29时间 S秒 转换成天 《天》 [root@centos ~]#chage -l sun Last password change : Dec 30, 2018 Password expires : Jan 19, 2019 Password inactive : Jan 26, 2019 Account expires 账户过期时间 : Dec 29, 2018 Minimum number of days between password change : 2 Maximum number of days between password change : 20 Number of days of warning before password expires : 7

Your account has expired; please contact your system administra passwd sun passwd: all authentication tokens updated successfully.

chage 时间 查找用户: [root@centos ~]#chage sun Changing the aging information for sun Enter the new value, or press ENTER for the default

    Minimum Password Age [0]: 
    Maximum Password Age [99999]: 
    Last Password Change (YYYY-MM-DD) [2018-05-22]: 
    Password Expiration Warning [7]: 
    Password Inactive [-1]: 
    Account Expiration Date (YYYY-MM-DD) [-1]: 

man 5 chage pwconv pwunconv grpconv grpunconv

群组信息非常重要 主组:放在/etc/passwd 例如cao 501 主组编号:uid cao :cao 用户主组是: 查看主组501,/etc/group cao:x 501:辅助组成员,谁是cao的辅助组,辅助组成员,谁把cao 当成辅助组 group cao:x:501:root,sun (把cao 当作辅助组) [root@centos ~]#id cao uid=501(cao) gid=501(cao) groups=501(cao) [root@centos ~]#id sun uid=500(sun) gid=500(sun) groups=500(sun),501(cao) [root@centos ~]# [root@centos ~]#id uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 原因:添加到附加组,必须重新登陆否则,就是上面的结果 重新登陆获取最新的消息 [root@centos ~]#id root uid=0(root) gid=0(root) groups=0(root),501(cao)

gpasswd :修改组mima passwd :修改密码 uid 添加附加组成员: usermod -G mage root (把马哥当作附加组) usermod -G mage sun 添加附加组: [root@centos ~]#usermod -aG cao sun 追加 [root@centos ~]#usermod -aG root sun [root@centos ~]#groups sun sun : sun root cao newgroup 切换主组 gpasswd opts 设置组mima

[sun@centos ~]$newgrp opts

/etc/gshadow 添加组管理员:man gpasswd gpasswd -A [root@centos ~]#gpasswd -A sun opts 把sun 当作opts 的管理员

[root@centos ~]#gpasswd Usage: gpasswd [option] GROUP 外部命令 Options: -a, --add USER add USER to GROUP -d, --delete USER remove USER from GROUP -h, --help display this help message and exit -Q, --root CHROOT_DIR directory to chroot into -r, --delete-password remove the GROUP's password -R, --restrict restrict access to GROUP to its members -M, --members USER,... set the list of members of GROUP -A, --administrators ADMIN,...

[root@centos ~]#usermod -G opts mage root 管理员 [sun @centos ~]# gpasswd -a mage opts 针对/etc/gshadow admin 管理员 用户 useradd usermod userdel [root@centos ~]#groupadd admingroup

[root@centos ~]#useradd -u 2000 -g admingroup mage3 [root@centos ~]#id mage3 [root@centos /home]#useradd -g cao mage50 主组cao 用户mage50 [root@centos /home]#id mage50 uid=2006(mage50) gid=501(cao) groups=501(cao) [root@centos ~]#cat /etc/default/useradd

useradd defaults file

GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/bash SKEL=/etc/skel CREATE_MAIL_SPOOL=yes 不创建家目录:useradd -M magetest 相当于删除家目录 [root@centos ~]#useradd -N a [root@centos ~]#getent passwd a a:x:2007:100::/home/a:/bin/bash

不创建家目录:useradd -M magetest 相当于删除家目录 [root@centos /home/magetest]#cp -a /etc/skel/.[^.]* .()当前工作目录 拷贝目录注意 王老师: cp -r /etc/skel /home/haha 把skel 目录拷贝病命名成haha目录 [root@centos /home]#cd /etc/skel/ 创建用户的配置文件全部在这里 [root@centos /etc/skel]#ls welcometomage [root@centos /etc/skel]#ls -a . .. .bash_logout .bash_profile .bashrc .gnome2 .mozilla welcometomage

[root@centos /home]#chown -R magetest.magetest magetest/ 这是所有者 [root@centos /home]# chmod -R 700 magetest/ 这是权限

[root@centos /home]#cd /var/spool/mail root 邮箱 vim /etc/default/useradd [root@centos /var/spool/mail]#useradd -D -s /bin/sch [root@centos /var/spool/mail]#user 创建批量用户 newusers passwd 格式文件 userdel -r 删除 创建 userlist.tst> newusers userlist.tst chpasswd 批量修改用户命令 chpasswd < piliang,txt vim piliang,txt mage1:cnetos mage2:rehat (用户不创建密码),批量创建不同的密码

组 groupadd groupmod groupdel 密码批量修改mima :

没有整理

重点::切忌:端口号 禁止root远程登陆 工作不能root登陆 提高实力 :

客户端的配置文件是/etc/ssh/ssh_config 服务端的配置文件是/etc/ssh/sshd_config [root@centos ~]#vim /etc/ssh/ssh_config

第五天:整理重点

文件目录加执行权限 X:目录代表文件可以进入 x:代表文件可以执行 [root@centos /app]# chmod a-x * 去掉目录下所有的权限

[root@centos /app]# chmod a+X * 只给目录添加权限

[root@centos /app]#ll f1 -rw-r--r--. 1 root root 0 May 25 18:10 f1 [root@centos /app]#chmod g+wx f1 -rw-rwxr--. 1 root root 0 May 25 18:10 f1

[root@centos /app]#chmod --reference f1 f2 [root@centos /app]#ll f1 f2 -rwxr-xr-x. 1 root root 0 May 25 18:10 f1 -rwxr-xr-x. 1 root root 0 May 25 19:50 f2 经典案例:

1@@@@@@@@@@@@ [liubei@centos /app]$ll total 4 drwxr-x---. 3 liubei shuguo 4096 May 25 20:15 house [liubei@centos /app]$ chmod 000 house/ 所有者可以更改自己文件的权限 [liubei@centos /app]$ll total 4 d---------. 3 liubei shuguo 4096 May 25 20:15 house **文件的权限只有所有人和root 可以更改 wx 当目录有权限w 时候,文件不可读,但是可以删(文件只有读权限) 解释,一个笔记本,上了一把锁,你不能用,但是可以删掉

3@@@@@@@@@@@@@@@@ guanyu@centos /app/house]$cp /etc/passwd letter.txt cp -f [guanyu@centos /app/house]$cp /etc/passwd letter.txt 覆盖文件要有写权限,所以才可以覆盖 cp: cannot create regular file `letter.txt': Permission denied cp -f 就是当文件没有写 权限, CP -f 可以删除也可以创建 inode 不变 数据删除并重命名替换 删除释放 inode c重新释放,并填充 当 目录只有X 权限时 ,可以进去,可以访问目录下的文件 ~/.bashrc 将umask保存起来

特殊权限: [root@centos ~]#stat /usr/bin/passwd File: `/usr/bin/passwd' Size: 30768 Blocks: 64 IO Block: 4096 regular file Device: 802h/2050d Inode: 794284 Links: 1 Access: (4755/-rwsr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2018-05-17 04:31:10.011107221 +0800 Modify: 2015-11-24 00:30:08.000000000 +0800 Change: 2018-05-17 04:26:19.014106977 +0800

suid 特殊权限: [root@centos /app]#cp /bin/touch . [root@centos /app]#chown liubei touch [root@centos /app]# mv touch liubeituch [root@centos /app]#su - guanyu [guanyu@centos ~]$cd /app [guanyu@centos /app]$touch gyfile1 -rw-rw-r--. 1 guanyu guanyu 0 May 25 22:31 gyfile1 [guanyu@centos /app]$./liubeitouch gyfile2 -rw-rw-r--. 1 guanyu guanyu 0 May 25 22:33 gyfile2 [root@centos /app]#chmod u+s /app/liubeituch
[root@centos /app]# su - guanyu [guanyu@centos ~]$cd /app [guanyu@centos /app]$./liubeituch gyfile3 -rwsr-xr-x. 1 liubei root 52560 May 25 22:29 liubeituch suid : 对于可执行的二进制文件作用了suid权限之后,任何人在执行该文件时,可临时拥有其所属人的权限

-rwsr-xr-x. 1 liubei root 52560 May 25 22:29 liubeituch

为什么脚本不能suid
脚本随意改 脚本是root 里面是rm -rf / 删除跟了漏洞bug [root@centos /app]#vim txt.sh -rwxrwxrwx. 1 root root 47 May 25 22:55 txt.sh [root@centos /app]#chmod u+s txt.sh -rwsrwxrwx. 1 liubei root 47 May 25 22:55 txt.sh [root@centos /app]# su - guanyu [guanyu@centos ~]$cd /app [guanyu@centos /app]$./txt.sh hello world [guanyu@centos /app]$ll file10 -rw-rw-r--. 1 guanyu guanyu 0 May 25 22:58 file10

对于二进制没有效果: sgid 对于二进制程序可以正常使用 [guanyu@centos /app]$which mkdir /bin/mkdir [guanyu@centos /app]$cp /bin/mkdir /app/liubeimkdir

[guanyu@centos /app]$ll liubeimkdir -rwxr-xr-x. 1 guanyu guanyu 50056 May 25 23:14 liubeimkdir

[root@centos /app]#chgrp liubei /app/liubeimkdir [root@centos /app]#ll liubeimkdir -rwxr-xr-x. 1 guanyu liubei 50056 May 25 23:14 liubeimkdir [root@centos /app]#chmod g+s /app/liubeimkdir [root@centos /app]#su - guanyu [guanyu@centos ~]$mkdir guanyundir drwxrwxr-x. 2 guanyu guanyu 4096 May 25 23:17 guanyundir

[guanyu@centos /app]$./liubeimkdir guanyudir2

[guanyu@centos /app]$ll total 56 drwxrwxr-x. 2 guanyu liubei 4096 May 25 23:18 guanyudir2

sgid 目录 对与目录作用了sgid权限后,任何人在该目录下创建的文件的所属继承目录的所属组

1、创建目录所属组 2、g+s 该目录下所有文件继承了所属组的权限

所有人只能改权限 不能改所有人 刘备是所有者 chown cao house/ mkdir house chmod 770 house/ 所有者的权限只能root和所有者可以改 chgrp shuguo wc chmos g+s wc / cd /wc touch f1 属于所属组

sticky 对于目录作用了sticky 之后,该目录下的文件及子目录,仅其所属人和目录 的所属人及root才能删除 [root@centos /app]#chmod o+t house/ [root@centos /app]#ll total 4 drwxrwx--T. 6 liubei shuguo 4096 May 26 08:49 house [root@centos /app]#su guanyu [guanyu@centos /app/house]$ touch guanyufiel [zhangfei@centos /app/house]$rm zhangfeifile 不能删除:只有木有所有人可以删除

[liubei@centos /app/house]$rm -f liubeifile [liubei@centos /app/house]$touch liubeifile

[liubei@centos /app]$ll total 4 drwxrwx--T. 6 liubei shuguo 4096 May 26 08:57 house [liubei@centos /app]$mkdir a [liubei@centos /app]$mkdir b [liubei@centos /app]$ ll total 12 drwxrwxr-x. 2 liubei liubei 4096 May 26 10:34 a drwxrwxr-x. 2 liubei liubei 4096 May 26 10:34 b drwxrwx--T. 6 liubei shuguo 4096 May 26 08:57 house [liubei@centos /app]$chmod a-x a
[liubei@centos /app]$chmod u+s a b [liubei@centos /app]$chmod g+s a b [liubei@centos /app]$chmod o+t a b [liubei@centos /app]$ll total 12 drwSrwSr-T. 2 liubei liubei 4096 May 26 10:34 a drwsrwsr-t. 2 liubei liubei 4096 May 26 10:34 b drwxrwx--T. 6 liubei shuguo 4096 May 26 08:57 house chattr +a 不可修改,可以追加不能删除 chattr +i 什么也不能做,只能读

acl 生效顺序:所有者,自定义用户,自定义组,其他人 查看ACL 是否挂载 [root@centos /app]# tune2fs -l /dev/sda3 |grep acl Default mount options: user_xattr acl

[root@centos /app]#fdisk /dev/sda 创建分区 [root@centos /app]#partx -a /dev/sda 更新,让内核重新读取 [root@centos /app]#ls /dev/sda6 /dev/sda6 [root@centos /app]# tune2fs -l /dev/sda6 |grep acl

[root@centos /app]#tune2fs -o acl /dev/sda6 [root@centos /app]#tune2fs -l /dev/sda6 |grep option

acl 挂载 [root@centos /app]# mount /dev/sda6 /mnt/ 卸载 [root@centos /app]#umount /mnt/ 即使root有權限: app cd house/

ACl 未來創建:

[root@centos /app]#setfacl -m d:u:liubei:rwx house/ 當前子目錄 [root@centos /app]#setfacl -Rm u:liubei:rwx house/ acl 壓縮 [root@centos /app]#tar cvf house.tar house/

-rw-r--r--. 1 root root 10240 May 27 14:48 house.tar ACL 備份: tar cvf house.tar house 備份數據 getfacl -R house >acl.txt ACL 备份 [root@centos /app]#tar -xvf house.tar -C /var/tmp 解压 [root@centos /var/tmp]#setfacl --restore acl.txt 恢复数据 cp acl.txt /var/tmp f复制 [root@centos /app]#cp acl.txt /var/tmp/ 复制

[root@centos /app]#mkdir -pv testdir/dir [root@centos /app]#setfacl -Rm u:liubei:rwx /testdir/dir/ [root@centos /app]#setfacl -m d:u:liubei:rwx /testdir/dir/ [root@centos /app]#tar -cvf dir.house testdir/dir/ 压缩 [root@centos /app]#tar -xvf dir.house testdir/dir/ 解压 [root@centos /app]#getfacl -R testdir/dir/ > acl.txt
[root@centos /app]#getfacl -b testdir/dir/ [root@centos /app]#setfacl --restore dir.house

第六天

vim 编辑器 整理重点 vim 没有正常关掉怎么回复 [root@centos /app]#vim fstab 打开

watch -n 0.1 ls -a 监控

[root@centos /app]#vim -r fstab 恢复 数据或者 R 恢复数据之后删除 [root@centos /app]#rm -f.fstab.s [root@centos /app]#watch -n 0.1 ls -Al Every 0.1s: ls -Al Sat May 26 20:53:17 2018

egrep 正则练习 1、[root@centos ~]#cut -d: -f1,7 < /etc/passwd |egrep "<root|mage|wang>" 2、[root@centos ~]#cut -d: -f1,7 < /etc/passwd |egrep -w "<root|mage|wang>" 2、[root@centos /app]#cat functions | grep -o "^[[:alpha:]+_].()" 3、[root@centos /app]#echo "/rc.d/init.d/functions" |egrep -o "[^/]{1,}/?$" functions [root@centos /app]#echo "/rc.d/init.d/functions" |egrep -o "[^/]{1,}/?" rc.d/ init.d/ functions 4、[root@centos /app]#echo "/rc.d/init.d/functions" |egrep -o '/./'

6、0-9 [1-9][0-9] 1[0-9]{2} 2[0-4][0-9] 25[0-5] 7、[root@centos ~]#ifconfig |egrep -o "<(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-9])>" vim

yy 1,3y p 粘贴复制

可视化模式 vim -b /app/binary 打开二进制 :%!xxd打开16进制 %!xxd -r v 选中 V行 y d 结合使用 ctrl +v

first next 打开多个vim vim -o f1 f2 上下 vim -O f1 f2 左右 wqall 全盘退出 ctrl +w +方向键 可以选择 vim ~/.vimrc 设置set nu 加行数 set nu set nonu vim 搜索 / h jfskjriwj :set ic 大小写 :set ai 上行一样 :set list ^i $ 显示符号 :set fileformat=unxi

:set fileformat=dos file win.txt

vim 作业: 1、@^[[:space:]]+i@@ 2、:%s@(^[[:space:]].*)@#\1@
4、:%s@^#[[:space:]]{1,}@ 3、:%s@/etc/sysconfig/init@/etc/sysconfig/init@

脚本 [root@centos /app]#vim py.sh 解释器
#!/usr/bin/python print "hello world" sha #bang ! 头文件执行自己: #!/bin/rm -f t.sh echo “hello world ” [root@centos /app]# ./t.sh 注释 相当于执行/bin/rm -f t.sh echo $SHELL 默认就是shell

脚本centos 6 默认脚本 : [root@centos /app]#vim /etc/rc.d/rc.sysinit

[root@centos /app]#cat t.sh #!/bin/rm -f echo "hello world"

[root@centos /app]#./t.sh

[root@centos /app/scripts]#vim txt.sh #!/bin/bash

for n in {1..10};do if [$n -1e 5];then useradd user$n else useradd -s /sbin/nologin user$n fi done

bash -n 语法 bash -x 调试

环境变量

[root@centos /app]#export q=1 [root@centos /app]#env |grep -w ^q q=1 set :局部变量 env:全局变量 [root@centos /app]#r=1 [root@centos /app]#export r=3 [root@centos /app]#env |grep -w ^r r=3

df 导出磁盘利用率:

[root@centos ~]#df |grep "/dev/sda" |egrep -o "[0-9]{1,3}%"|egrep -o "[0-9]{1,3}"|sort -nr 23 15 1

批量处理文件 file-f f1 newsgrp passwd (格式) echo u:wang > delacl.txt [root@centos /app]#echo g:opts >>delacl.txt [root@centos /app]#setfacl -X delacl.txt d2

[root@centos /app]#echo u:wang:rwx >wang.acl [root@centos /app]#cat wang.acl u:wang:rwx [root@centos /app]#setfacl -R -M wang.acl d2

实验: root 当Linux没有root了,怎么办! root改成wang 登陆不了了 。从新引导内核

删除文件相当于 删除与备份文件rm mv [OPTION]... -t DIRECTORY SOURCE.. alias rm="mv -t /app/bak" 特别重要:
[root@centos /app]#rm passwd
mv -t /app/bak =rm(定义别名) passwd tee ls |tee ls.out |tr "\n" " " >ls.txt tee 相当于 >重定向 和cat 功能 发邮件:群发邮件:

练习

1、[root@centos ~]#tr "a-z" "A-Z" < /etc/issue > /tmp/issue.out 2、[root@centos /tmp]#who |tr "a-z" "A-Z" > /tmp/who.out

3、[root@centos ~]#mail -s "help" root <<end 发邮件,发脚本邮件给所有人 hellow "wang " 4[root@centos ~]#ls -1 | tr "\n" " " 5、[root@centos ~]#echo {1..10} |tr " " '+'|bc man 7 ascii 6、 tr -d "\015" < win.txt [root@centos ~]#tr -d "\r" < win.txt >linux.txt unix2dos dos2unix 包名: unix2dos 包名 7、echo "xt.,l 1 jr#!$mn 2 c*/fe 3 uz 4"|tr -cd '[0-9] ' 8、[root@centos ~]#echo $PATH |tr ":" "\n" 9、[root@centos ~]#tr "a-j" "0-9" < txt 替换文本 74loo 0s3qw 12346700123 4rt w4rt6

10、[root@centos ~]#cat /etc/centos-release |tr " " "\n" > txt 非常重要:::: [root@centos ~]#tr -sc "a-zA-Z" "\n" < /etc/centos-release CentOS release Final 除了字母以外全部压缩成换行 11、[root@centos ~]#useradd -G bin,root -s /bin/csh -c "Gentoo Distribution" gent 12、 [root@centos ~]#useradd -G admins harry [root@centos ~]#useradd -G admins natasha #useradd -s /sbin/nologin sarah [root@centos ~]#echo centos |passwd --stdin natasha

[root@centos ~]#echo centos |passwd --stdin harry [root@centos ~]#echo centos |passwd --stdin sarah

第三周重点内容 脚本: [root@Centos7/app]#./infosystem.sh hello world The host is Centos7.4.localdomain The kernel is 3.10.0-693.el7.x86_64 The cpu is Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz MemTotal: 2031912 kB The IP is 192.168.137.142

[root@Centos7/app]#vim reset.sh [root@Centos7~]#mkdir bin
[root@Centos7~]#mv /app/infosystem.sh ~/bin/ [root@Centos7~]#echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/home/sun

[root@Centos7~/bin]#bash -x infosystem.sh

[root@Centos7~/bin]#bash -n infosystem.sh

变量: [root@Centos7~]#echo $$ 当前进程: 3925 [root@Centos7~]#echo $PPID 上级进程:

[root@Centos7~]# name=whoami [root@Centos7~]#echo $name root

[root@Centos7~]#echo $name \S Kernel \r on an \m [root@Centos7~]#cat /etc/issue

\S Kernel \r on an \m [root@Centos7~]#echo "$name"

\S Kernel \r on an \m

[root@Centos7/bin]#vim ps.sh #!/bin/bash name=parent echo "ps.sh:name $name" son.sh

[root@Centos7/bin]#vim son.sh #!/bin/bash name=son echo "ps.sh:name $name" sleep 100 执行结果: [root@Centos7/bin]#chmod +x * [root@Centos7/bin]#ps.sh ps.sh:name parent ps.sh:name son 全局变量 export name=son
set 变量 env export declare -r declare -x

[root@Centos7~/bin]# name=test;(echo $name ; name=112;echo $name); echo $name test 112 test

[root@Centos7/etc]#cd /etc/;pwd /etc [root@Centos7/etc]#cd [root@Centos7~]#(cd /etc/;pwd) /etc [root@Centos7~]#

[root@Centos7~]#(umask 066; touch /app/f1) [root@Centos7~]#ll /app/f1 -rw-------. 1 root root 0 May 27 14:23 /app/f1 [root@Centos7~]#umask 0022

[root@Centos7/app]#( ls;pwd ) > /app/all.log

[root@Centos7~]#(name=haha;touch /app/$name.bak)

脚本练习 [root@Centos7~/bin]#vim infosystem.sh #Author:sun #Date 2018-5-27
#Description:show system info echo "hello world" echo "The host is hostname" echo "The kernel is uname -r" echo "The cpu is lscpu |grep "Model name:"|tr -s ' ' |cut -d: -f2" cat /proc/meminfo |head -n1 cat /etc/centos-release echo "HardWare is lsblk |grep -w sda |tr -s " "|cut -d' ' -f1,4,6" echo "The IP is ifconfig ens33|grep netmask |tr -s " "|cut -d" " -f3"

[root@Centos7~/bin]# echo $? 0表示成功

[root@centos ~/bin]#i=10 [root@centos ~/bin]#j=10 [root@centos ~/bin]#let sum=$i+$j [root@centos ~/bin]#echo $sum 20 脚本: [root@centos ~/bin]#var=haha;[ -n "$var" ] && echo true ||echo false
true

[root@centos ~/bin]#unset var[ -n "$var" ] && echo true ||echo false false

[root@centos ~/bin]#var=haha; [[ "$var" =~ ha ]] && echo true || echo false true =~ 支持正则表达式: [root@centos ~/bin]#var==haha; [[ "$var" =~ h+ ]] && echo true || echo false true [root@centos ~/bin]#var=haha;[[ "$var" =~ h? ]] && echo true || echo false true

[root@centos ~/bin]#var=hac;[[ "$var" =~ .. ]] && echo true || echo false true [root@centos ~/bin]#var=hac;[[ "$var" =~ ^..$ ]] && echo true || echo false false 判断文件以sh结尾:执行: [root@centos ~/bin]#filename=f1.sh ;[[ "$filename" =~ .sh$ ]] && echo true ||echo false

IP地址的判断: [root@centos ~]#ip="172.18.19.11"; [[ "$ip" =~ ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$" ]] && echo true ||echo false IP地址判断有效性: [root@centos ~]#ip="172.18.19.159" ;[[ "$ip" =~ ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$ ]] && echo true ||echo false

匹配数字全数字: [root@centos ~]#var=132 ; [[ "$var" =~ ^[0-9]+$ ]] && echo true ||echo false

判断正整数: [root@centos ~]#var=1 ; [[ "$var" =~ ^[1-9][0-9]$ ]] && echo true ||echo false true 判断正整数:[root@centos ~]#var=01 ; [[ "$var" =~ ^0[1-9][0-9]*$ ]] && echo true ||echo false

判断手机号: [root@centos ~]#mobile=18512554331; [[ "$mobile" =~ ^1[3456789][0-9]{9} ]] && echo true ||echo false true

系统自带的脚本: [root@centos ~]#vim /etc/rc.d/rc.sysinit 效果如下:

Print a text banner.

echo -en $"\t\tWelcome to " read -r system_release < /etc/system-release if [[ "$system_release" == "Red Hat" ]]; then [ "$BOOTUP" = "color" ] && echo -en "\033[0;31m" echo -en "Red Hat" [ "$BOOTUP" = "color" ] && echo -en "\033[0;39m" PRODUCT=$(sed "s/Red Hat (.) release./\1/" /etc/system-release) echo " $PRODUCT" elif [[ "$system_release" == Fedora ]]; then [ "$BOOTUP" = "color" ] && echo -en "\033[0;34m" echo -en "Fedora" [ "$BOOTUP" = "color" ] && echo -en "\033[0;39m" PRODUCT=$(sed "s/Fedora (.) ?release./\1/" /etc/system-release) echo " $PRODUCT" elif [[ "$system_release" =~ "CentOS" ]]; then [ "$BOOTUP" = "color" ] && echo -en "\033[0;36m" echo -en "CentOS" [ "$BOOTUP" = "color" ] && echo -en "\033[0;39m"

判断数字大小:判断是之前是不是数字: [root@centos ~/bin]#num=10; [ "$num" -eq 10 ] && echo true ||echo false^C [root@centos ~/bin]# [root@centos ~/bin]#num=10; [ "$num" -ne 10 ] && echo true ||echo false false [root@centos ~/bin]#num=10; [ "$num" -ne 10 ] && echo true ||echo false false [root@centos ~/bin]#num=10; [ "$num" -ne 1 ] && echo true ||echo false true

判断变量是否被定义过: [root@centos ~/bin]#unset var ;[ -v var ] && echo true ||echo false [root@centos ~/bin]#var=" "; [ -v var ] && echo true ||echo false

查看颜色: echo -e "\033[1;5;31;43mHi,dangerous!\033[0m" vim /etc/profile.d/env.sh 配置环境

查看目录是否存在 [root@centos ~/bin]$[ -d /app/backa ] ||mkdir /app/backa && cp /etc/passwd /app/ 查看文件是否存在

[root@centos ~/bin]$[ -e /etc/passwd ] && echo true || echo false true

读写权限:

[root@centos ~/bin]$[ -r /etc/passwd -a -w /etc/passwd ] && echo ture ture [root@centos ~/bin]$[ -r /etc/passwd -o -w /etc/passwd ] && echo ture ture

实验:写一个创建用户的脚本,会询问用户用户名及密码,要求密码输入过程不可见 方法一: #!/bin/bash read -p "Please Enter your username: " name echo -n "Please Enter the password for $name: " stty -echo read password stty echo echo useradd $name echo $password |passwd --stdin $name &> /dev/null echo "$name created"

方法二: #!/bin/bash read -p "Please Enter your username: " name read -sp "Please Enter the password for $name: " password echo useradd $name echo $password |passwd --stdin $name &> /dev/null echo "$name created"

多条件判断 方法一: [liubei@instructor_v7(nanyibo) ~]$ [ -r /app/passwd ] || [ -w /app/passwd ] && echo true [liubei@instructor_v7(nanyibo) ~]$ [ -r /app/passwd ] && [ -w /app/passwd ] && echo true

方法二: [liubei@instructor_v7(nanyibo) ~]$ [ -r /app/passwd -a -w /app/passwd ] && echo true [liubei@instructor_v7(nanyibo) ~]$ [ -r /app/passwd -o -w /app/passwd ] && echo true

[liubei@instructor_v7(nanyibo) ~]$ [ ! -e /etc/passwda ] && echo true true

实验:写一个创建用户的脚本,会询问用户用户名及密码,要求密码输入过程不可见 方法一: #!/bin/bash read -p "Please Enter your username: " name echo -n "Please Enter the password for $name: " stty -echo read password stty echo echo useradd $name echo $password |passwd --stdin $name &> /dev/null echo "$name created"

方法二:静默输出 #!/bin/bash read -p "Please Enter your username: " name read -sp "Please Enter the password for $name: " password echo> /dev/null echo "$name created" useradd $name echo $password |passwd --stdin $name & 输入5个数:

[root@centos /app]$read -N 5 -p "hello: " name hello: 12345[root@centos /app]$echo $name 12345

实验:输入密码小于等于8位数:

第8天:

判断文件 [root@centos ~]$touch a [root@centos ~]$chmod g+s a [root@centos ~]$[ -g a ] && echo true true [root@centos ~]$[ -g a ] && echo true^C [root@centos ~]$touch a.txt [root@centos ~]$[ -g a.txt ] && echo true [root@centos ~]$ls /proc/$$/fd 0 1 2 255 compress 压缩文件: umask:chmod 000 rw 权限会 被修改:

666-umask=600 gzip : -c; 压缩文件原文件不变,权限会根据uMask 变化 -cd 标准输出,umask 会变 gzip :可以改变压缩比 for n in {1..9};do gzip -$n -c passwd >passwd.gz.$n;done while true ;do ;done 压缩比:默认是6.数字越小,压缩比越小速度快 gzip -$n -c passwd bzip2: bzip2 -k passwd :原文件不丢,权限也在 bzip2 -dk passwd : bzip2 -cd passwd : 解压缩文件,预览解压后的文件标准输出

文件描述符:打开一个文件有多少个描述符: [root@centos /app]$ls /proc/$$/fd 0 1 2 255 [root@centos /app]$ls /proc/$$/fd |wc -l 4

判断软连接及路径: 先判断是不是软软连接 [root@Centos7~]#[ -d /lib ] &&echo true
true [root@Centos7~]#[ -L /lib ] &&echo true
true 判断所有者和所属组:

[root@centos ~]$[ -O /etc/passwd ] && echo true
true [root@centos ~]$[ -G /etc/shadow ] && echo true true

[root@centos ~]$a=10;[ $a -eq 10 ] && echo true ||echo false true

判断文件是不是可写,可读:

[root@centos ~]$[ -r /etc/issue ] && [ -w /etc/shadow ] && echo true true [root@centos ~]$[ -r /etc/issue ] && [ -x /etc/shadow ] && echo true
[root@centos ~]$[ -r /etc/issue ] && [ -x /etc/shadow ] && echo true 判断空文件赋值: vim /etc/rc.d/rc.sysinit if [ -z "$HOSTNAME" -o "$HOSTNAME" = "(none)" ]; then HOSTNAME=localhost

查看文件系统:类型 [root@centos ~]$[ -f /bin/cat -a -x /bin/cat ] && cat /etc/fstab root也没有执行权限:切记: [root@centos ~]$[ -x /etc/shadow ] && echo true ||echo false false [ ! -r /etc/shadow ] && [ ! -w /etc/shadow ] && echo true 摩根定律: [root@centos ~]$ [ ! ( -r /etc/shadow -o -w /etc/shadow ) ] && echo true [root@centos ~]$[ ! -r /etc/shadow -a ! -w /etc/shadow ] && echo true 普通用户不能登陆: touch /etc/nologin
echo disable common user login > /etc/nologin 静默输入密码:

[root@Centos7~/bin]#read -s -p "please input your password: " passwd

输入密码的次数: [root@Centos7~/bin]#read -n 5 -p "please input you name: " username

判断yes /no

[root@Centos7~]#yes=yn;[[ "$yes" =~ ^Yy?$ ]] && echo true ||echo false
false

[root@Centos7~]#n=no; [[ "$n" =~ ^[Nn][oO]?$ ]]&& echo true ||echo false
true

整体判断: [root@Centos7~]#n=n; [[ "$n" =~ ^Yy?$|^[Nn][oO]?$ ]]&& echo true ||echo false
true

判断yes no 脚本: read -p "Do you agree ? yes or no: " yes

[[ "$n" =~ ^Yy?$|^[Nn][oO]?$ ]]&& echo true ||echo false

判断yes no 的脚本 #!/bin/bash read -p "Do you agree ? yes or no: " choice choice=$(echo "$choice" | tr "[ :upper: ]" "[ :lower: ]") [ "$choice" = "yes" -o "$choice" = "y" ] && echo "you enter yes " && exit 1 [ "$choice" = "no" -o "$choice" = "n" ] && echo "you enter no " && exit 2 || echo "you enter wrong "
最后一行命令结束,自动退出终端,切记:

[root@Centos7/app]#echo "your cost : $5.00" your cost : $5.00

函数库: /etc/rc.d/init.d/functions 查看文件系统: /etc/fstab

User specific environment and startup programs

#cat .bash_profile 更改路劲 PATH=$PATH:$HOME/bin:/home/sun

User specific aliases and functions

vim ~/.bashrc

source 与bash 的区别 source 影响当前进程: bash 开启子进程: [root@Centos7~/bin]#source procss_bash.sh var=haha var=xxx [root@Centos7~/bin]#bash procss_bash.sh var= var=xxx [root@Centos7~/bin]#

用户退出提示:

~/.sh_logout

echo -e "\033[1;5;31;43m 辛苦了亲!每天好心情,day day up!\033[0m" $-变量值: [root@Centos7~]#echo $- himBH h hash i 交互式: m:monitor: b: braceexpand 大括号扩张 h:history

脚本中: [root@Centos7~/bin]#f1.sh hB

数据库查找: locate [root@Centos7~]#ll /var/lib/mlocate/mlocate.db

更新数据库: [root@Centos7~]#ll /var/lib/mlocate/mlocate.db -rw-r-----. 1 root slocate 3588970 May 31 09:27 /var/lib/mlocate/mlocate.db [root@Centos7~]# updatedb [root@Centos7~]#locate newf1.sh /root/newf1.sh locate 支持正则表达式:

[root@Centos7~/bin]# locate -n 3 -r ".conf$" /app/httpd-2.4.33/docs/doxygen.conf /app/httpd-2.4.33/docs/conf/httpd.conf /app/httpd-2.4.33/docs/conf/extra/httpd-autoindex.conf

find 命令: 查找路径: 查找条件 处理动作 查找最大2层,最小2层 [root@Centos7~/bin]#find /etc -maxdepth 2 -mindepth 2 -name "network" /etc/sysconfig/network

查看链接数: [root@Centos7/app]#find -samefile a ./a ./d1/aa

查找文件以.sh结尾 [root@Centos7/app]#find /root -regex "..txt$" 查看问价以.sh结尾或.txt结尾的文件 根据属组查找:
-user USERNAME:查找属主为指定用户(UID)的文件 -group GRPNAME: 查找属组为指定组(GID)的文件 -uid UserID:查找属主为指定的UID号的文件 查找所属主 及文件 [root@Centos7~]#find /home -user sun -name "
.sh" 即不是王的文件也不是.sh 结尾的文件 [root@Centos7/app]#find /home !( -user sun -o - name "*.sh") find /home -not -user wang -o -not -user bai 不是王的,或者不是白的,那就是全部文件 ias.txt ./d1 [root@Centos7/app]#dd if=/dev/zero of=f1 bs=1 count=1024 生成文件 查看1k 的文件: [root@Centos7/app]#find -size lk 查看文件大小来查看; 6k 6k:(5k,6k] -6k:[0,5k] +6k:(6k,无穷] 大于50M 小于100根目录下 find / -size +50m -size -101m

根据时间查找文件: -atime

:[#,#+1)

+#[#+1,无穷] -#[0,#) -amin -mmin -cmin

find /etc/ -mmin -l 一分钟时间
-mtime -ctime 权限查找:权限644,文件类型为 f (精确匹配) [root@Centos7/app]#find -perm 644 -type f ./f1 并且: [root@Centos7/app]#find -perm -444 -type f [root@Centos7/app]#find -perm -440 -type f ./f1 (0:表示不关心) 或 [root@Centos7/app]#find -perm /444 -type f ./f1 任何人都投写权限 [root@Centos7/app]#find -perm /222 -type f ./f1 全部匹配:表示不关心 [root@Centos7/app]#find -perm -000 -type f ./f1 find -perm /002 -002 -type f 一样的 一位 找到文件删掉: [root@Centos7/app]#find -perm -020 -type f -delete 文件重定向: 动作: [root@Centos7/app]#find -perm -020 -type f -ls > list.txt 文件备份:提示:不提示: [root@Centos7/app]# find -name ".conf" -ok cp {} /root/{}.bak ; 不提示: [root@Centos7/app]#find -name ".conf" -exec cp {} /root/{}.bak ; 删除查找到的文件: [root@Centos7/app]#find -name "*.conf" -exec rm {} ; 批量创建文件: echo test{1..10}|xargs touch 压缩: gzip passwd gzip -d passwd.gz

bzip2 passwd bzip2 -d passwd.bz2 bzip2 -k passwd 保留源文件

xz passwd xz -d passwd.xz 压缩文件: zip -r sysconfig(目标文件) /testdir/sysconfig (源文件) unzip [root@Centos7/app]#cat /var/log/message |zip messages.zip - (代表前面的内容) 打包文件: [root@Centos7/app]#tar -cvf /app/sysconfig.tar /etc/sysconfig/ (将/etc/syscinfig 打包)

查看文件大小: [root@Centos7/app]#du -sh /etc/sysconfig tar 工具打包: 打包并压缩: [root@Centos7/app]#tar -zcvf /app/sysconfig.tar.gz /etc/sysconfig/ [root@Centos7/app]#tar -Jcvf /app/sysconfig.tar.xz /etc/sysconfig/ [root@Centos7/app]#tar -jcvf /app/sysconfig.tar.bz2 /etc/sysconfig/ 查看压缩文件有哪些东西: tar -tvf /app/sysconfig.tar.xz 解压缩文件: [root@Centos7/app]#tar -xvf /app/sysconfig.tar.bz2 -C /app 批量查看文件类型; [root@Centos7/app]#file -f filelist.txt vim 读取文件: [root@Centos7/app]#:r! ls /root/anacond a-ks.cfg 指定打包文件; [root@Centos7/app]#tar -T filelist.txt -Jcvf a.tar.xz tar: Removing leading `/' from member names /root/anaconda-ks.cfg /etc/issue

sed 脚本: 经典多行编辑: [root@Centos7~]#sed -e '/^#EnableMMAP\ off/s/#//' -e'/^<IfModule mime_magic_module>/,/^</IfModule>/ s/#//' /etc/httpd/conf/httpd.conf

多点编辑 sed -e [root@Centos7~]#sed -n -e '2p' -e '3p' f1 2 3 多数行打印: [root@Centos7~]#sed -n -e '2p' -e '6p' f1 2 6 [root@Centos7~]#sed 'n;D' f1 显示奇数行;n 是覆盖的意思 [root@Centos7~]#sed -n '1~2p' f1 显示奇数行: [root@Centos7~]#sed -n 'n;p' f1 显示偶数行; [root@Centos7~]#sed -n '2~2p' f1 除了第二行全部删掉:

[root@Centos7~]#sed '2!d' f1 2 从文件中读取命令到。bashrc 文件文件中: [root@Centos7~]#sed '/User/r /root/bin/sed.txt' .bashrc 脚本重定向: cat > /root/bin/sed.txt << end alias p=poweroff alias cdnet="cd /etc/sysconfig/network-scripts" end 全局添加东西; [root@Centos7~/bin]#sed -r 's/(.*)/ \1&mage/g' /etc/passwd 替换

[root@Centos7~]#sed -r 's@/(bin/bash)$@/s\1@g' /etc/passwd 替换: 改写网卡名字: /etc/default/grub 影响网卡名字: sed -r 's@(GRUB_CMDLINE_LINUX=".*)"$@\1 4566666xyzzzzz"@' /etc/default/grub

偶数行: [root@Centos7/media/Packages]#seq 1 10 |sed -n 'n;p' [root@Centos7/media/Packages]#sed -n '2~2' rpm架构: [root@Centos7/media/Packages]#ls | egrep -o "[^.]+.rpm"|cut -d. -f1 |sort |uniq -c

2、 [root@Centos7/media/Packages]#ls |sed -r 's/..(.).rpm$/\1/' |sort |uniq -c 2141 i686 3076 noarch 1 TRANS.TBL 4374 x86_64

3、[root@Centos7/media/Packages]#ls |rev |cut -d. -f2 |rev |sort |uniq -c 2141 i686 3076 noarch 1 TRANS 4374 x86_64 4、将文本中的n和n+1行合并为一行,n 为奇数行:

cat seq 1 10 |sed "/^$/d;G" 删除空行,然后给每行添加一个空行:

stream editor 行编辑器 sed gnu 工具 sed [option].... "script"(地址命令) sed 语法 [root@Centos7~]#sed -n 'p' /etc/issue

\S Kernel \r on an \m

[root@Centos7~]#ifconfig |sed -n '2p' |tr -s " "|cut -d" " -f3 192.168.137.142 sed 支持标准输入: sed -n "2p" [root@Centos7~]#sed -n '2p' a b b c d 显示文件行号" [root@Centos7~]# nl /etc/fstab 地址: [root@Centos7~]#sed -n "8,12p" /etc/fstab

[root@Centos7~]#sed -n "8,+3p" /etc/fstab 8行之后3行打印出来 [root@Centos7~]#sed -n "3,/^f/p" /etc/passwd^C [root@Centos7~]#sed -n '/^r/,/^f/p' /etc/passwd 奇数偶数: [root@Centos7~]#cat -n /etc/passwd |sed -n '3 ~2p' [root@Centos7~]#sed -n '3~2p' /etc/passwd [root@Centos7~]#sed -n '2~2p' /etc/passwd

添加空格:之后添加数字 [root@Centos7~]#cat -n /etc/passwd |sed '3,6a\ ============' 在第几行添加文本: sed '7a alias cdnet="cd /etc/sysconfig/network-scripts"' ~/.bashrc

最后一行添加文本,并且备份: [root@Centos7/app]# sed -i.bak '$a alias cdnet="cd /etc/sysconfig/network-scripts"' ~/.bashrc 替换:文本添加内荣: [root@Centos7~]#sed '/^# Source/c\xxxxxx x' ~/.bashrc

修改配置文件; [root@Centos7~]#sed -i '/^SELINUX=/c\SELINUX=disabled' /etc/selinux/config

多行添加内容: [root@Centos7~]#sed '/^# Source/ixxxxxx\nyyyy\nzzzz' ~/.bashrc sed :正则表达式计算

[root@Centos7~]#sed -r 's@(/bin/bash)@#\1@g' /etc/passwd 写入到文件中: [root@Centos7~]#sed '/^alias/w /app/alias.txt' .bashrc

显示所在的行:

[root@Centos7~]#sed '/^alias/='.bashrc 打印用户以bash结尾的行: [root@Centos7~]#sed -n '/bash$/!p' /etc/passwd 全局替换; [root@Centos7~]#sed 's@/bin/bash$@/sbin/nologin@g' /etc/passwd 替换: [root@Centos7~]#sed -i 's@SELINUX=disabled@SELINUX=enforcing@' /etc/selinux/config sed 截取ip 地址: [root@Centos7~]#ifconfig ens33|sed -n '2p'|sed 's@.inet@@g'| sed 's@netmask.@@g' 192.168.137.142 [root@Centos7~]#ifconfig ens33|sed -n '2p'|sed -r 's@.inet (.) netmask.@\1@' 192.168.137.142 取ip 地址: [root@Centos7~]#ifconfig |sed -n '2p'|sed -r 's@(.inet )(.)( net.)@\2@' [root@Centos7~]#ifconfig |sed -r '2!d; s@(.inet )(.)( netmask .*)@\2@'
192.168.137.142

[root@Centos7~]#ifconfig |sed -n '2p'|sed -r 's@.inet @@' |sed -r 's@ netmask.@@' 192.168.137.142

经典:配置文件: [root@Centos7~]#sed -n '/^b/,/^f/p' /etc/passwd bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin 经典去除配置文件前面的#号:

ip 后向引用: [root@Centos7~]#ifconfig ens33|sed -r -n '2s@.inet (.) netmask.*@\1@p'
192.168.137.142

取版本号: [root@Centos7~]#sed -n -r 's@.release ([^.]+).@\1@p' /etc/centos-release
7 在后面补文字: sed -r 's@(quiet )@\1i love you @' /etc/default/grub

替换双引号: [root@Centos7~/bin]#sed -r 's/(")$/ *****\1/p' /etc/default/grub 包含: [root@Centos7~/bin]#sed -r '/LINUX/s/(")$/ *****\1/p' /etc/default/grub

取出ip [root@Centos7~/bin]#ifconfig ens33 |sed -r '2!d ; s/.inet //;s/ netmask.//' 192.168.137.142

取出基名:

[root@Centos7~/bin]#echo "/etc/sysconfig/network-scripts/" |sed -nr 's@./(.+)/?@\1@p'
network-scripts/ 取目录名:实验效果 [root@Centos7~/bin]#echo "/etc/sysconfig/network-scripts/" |sed -nr 's@(.
/)(.+)/?@\1@p'
/etc/sysconfig/ [root@Centos7~]#echo '/etc/sysconfig/network' |sed -r 's@(./)([^]+/?)@\1@' /etc/sysconfig/ [root@Centos7~]#echo '/etc/sysconfig/network' |sed -r 's@(./)([^]+/?)@\2@' network 后向引用

[root@Centos7/app]#cat mobile.txt |sed -r 's@([0-9]{4})([0-9]{3})([0-9]{3})@\1****\3@'

yum :abi是指:运行在操作系统上,必须遵守操作系统标准: api: 涉及到库的标准; 不同的操作系统,不同的ABI 静态库:插入一个库到程序中: 动态库:调用动态库: ldd /bin/ls seq 1 10 |xargs -n2 查找文件: find -name "*.c" |wc sed -i 's///g' cat /etc/httpd/conf/httpd.conf 很重要的配置文件

[root@Centos7/app]#sed -r 's/^[^#]|^$/#/g' /etc/fstab 解决软件包的问题: [root@Centos7/misc/cd/Packages]#ls *.rpm |egrep -o "[^.]+.rpm$"|cut -d. -f1 |sort|uniq -c

破坏安装包,怎么解决问题 : [root@Centos7/misc/cd/Packages]#rm /usr/bin/tree rm: remove regular file ‘/usr/bin/tree’? y [root@Centos7/misc/cd/Packages]#rpm -i vsftpd-3.0.2-22.el7.x86_64.rpm
[root@Centos7/misc/cd/Packages]#rpm -i tree-1.6.0-10.el7.x86_64.rpm package tree-1.6.0-10.el7.x86_64 is already installed 解决方案:覆盖安装 [root@Centos7/misc/cd/Packages]#rpm -ivh --replacepkgs tree-1.6.0-10.el7.x86_64.rpm 查看时间: ll /var/lib/rpm

判断安装包名: [root@Centos7/misc/cd/Packages]#rpm -q vsftpd &> /dev/null && echo true ||rpm -ivh vsftpd-3.0.2-22.el7.x86_64.rpm &> /dev/null true 查看包来源哪个文件: [root@Centos7/misc/cd/Packages]#rpm -qf /etc/passwd setup-2.8.71-7.el7.noarch

:显示包的安装信息 rpm -qi bash rpm -ql bash 校验包: rpm -import/run/media/root/centos \7\x86/RPM -GPG-KEY-CENTOS-7 rpm -k tree.....rpm

centos6编译安装httpd2.2

准备工作: 1 关闭firwalld centos6: service iptables stop; chkconfig iptables off centos7: systemctl stop firewalld; systemctl disable firewalld

2 关闭SElinux setenforce 0 vim /etc/selinux/config SELINUX=disabled

1 yum groupinstall "development tools" yum install openssl-devel

2 download src tar xvf httpd-2.4.33.tar.bz2

3 cd httpd-2.2.34 cat README cat INSTALL

4 ./configure --help ./configure --prefix=/app --sysconfdir=/etc/httpd22 --enable-ssl

5 make -j 4 && make install

6 vim /etc/profile.d/env.sh PATH=/app/bin:$PATH

. /etc/profile.d/env.sh

7 apachectl start

yum实验: ps aux|grep yum kill- 9 2035 关闭进程;

关闭防火墙: 指定Ip 地址; centos 7 systemctl stop firewalld systemctl disable firewalld centos 6 chkconfig iptables off [root@centos /etc/yum]#service iptables stop

rpm -ql vsftpd rpm -ql httpd 启动共享服务: systemctl start vsftpd 查看防火墙: iptables -nvL 修改:selinux sed -i 's/SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config setenforce 0 查看selinux 是否更改好了 getenforce permissive


yum 的配置: [base] name=centos 6.9 base baseurl=ftp://172.18.119.186/pub/centos/$releasever/os/$basearch gpgkey=ftp://172.18.119.186/pub/centos/$releasever/os/$basearch/RPM-GPG-KEY-Cen tOS-6 查看进程:判断安装包存在不存在: package=tree;rpm -q $package &> /dev/null && echo true|| yum install $package - y & >/dev/null 添加光盘: 扫描 [root@Centos7/sys/class/scsi_host/host2]#echo '- - -' > /sys/class/scsi_host/host0/scan

createrepo .创建repodata repodata

创建app 包 cp /var/ftp/pub/centos/7/os/x86_64/Packages/lftp-4.4.8-8.el7_3.2.x86_64.rpm . createrepo . 创建元数据: [root@Centos7/var/ftp/pub/app/repodata]#ls yum clean all :清空缓存

第四周: track :磁道:1024 chs c:柱面:255 h:磁头 255 s:扇区 :63 (512字节) [root@Centos7/app]#echo 512631024*255 /1024/1024|bc 8422686720 =8G LBA : 48位寻址 磁盘分区: 1分区 2创建文件系统 3挂载;分配目录名 ss -ntl :查看防火墙 mbr :master boot record 主分区引导记录

2^32=4G echo 51263255/1024|bc=8m 2种分区方式: mbr gpt 512:0扇区 446 boot loader 64: 分区表 16:标识一个分区 2: 55aa mbr=[root@Centos7/app]#echo 5122^32/1024/1024/1024 |bc 2048 4个主分区:3个主分区+1扩展分区(N个逻辑分区) 一个柱面的方式: [root@Centos7/app]# echo 51263*255/1024|bc
8032

[root@Centos7/app]#hexdump -C /dev/sda -n 512 备份:放到网络上: [root@Centos7/app]#dd if=/dev/sda of=/app/mbr-bak bs=1 count=512 恢复:mbr dd if=/app/mbr-bak of=/dev/sda bs=1 count=512

[root@Centos7/app]#hexdump -C /dev/sda -n 512 -v 如何备份到安全的地方: [root@Centos7/app]#scp /app/mbr-bak 172.18.119.161:/app/ dd if=/dev/zero of=/dev/sdd bs=1 count=2 skip=510 seek=510 55aa 文件系统: df -T [root@centos ~]#ls /lib/modules/uname -r/kernel/fs

[root@centos /lib/modules/2.6.32-696.el6.x86_64/kernel/fs/ext4]#ls ext4.ko ext4 xfs >>>虚拟文件系统 ls >>>vfs >>ext4 用户 后台 cache: 读 从硬盘上读 vfs 虚拟文件系统 buffer:写 从内存写入硬盘 创建文件系统 mkfs
centos 6 partx -a partx -d --nr blkid /dev/sda1 uuidgen 32位16进制;一共128位 mkfs -t ext4/dev/sdb1 创建文件系统 blkid /dev/sdb1 查看文件系统 blkid /dev/sr0 blkid [root@centos ~]#mkfs.ext4 /dev/sdb2

tune2fs -l /dev/sda1 查看ext4功能有日志功能ext2没有日志功能 tune2fs -o acl/dev/sda1 添加acl fsck /dev/sdb1:修复文件系统 簇文件大小一个字节1 4096最小的单位 mknod /app/f2 c 1 5 创建快文件 非交互式创建分区: [root@Centos7/app]#echo -e "n\np\n\n\n+2G\nw\n" |fdisk /dev/sdc 查看分区; [root@Centos7/app]#fdisk -l /dev/sdc 创建分区:多行重定向 [root@Centos7~]#fdisk /dev/sdc << end

n p

+3G W end 块的元数据信息放在superblock (超级快) dumpe2fs /dev/sda2 mkfs.ext4 /dev/sdb2 -b 1024 随机数: tr -cd 'a-zA-Z0-9_' < /dev/random |head -c 16 fsck /dev/sdb1 -y 修复数据

mount挂载: 同一个时间只能挂载一个设备 多个只能显示一个 一个设备能挂载多个文件夹 更改卷标 [root@centos ~]#e2label /dev/sdb2 /data/sdb2 挂载点是空文件

逻辑卷:操作 物理卷 pvcreate /dev/sda6 pvcreate /dev/sdc1 创建眷族: vgcreate -s 16M(指定卷组pe16M) vg0 /dev/sd{c1,a6} 创建逻辑卷: lvcreate -n lv0 -l l00 vg0 (小l pe块的大小 ) lvcreate -n lv1 -l 100%FREE vg0 分区之后 格式化: mkdir /mnt/lv0 mkfs.ext4 /dev/vg0/lv0 blkid 写入配置文件 mount -a 挂载 缩减逻辑卷 卸载 umount /dev/vg0/lv0 检查逻辑卷的完整性 e2fsck -f /dev/vg0/lv0
删除逻辑卷 resize2fs /dev/vg0/lv0 10G 减少逻辑卷的空间 lvreduce -L 10G /dev/vg0/lv0 挂载 mount -a df -h

删除vg中的pv 创建pv pvcreate /dev/sdc2 添加到vg0组里 vgextend vg0 /dev/sdc2 移动sde -> sdc2(allocated pe 移动空间) pvmove /dev/sde 组移走sde: vgreduce vg0 /dev/sde 移走 sde pvremove /dev/sde

逻辑卷移动到的别的主机上

破坏文件系统: dd if=/dev/zero /dev/sda 格式化 创建riad mdadm -C /dev/md0 -a yes -l5 -32 -n3 -x1 /dev/sd{b,c,d,e}1

raid 5实现: 1 分区,磁盘 大小一致 2 mdadm -C /dev/md0 -a yes -l5 -n 3 -x1 -c32 /dev/sd{b,c,d,e}1 3 mkfs.ext4 /dev/md0 4 vim /etc/fstab 5 mdadm -Ds /dev/md0 > /etc/mdadm.conf 6 maadm -S /dev/md0 (umount) 7 mdadm -A /dev/md0 active 8 mdadm /dev/md0 -f /dev/sde1 损坏 9 mdadm /dev/md0 -r /dev/sde1 删除 10 mdadm /dev/md0 -a /dev/sde1 加 raid 1/0 mdadm -C /dev/md0 -a yes -l1 -n2 /dev/sd{b,c} mdadm -C /dev/md1 -a yes -l1 -n2 /dev/sd{d,e} mdadm -C /dev/md2 -a yes -l0 -n2 /dev/md{0,1} mdadm -C /dev/md0 -a yes -l10 -n4 /dev/sd{b,d,d,e}

resize2fs /dev/md0 统一文件系统 centos 6 xfs_growfs /mnt/raid centos7 统一文件系统 文件系统:网络文件系统 集群文件系统 分布式文件系统 日志: journal 对文件记录有哪些操作,变化的数据记录在在journal 日志里面 读取日志的内容写到硬盘里面:相当于逻辑卷的快照 采用有日志的文件系统 文件系统要有对应的驱动模块: ext4.ko

创建文件系统: mkfs. blkid /dev/sdb1 tune2fs -l /dev/sdb2 查看文件系统ext4 tune2fs -o/dev/sdb1 :添加acl 权限 文件夹共享权限灵活 文件系统的信息 超级快和inode table

mbr:512字节 446 64(4*16的分区表) 2(55 aa

partition 1 (boot sector启动扇区 ext4 file system文件系统) 文件系统 分成快组 block group 0 (最小使用单位)快组管理磁盘空间

block group :超级快,快组从哪到哪分割,分区的重要信息放在超级快里,分区的元数据,属性

位图:标记空间使用还是没有使用

文件的节点表: inode table 文件的节点编号,属性 大小,权限元数据信息 data blocks 数据信息 文件系统被破坏:显示 filesystem statae 显示noclean 修复文件系统

创建分区: n \n(分区) p \n(选择分区) \n(扇区)+1G \n(最后扇区 ) w\n (保存) 非交互式: echo -e 'n\np\n\n\n+1G\nw\n' |fdisk /dev/sdc

创建分区: [root@Centos7~]#fdisk

n p 2

+1G W end

swap 格式化: swapon -s dd if=/dev/zero of=/dev/sdb1 :消除一切烦恼 (挂着swap ) 文件系统管理:

bios程序 mbr分区 uefi程序 gpt分区 partprobe 柱面: 8m=512631024/1024 所有硬盘:8G:51263255*1024/1024/1024

文件系统: 它负责为用户建立文件,存入,读出,修改,转储文件,控制文件的存取 安全控制,日志,压缩,加密 支持文件系统:ls /lib/modules/uname -r/kernel/fs 有 快组: dumpe2fs:块分组管理,32768块-h:查看超级块信息,不显示分组 指定块的大小 mkfs.ext4 /dev/sde1 -b 1024

Block count: 1060256 Reserved block count: 53012 保留的空间5%

Reserved blocks uid: 0 (user root) Reserved blocks gid: 0 (group root) 1t的%5是50G 文件系统: mkfs.ext4 /dev/sde1 -b 1024 -m 0.1 节点与块 [root@centos ~]#mkfs.ext4 /dev/sde1 -b 4096 -i 1024 说明节点数比块的数量还要多 i :为数据空间中没多少个字节创建一个inode ;此大小不应小于block的大小 [root@centos ~]#mkfs.ext2 /dev/sde1 -b 1024 -m 0.1^C [root@centos ~]#toune2fs -o(大)has_journal /dev/sde1 增加日志文件(修改文件系统) 的东西创建文件系统不能该,有的可以该 block size 卷名 tune2fs -o (增加日志) mkfs.ext4 /dev/sde1 -b 2048 -L /data/sde1 卷标 dir=swap; blkid -U egrep $dir < /etc/fstab|cut -d" " -f1 |cut -d"=" -f2
dir=swap; blkid -U egrep $dir < /etc/fstab|sed -r 's/UUID=([^ ]+) .*/\1/'

ext4 修改卷标 /data/sde1 [root@centos ~]#(挂载点名) [root@centos ~]#e2label /dev/sde1 (设备名)/app/sde1 修改uuid tune2fs -U uuidgen /dev/sde1 uuid 是128位

dumpe2fs /dev/sde1

破坏分区: dd if=/dev/zero of=/dev/sdb1 bs=1M count=20 tune2fs -l /dev/sdb1 找回数据,修复文件系统:fsck /dev/sde1 fsck /dev/sde1 -y 取消挂载

e2fsck -f /dev/sdb1 不要在挂载状态 xfs_repair 修复文件系统 mount: umount /dev/sdb2 设备名: 挂载点(/app/sdb2) e2lable /dev/sdb2 /app/sdb2 mount LABEL=/app/sde1 /app/sde1 卷标名就是设备名 mount UUID="a64dd5c5-6f66-4449-aea4-7061571b2520" /app/sde2 /dev/sde1 1043460 8198 982250 1% /app/sde1 /dev/sde1 1043460 8198 982250 1% /app/sde2

挂载不显示: mount -n /dev/sde1 /app/sde1 cat /proc/mounts ll /etc/mtab 6 ll /etc/mtab /proc/self/mounts Default mount options: acl 新分区挂载acl 卸载:umount /app/sde1
设置ACL:tune2fs -o acl /dev/sde1
挂载:mount /dev/sde1 /app/sde1 查看:tune2fs -l acl /dev/sde1 设置:setfacl -m u:sun:0 f1 查看:getfacl f1 卸载:umount /app/sde1
tune2fs -o ^acl /dev/sde1 卸载 卸载:umount /app/sde1 不成功

重新挂载acl,更改挂载选项 mount -o acl /dev/sde1 /app/sde1 mount -o noacl,remount /dev/sde1 /app/sde1 重新挂载: [root@centos ~]#mount -o remount,ro /app/sde1

fuser -v /app/sde1 fuser -km /app/sde1 (使用中强制退出) lsof /app/sde1 (查看谁在使用) 取消挂载: 广播一下: findmnt /app/sdb1 查看设备有没有挂东西
脚本判断挂载不挂载: [root@centos ~]#findmnt /app/sde1 &>/dev/null ||mount /dev/sde1 外来设备有危险可以执行noexec mount -o remount,noexec /app/sde1 mount -o exec,remount /dev/sde1 /app/sde1 重新挂载 设备文件的使用 [root@centos ~]#mount -o remount,nodev /app/sde1 mknode zero c 1 5 dd if=/app/sde1/zero of=/root/f1 bs=1M count=1 hexdump -C f1 -n 512 ll f1 -h #mount -o remount,nodev /app/sde1 [root@centos ~]#mount -o remount,dev /app/sde1 文件模拟分区: 文件模拟分区当u盘使用: 快文件: [root@centos /app/sde1]#dd if=/app/sde1/zero of=/root/p1 bs=1M count=100 mkfs.ext4 /root/p1 /root/p1 95054 1551 88383 2% /mnt 拷贝到别的系统盘: umount /mnt scp p1 172.18.119.159:/root mount -o /root/p1 /mnt (-o 支持文件挂载) mount -o loop p1 /mnt 写入到etc/fstab ls /dev/loop* 块设备都可以创建 mknod /dev/loop8 b 7 8 [root@centos /mnt]#ll /dev/loop99 brw-rw----. 1 root disk 7, 99 Jun 10 08:40 /dev/loop99 更改内核文件; vim /boot/grub/grub.conf max_loop=100 文件夹:-B 文件:-o loop default:rw,suid,dev设备,exec脚本,auto,nouser,async

tune2fs -o acl /dev/sde1元数据是存到硬盘上面的 硬盘也有元数据:

代表系统的完整性: 1 2 3

mount -a 自动挂载 swap 文件系统管理: [root@Centos7~]#swapon -s
Filename Type Size Used Priority /dev/sda5 partition 2097148 0 -1 /dev/sda3 partition 20971516 0 -2 [root@Centos7~]#blkid
/dev/sr0: UUID="2017-09-06-10-53-42-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" /dev/sr1: UUID="2017-03-28-13-24-36-00" LABEL="CentOS_6.9_Final" TYPE="iso9660" PTTYPE="dos" /dev/sda1: UUID="3a72b4f4-4d61-4d7f-be09-eb908a334097" TYPE="xfs" /dev/sda2: UUID="7919257a-3c51-41cf-af9d-42ab20ebdeaa" TYPE="xfs" /dev/sda3: UUID="d2218468-49fe-40b5-b0bf-785edd23b2b8" TYPE="swap" /dev/sda5: UUID="741577a4-548e-432f-80be-0e0ff3ff78c9" TYPE="swap" [root@Centos7~]#umount /dev/sda3 umount: /dev/sda3: not mounted

swap :创建分区: fdisk -l /dev/sda fdisk /dev/sdb L :82 创建文件系统 mkswap /dev/sdb -L swap_sdb1 blkid 挂载 cat /etc/fstab mount -a 普通

swapon -a swap free swapon -s 优先级: cat /etc/fstab defaults ,pri=100 优先级大 就第一个生效 swapoff /dev/sdb1 禁用 free swapon -a 优先级生效: dd if=/dev/zero of=/dev/null bs=2024M count=1 实现swap 的功能 超过2个G的数据 没有swap 怎么办: 创建文件swap dd if=/dev/zero of=/swapfile bs=1024M count=1 ll /swapfile 创建文件系统 mkswap /swapfile 挂载: cat /etc/fstab /swapfile swap swap defaults 0 0 swapon -a 挂载: swapon -s 删除: swapoff /dev/sdb1 swapon -s vim /etc/fstab 删掉: free -h rm -f /swapfile fdisk /dev/sdb 删除分区:

外围设备: eject 弹出 制作文件系统: cp /dev/sr0 /data/centos7.iso file /data/centos7.iso dd if=/dev/sr0 of=/app/centos.iso 将目录打包成镜像文件 mkisofs -r -o etc.iso /etc/ centos 6 ls /misc/cd/Packages/*.rpm |wc -l

把2张光盘挂载到同一个系统里面: 创建光盘:centos6 mkdir /centos6 cp /mnt/cdrom/* /centos6/ -a 将2张盘挂到/mnt/cdrom 下,将内容全部考到文件centos6 下 mkisofs -r -o /app/centos-6.9-x86_64-Everything.iso /centos6/

不能做引导光盘: 下载:mkdvdiso.sh wiki.centos.org

制作方法 : centos6 centos-6.9-x86_64-Everything.iso mkdvdiso.sh source /destination/DVD.iso hexdump -C /dev/sda -n 512 -v dd if=/dev/ada of=mbr bs=1 count=512 dd if=/dev/zero of=/dev/sda bs=1 count=64 skip=446 seek=446 从光盘拷贝iso 镜像 dd if=/dev/cdrom of=/root/cd.iso 销毁磁盘数据 dd if=/dev/urandom of=/dev/sda1

修复硬盘: dd if=/dev/sda of=/dev/sda raid : 实验:raid5 搭建分区环境 fdisk /dev/sdb dd if=/dev/sdb1 of=/dev/sdc1 bs=1 count=66 skip=446 seek=446 partx -a /dev/sdc dd if=/dev/sdb of=/dev/sdc bs=1 count=66 skip=446 partx -a /dev/sdd partx -a /dev/sde 创建raid5 mdadm -C /dev/md0 -a yes -l5 -c32 -n3 -x1 sd{b,c,d,e}1

mdadm -D /dev/md0

blkid 创建文件系统 ll /dev/md0 mkfs.ext4 /dev/md0 -L raid5 ( 卷标) 查看文件系统 blkid /dev/md0 挂载:永久保存 vim /etc/fstab r! blkid /dev/md0 配置raid UUID=8615407b-7860-4a9f-abbc-e7368503367a /mnt/raid ext4 defaults 0 0
自动挂载 mount -a df -h 创建配置文件: mdadm -Ds /dev/md0 > /etc/mdadm.conf 比较速度: 原来硬盘; 写: raid5:dd if=/dev/zero of=/mnt/raid/f1 bs=1M count=1024 conv=fdatasync 硬盘:dd if=/dev/zero of=f1 bs=1M count=1024 dd if=/dev/zero of=/app/f1 bs=1M count=1024 conv=fdatasync 读: 硬盘:dd if=/mnt/raid/f1 of=/dev/null 把数据读到垃圾箱: raid:if=/mnt/raid/f2 of=/dev/null 停用:umount /mnt/raid mdadm -S /dev/md0 启用:mdadm -A /dev/md0 查看状态: ll /dev/md0 挂载: mount -a mdadm -D /dev/md0 模拟硬盘损坏: mdadm /dev/md0 -f /dev/sdd1 破坏 mdadm -D /dev/md0 mdadm /dev/md0 -r /dev/sdd1 删除 mdadm /dev/md0 -a /dev/sdd1 添加 模拟真坏; 删除2个硬盘: d e 在添加硬盘好的模拟sda 创建sd6 fdisk /dev/sdb 将sdb2加入到md0里面: mdadm /dev/md0 -a /dev/sdb2 增加新成员: fdisk /dev/sdb
#partx -a /dev/sdb sdb3 raid 是由磁盘组合的可以直接添加 mdam -G /dev/md0 -n4 -a /dev/sdb3 增加容量,没有文件系统,添加文件了,但是没有文件系统 同步文件系统; resize2fs /dev/md0 xfs_growfs /mnt/raid (centos7 挂载点)

cat /proc/mdstat产看raid 卸载不要raid了 umount /mnt/raid 配置文件不要了 #uuid 注释掉 ll /dev/md0 查看要删掉哪些raid硬盘 mdadm -D /dev/md0 rm -f /etc/mdadm.conf mdadm -S /dev/md0 mdadm -D /dev/md0 查看还有吗 删掉全部硬盘 fdisk /dev/sdc fdisk /dev/sdb fdisk /dev/sde fdisk /dev/sdd 清空 mdadm --zero-superblock /dev/sdb1 fdisk /dev/sdb mdadm --zero-superblock /dev/sdb1 dd if=/dev/zero of=/dev/sdb1 (万能清空) blkid 查看分区情况

逻辑卷: 创建分区逻辑卷 fdisk /dev/sdb fdisk /dev/sdc disk -l /dev/sda 6 disk -l /dev/sdc 6 dd if=/dev/zero of=/dev/sdc1

/dev/sdc1: UUID="7398b86a-e346-0bcc-aa0a-4c12267ca553" UUID_SUB="b5eea05e-c8b2-8573-e70c-084d1b083115" LABEL="centos.magedu.com:0" TYPE="linux_raid_member" pvcreate /dev/sda6 pvcreate /dev/sdc1 pvdisplay 卷组 vgcreate -s 16M(pe) vg0 /dev/sd{a6,c1} pvdisplay vgs pvcreate /dev/sda6 ()

逻辑卷 lvcreate -n lv0 -l 100 vg0 第一个逻辑卷 lvdisplay ll /dev/vg0/lv0

vgdisplay

lvcreate -n lv1 -l 100%FREE vg0 创建第二个逻辑卷 vgs

ll/dev/mapper/vg0-lv0 ll /dev/vg0/lv1

格式化:

device mapper(设备镜像) lvdispaly mkfs.ext4 /dev/vg0/lv1 blkid /dev/vg0/lv0 配置文件 UUID=728f19cf-8b9b-454d-b7a6-ad8c7a607321 /mnt/lv0 ext4 de faults 0 0 mount -a 挂载 cp /etc/* /mnt/lv0 dd if=/dev/zero of=/mnt/lv0/f1 bs=1M count=1024 935 MB/s 逻辑卷的速度: [root@centos ~]#dd if=/dev/zero of=/mnt/lv0/f2 bs=1M count=1024 conv=fdatasync1024+0 records in 1024+0 records out 1073741824 bytes (1.1 GB) copied, 0.809883 s, 1.3 GB/s 项目经验小组; 卷组的扩展 pvcreate /dev/sdd vgextend vg0 /dev/sdd vgdisplay 逻辑卷的扩展 lvextend -L +5G /dev/vg0/lv0 文件系统要同步 #resize2fs /dev/vg0/lv0 lvextend -l +100%FREE /dev/vg0/lv0

lvextend -r -l +100%FREE /dev/vg0/lv0 (扩张文件系统一步到位)

逻辑卷的缩小: 备份先所见 dd tar xfs 只能扩展: ext4 5步骤 umount /mnt/lv0 卸载 fsck -f /dev/vg0/lv0 检查系统完整性 (强制修复) resize2fs /dev/vg0/lv0 10G 文件系统压缩10G lvreduce -L 10G /dev/vg0/lv0 逻辑卷压缩到10G mount -a 重新挂载 df -H 检查大小 lvdisplay 查看逻辑卷的大小

resize2fs /dev/vg0/lv0 ext xfs_growfs /mnt/lv0 xfs 卸载逻辑卷 将lv sdd硬盘坏掉了要更换:

fdisk /dev/sdc2 创建分区备份逻辑卷 pvcreate /dev/sdc2 vgextend vg0 /dev/sdc2 pvmove /dev/sdd 移动sdd-sdc2 vgreduce vg0 /dev/sdd vg0里移走sdd pvremove /dev/sdd 移走pv里面的sdd 把旧电脑里面的逻辑卷移走: pvmove /dev/sda6 移动空间 vgreduce vg0 /dev/sda6 从组里移走 pvremove /dev/sda6 移动硬盘 lsblk /dev/sda6 迁移主机 centos7 创建逻辑卷:

pvcreate /dev/sdb1 vgcreate vg0 /dev/sdb1 lvcreate -n lv0 -l 100%FREE vg0 mkfs.xfs /dev/vg0/lv0 mkdir /mnt/lv0
mount /dev/vg0/lv0 /mnt/lv0 df -h centos 6 vgrename vg0 centos6vg0
lvrename /dev/centos6vg0/lv0 /dev/centos6vg0/centos6lv0 lvrename /dev/centos6vg0/lv1 /dev/centos6vg0/centos6lv1 vgdisplay lvdisplay [root@centos ~]#ll /dev/centos6vg0/centos6lv0 lrwxrwxrwx. 1 root root 7 Jun 10 21:02 /dev/centos6vg0/centos6lv0 -> ../dm-0 开始: umount /mnt/lv0
vgchage -an centos6vg0 禁用vg 逻辑卷也不能用了 vgexport centos6vg0 卷组导出状态 centos 7 上的结果: vgimport centos6vg0 导入设置成导出 vgchange -ay centos6vg0 激活 mkdir /mnt/centos6lv0 mount /dev/cnetos6vg0/centos6lv0 /mnt/centos6lv0 创建快照: lvcreate -n centos6lv0-snapshot -s -L 1G /dev/centos6vg0/cnetos6lv0 快照和逻辑在一个组里面: mount /dev/cnetos6vg0/centos6lv0 /mnt/centos6lv0 lv snapshot status

mkdir /mnt/snap mount /dev/cnetos6vg0/centos6lv0-snapshot /mnt/snap ls/mnt/snap f1 f2 f3 ls /mnt/centos6lv0 f1 f2 f3 创建:lvcreate -n lv0 -L 1G vg0 mkfs.sfs /dev/vg0/lv0 mount /dev/vg0/lv0 /mnt/lv0 cp /etc/group /mnt/lv0/f1 cp /etc/group /mnt/lv0/f2 cp /etc/group /mnt/lv0/f3 创建快照; lvcreate -n lv0-snapshot -L 500M -s /dev/vg0/lv0 mkdir /mnt/snap mount /dev/vg0/lv0-snapshot /mnt/snap mount -o nouuid /dev/vg0/lv0-snapshot /mnt/snap (centos7 -p r) ls /mnt/snap 合并 消除数据 /mnt/lv0 umount /mnt/lv0 umount /mnt/snap lvconvert --merge /dev/vg0/lv0-snapshot

注意: ext4 -p r merge mount -o xfs mount -o nouuid mount /dev/vg0/lv0 /mnt/lv0 ls /mnt/lv0

f1 f2 f3

第五周:网络基础 osi pdu

PDUPDU: Protocol Data Unit,协议数据单元是指对等层次之间传递的数据单位物理层的 PDU是数据位 bit数据链路层的 PDU是数据帧 fram 物理层:pdu 是数据位: 数据链路层:是数据帧frame 网络层:packet 传输层:segment 其它更高的层次是messages 网卡:以太网: 数据链路层:data link layer unicast broadcast multicast 冲突域:一台机器和另一台机器发送数据冲突 网桥:学习源地址:转发目标地址 11111111111111111111.... ethtool eht0 双工 Duplex: Full ethernet(以太网、数据链路层) switch (数据链路层)

route -n route -n 一个路由器 一个网段 局域网 广播机制 广域网:单播机制 application : hhtp https ftp nfs dns tftp smtp pop3 imap telnet ssh cat /etc/services 查看端口号: qq udP 用户数据包协议 no seq tcp 传输控制协议 有顺序的 查看端口号: [root@Centos7~]#cat /proc/sys/net/ipv4/ip_local_port_range 32768 60999 tcp 包头 0-32 A - B 序列包:100
1000确认包|101 (希望下次发101个包) 101 |1001 确认包 1001 |102 tcP 面向可靠链接的选项 面向连接 ack syn fin SYN:在建立连接时使用,用来同步序号。当SYN=1,ACK=0时,表示这是一个请求建立连 接的报文段;当SYN=1,ACK=1时,表示对方同意建立连接。SYN=1,说明这是一个请求 建立连接或同意建立连接的报文。只有在前两次握手中SYN才置为1,带SYN标志的TCP报文 段称为同步报文段 ACK:表示是否前面的确认号字段是否有效。ACK=1,表示有效。只有当ACK=1时,前面 的确认号字段才有效。TCP规定,连接建立后,ACK必须为1,带ACK标志的TCP报文段称为确 认报文段

tcP 三次握手: A B 打你电话 1 谁啊 2 老王 3 约吗 约 好吧
访问外面地址: SYN=1,说明这是一个请求

协议 本地地址 外部地址 状态 PID TCP 127.0.0.1:443 127.0.0.1:56656 ESTABLISHED 1744 SYN=1表示第一次握手 finsh 结束: 2^16=65536 映射第四层到应用程序;

tcp ftp 21 telnet 23 http 80 udp: dns 53 tftp:69 snmp:161 通过端口号:知道上层应用程序的地址 通过端口号:知道上层软件:80 httP 22 ssh [root@Centos7~]#cat /proc/sys/net/ipv4/tcp_max_orphans 8192 [root@Centos7~]#cat /proc/sys/net/ipv4/tcp_fin_timeout 60 Linux为了防止孤儿连接长时间存留在内核中,定义了两个内核参数:

[root@Centos7~]#cat /proc/sys/net/ipv4/tcp_retries1 3 [root@Centos7~]#cat /proc/sys/net/ipv4/tcp_retries2 15 window size 固定窗口 滑动窗口window size ack=2 说明只能接收2个包 tcp 报文的第一个字段: 源端口 32 位 目标端口: 序列号 确认号 6标记位 ping 172.18.118.95 -s 65507 -f flood(导致服务器down) ddos ××× arp -n arp 列表 arp 基于广播的 arp -d 192.18.118.95 删除 arp -n 列表 重启服务systemctl restart network 默认生命周期: [root@centos ~]#cat /proc/sys/net/ipv4/ip_default_ttl 64 网络实验: arp; 自问自答: 问:当主机启动的时候,who has 192.168.30.128 ?tell 0.0.0.0 (刚启动的时候的地址还没有生效没有地址) 答: 192.168.30.128 没人用,避免地址冲突的 机制,产生的广播 arp:请求响应是广播 arp:回应是单播 arp -n arp -d ip a arp 广播,arp 三次握手,数据的传输 数据包的构成: ethernet ip tcp udp data fcs (循环校验位) 数据链路层 网络层 传输层 数据包 48位mac ipv6 128位:号称每个沙子都可以分一个ip inet6 fe80::20c:29ff:fe39:4273/64 scope link 一个以太网最大frame 是1500 发包:这个3500的这个包是凑出来的 [root@Centos7~]#ping 192.168.137.172 -s 3500 片便宜就是包被切割的位置 ttl 是生命期一个路由器减去一个值 #ping www.microsoft.com 64 bytes from 210.192.117.42-BJ-CNC (210.192.117.42): icmp_seq=1 ttl=51 time=112 ms

ping ip地址: [root@centos ~]#ping 192.168.137.172 ping 11000000101010001000100110101100 IP地址的转化 ping 3232270764 下面的很重要: A类 0.0.0.0是未知地址 127.0.0.1 是回环地址,不供网卡使用 网络数:0-127 x.x.x 1-126.x.x.x 00xxxxxxx 0..... 01111111 0..... 前8位是网络Id 0.0.0.0 127.0.0.1 10.0.0.0 网段号 10.255.255.255 表示10.0.0.0网段号的广播 网段号:2^可变网络id 位数 主机数 2^主机id -2 1.1.1.1 澳大利亚 8.8.8.8 谷歌: 114.114.114.114 江苏电信 B类 10 xxxxxx xxxxxxxx.y.z 10 111111 128-191.x.x.x 16位网络id 16位主机id 主机数:2^16=65536-2 c类: 110 xxxxxx xxxxxxxx.xxxxxxxx.y 110 00000 110 11111 192-223. x.x.x 24位网络id 8位主机id 网络数:2^21 主机数:2^8=254 d:224-239.x.x.x 1110xxxx .x.x.x 表示多播地址 电脑分配地址只能是多播 e:保留: 240-254 .x.x.x 11110xxx.x.x.x 总结:c类地址和主机id 主机数id 有点不一样

子网掩码与IP地址相与得到网络id 10.0.0.0/8分成2个小网 10.0.0.0/9 min;10.0.0.1 max: 10.127.255.255

10.128.0.0/9 min 10.128.0.0.1 max 10.255.255.254

10.00 000000.0.0 10.0.0.0/10 10.01 000000.0.0 10.64.0.0/10 10.10 000000.0.0 10.128.0.0/10 10.11 000000.0.0 10.192.0.0/10

10.0.0.0/8划分32个子网给32个公司使用: 子网掩码: 8+5=13 255.248.0.0 新的子网: 10.0.0.0/13 10.248.0.0/13 最大子网IP: 10.11111 000 .0.1/13 (248) 10.11111 111 .255.254/13 (255)

10.248.0.0/13 划分17个子网 2^5=32 13+5=18 新的子网:255.255.192.0 10.11111 00000 000000.0 10.248.0.0/18 子网最小 10.11111 10000 000000.0 10.252.0.0/18 17 个子网 10.11111 11111 000000.0 10.255.192.0/18 最大子网

主机数 2^14-2 10.252.0.0/18 10.11111 100 .00 000000 .1 10.252.0.1 10.11111 100 .00 111111.254 10.252.63.254 合成一个网络:超网 10.0.0.0/8 172.20.0.0/16 主机id 向网络id 借位 路由表的配置; 目标:数据包发送的目标路径192.168.0.0 netmaskk interface;本路由器的出口 gateway ; 直连;不需要配置 非直连:下一个路由器邻近本路由器的接口地址

dhcp 自动获取 家里使用 备用设置 公司使用 虚拟网卡: yum remove libvirt-daemon 查看虚拟网卡 yun list libvirt* 产查看包

加载网卡 ethtool -i eth0 modprobe -r e1000 modprobe e1000

cd /etc/udev/rules.d/ vim 70-persistent-net.rules dmesg |grep -i eth ifconfig eth2 down ifconfig eth2 up ifdown ifup ip link 配置文件: ls /etc/sysconfig/network-scripts 设置网卡地址: ifconfig eth2 1.1.1.1/24 临时使用 添加路由表: 主机 route add -host 7.7.7.7 gw 172.18.0.1 eth2 主机路由网段 网关 接口 到达网段 网关是 从哪个地方出去 网络 route add -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.137.100 默认: route add default gw 192.168.137.100 删除默认路由: route del default gw 172.18.3.1 route del -net 0.0.0.0 netmask 0.0.0.0 gw 192.168.137.100
删除主机路由: route del -host 6.6.6.6 删除网络路由: route del -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.137.100 service network restart route add 都是内存中临时添加的 centos7 eth1:192.168.1.100/24 centos6 ens37:192.168.2.100/24 添加路由器 route add default dev eth1 route add default gw 192.168.137.100 route add defautl dev ens37 ping 192.168.1.100 tcpdump -i eth2 抓包

yum install quagga

rpm -ql quagga

rpm -ql quagga

ss -ntlp

DEVICE=eth1 设备名 TYPE=Ethernet UUID=1908c9dc-8431-4df4-8241-d1ce061a9a65 ONBOOT=yes 开机的时候网卡启动 NM_CONTROLLED=yes BOOTPROTO=dhcp 自动获取 static none DEFROUTE=yes IPV4_FAILURE_FATAL=yes IPV6INIT=no NAME="System eth1" HWADDR=00:0C:29:35:59:73 PEERDNS=yes PEERROUTES=yes ~
配置网卡: DEVICE=eth1 BOOTPROTO=static IPADDR=172.18.0.6 PREFIX=16 GATEWAY=72.18.0.1 DNS=114.114.114.114 DNS=1.1.1.1 DNS=8.8.8.8

service network restart service NetworkManager stop A R1 R2 B 配置网络段 添加3段网络 net10 a net11 net10 r1 添加2快网卡 net12 net11 r2 添加2块网卡 net12 b

cat /etc/sysconfig/network 更改主机名

路由器配置 DEVICE=eth1 BOOTPROTO=static IPADDR=172.18.0.6 PREFIX=16 路由器与电脑的区别就是 网关不用配置 开启ip 转发; vim /etc/sysctl.conf net.ipv4.ip_forward=1 sysctl -p iptables -F 开启路由转发功能: echo 1> /proc/sys/net/ipv4/ip_forward 追踪路由器:
traceroute 10.0.0.100 mtr 10.0.0.0 动态监控路由器: tracepath 10.0.0.100 DNS1 : cat /etc/resolv.conf 配置文件 重启服务: service network restart

~/.bashr 配置alias 别名 更改主机名: vim /etc/sysconfig/network hostname +主机名 exit 退出生效

一个网卡多个主机名:临时 ifconfig eth0:1 8.8.8.8/24 ip a 查看 删除: ifconfig eth0:1 down 实验:一个物理网卡八个多个地址:centos6

路由器:一个网卡 ifconfig eth0:1 1.1.1.254/24 ifconfig eth0:2 2.2.2.254/24 a route add default gw 2.2.2.254 b route add default gw 1.1.1.254

echo 1> /proc/sys/net/ipv4/ip_forward

tcpdump -i eth0 icmp 指定网卡ping: ping -I 1.1.1.1 2.2.2.2 (目标)

netstart : netstat -n ll /var/run/dbus/system_bus_socket :实现本地通讯

socket :连接本地连接,解决封装解包的问题 实现本机通讯: a b ssh socket sshd

netstat -nt tcp netstat -ntu udp netstat -ntul netstat -ntul netstat -ntua netstat -ntunetstat -ntuap netstat -Ieth0 netstat -i rx-ok

重点: 多少个包: ss -s ip 命令; ip link ip a 添加路由: ip route add 6.6.6.0/24 via 192.168.137.100 删除: ip route del 6.6.6.0/24 via 192.168.137.100 dev ens33 ip route add default via 172.16.0.1 ip route delete 查看地址: 增加地址: ip addr add 1.1.1.1/24 dev eth0 ip addr del 2.2.2.2/24 dev eth0 ip a ip addr add 1.1.1.1/24 dev eth0:2 (起名字) 添加地址: ip addr del 172.16.100.100/16 dev eth0 label etho:0

ip addr add 172.16.100.100/16 dev eth0 label etho:0

配置文件:主网卡的地址仍是自动获取 网卡别名:eth1 自动获取:eth1 : DEVICE=eth1 BOOTPROTO=dhcp 手工指定:eht1:2: DEVICE=eth1 BOOTPROTO=static IPADDR=172.18.22.22 PREFIX=16 GATEWAY=172.18.0.1 域名: cat /etc/host 查看域名:cat /etc/resolv.conf vim /etc/nsswitch.conf

网络接口绑定:

d多个网卡绑定一个IP

    eth0    1.1.1.1 dbserver 

用户: eth1 bonding 工作模式: mode 1

实验bonding mode1 两个网卡都是仅主机模式: cat /proc/net/bonding/bond0

cat > ifcfg-bond0 DEVICE=bond0 IPADDR=192.168.137.22bong PREFIX=24 BONDING_OPTS="mode=1 miimon=100"

cat ifcfg-eth0 DEVICE=eth0 MASTER=bond0 SLAVE=yes

cat ifcfg-eth1 DEVICE=eth0 MASTER=bond0 SLAVE=yes bonding卸载: lsmod 查看所有模块: ifconfig bond0 down :禁用网卡驱动: modprobe -r bonding 卸载网卡 ifconfig -a 配置eth0 配置eth1 主机名: cat /etc/sysconfig/network 改名字; 启动网卡; ifconfig ens37 up ifconfig ens37 down

centos 7网路配置:

rpm -qi biosdevname 网卡配置信息 cat /etc/default/grub 配置文件按 vim /etc/default/grub 直接更改网卡名

ll /etc/grub2.cfg [root@Centos7~]#ll /etc/grub2.cfg lrwxrwxrwx. 1 root root 22 Apr 4 10:33 /etc/grub2.cfg -> ../boot/grub2/grub.cfg 100 linux16 /vmlinuz-3.10.0-693.el7.x86_64 root=UUID=7919257a-3c51-41cf-af9d-42ab20ebdeaa ro rhgb quiet LANG= en_US.UTF-8 net.ifnames=0

net.ifnames=0

第二种: ll /etc/default/grub :zai rhgb quiet net.ifnames=0 grub2-mkconfig -o /etc/grub2.cfg
重启: nmcli nmcli device status cli connection show

[root@Centos7~]#nmcli connection add con-name office-eth1 ifname eth1 type ethernet ipv4.method auto connection.autoconnect yes nmcli connection show nmcli connection up office-eth1 nmcli connection modify Wired\ connection\ 2 con-name home-eth1 [root@Centos7/etc/sysconfig/network-scripts]#nmcli connection modify home-eth1 ipv4.addresses 172.18.0.22/16 ipv4.gateway 172.18.0.1 ipv4.dns 114.114.114.114 ipv4.manual nmcli connection nmcli connection up home-eth1 nmcli connection

nmcli connection up office-eth1 自动获取: 手动: [root@Centos7~]#nmcli connection modify eth0 con-name eth0 ipv4.method manual ipv4.addresses 192.168.137.22/16

nmcli connection up home-eth1 家是指定的Ip

nmcli device disconnect eth1 :取消连接 nmcli device connect eth1 : 连接

nmcli connection show eth0 查看信息

配置文件更改了信息,从新加载启动一下 nmcli connection reload

nmcli connection up office-eth1

nmcli connection static-eth1 ipv4.method manual eth1 加 地址: nmcli connection modify home-eth1 +ipv4.add nmcli connection reload nmcli connection up home-eth1 删除已加地址; nmcli connection modify home-eth1 -ipv4.addresses 8.8.8.8/16 nmcli connection up home-eth1 nmtui 字符工具 centos6 cat /etc/sysconfig/network centos7 cat /etc/hostname 传统配置文件: vim /etc/hostname centos7 hostname centos7 生效 hostnamectl 该文家又生效 hostname status 状态: 更改主机名: [root@Centos7~]#hostnamectl set-hostname centos7.4.magedu.com [root@Centos7~]#hostname centos7.4.magedu.com exec bash

[root@centos7~]#hostname centos7.4.magedu.com [root@centos7~]#cat /etc/hosts 加上主机名

team 0 rm -f ifc* nmcli connection reload

nmcli connection add type team con-name team0 ifname team0 config '{"runner": {"name": "activebackup"}}' ipv4.method manual ipv4.addresses 192.168.137.22/16 nmcli connection add type team-slave con-name team0-eth0 ifname eth0 master team0

nmcli connection add type team-slave con-name team0-eth1 ifname eth1 master team0 nmcli connection show

nmcli connection up team0-eth0 nmcli connection up team0-eth1 nmcli connection show teamdctl team0 state 删除: nmcli connection delete team0 team0-eth0 team-eth1

测试:dns host www.magedu.com nslookup www.magedu.com

进程:

lru :算法 ,存放缓存数据的算法,近期最少使用算法 ps aux 虚拟内存 物理内存 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND free 内存: 共享 内存 缓存 total used free shared buff/cache available

同一 主机:signal

不同主机: socket :ip和端口号 远程 kafka mq(消息队列) daemon 守护进程:

进程状态: 运行 running ready 就绪 - 睡眠 可中断 interruptable 睡觉 (处于进程最多的状态 ) 不可终端 停止 stopped 僵尸 zombie 重启机器释放内存 T sleep 构建一个状态

process :一个进程拥有多个线程 :一个公司立项,整个资源的集合,一个人,1个线程,干活的人就是线程 thread: {这就是线程} sl 表示多个线程:

ps [root@centos7~]#ls /proc/1932/exe -l
lrwxrwxrwx. 1 root root 0 Jun 24 09:17 /proc/1932/exe -> /usr/bin/bash ps auxf |grep bash
查看进程使用: 不连接终端,系统自身的属性 [root@centos7~]#ps xo pid,cmd,%cpu,tty,%mem k %mem |tail -1 1440 /usr/bin/gnome-shell 0.2 ? 10.2 df -h 关闭图形界面 init 3 字符: init 5 图形 ps xo pid,cmd, euser,ruser
3592 passwd suid 有效用户 实际用户 root sun 3594 ps xo pid,cmd, euser,ruser root root 查看cpu [root@centos7~]#ps -eF UID PID PPID C SZ RSS PSR STIME TTY TIME CMD root 1 0 0 48425 6844 0 09:14 ? 00:00:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 21

ps 优先级 nice 优先级: -20 19 值越大优先级越低 优先级 nice优先级 实时优先级 [root@centos7~]#ps xo pid,cmd,pri,ni,rtprio |less PID CMD PRI NI RTPRIO

system 0 139 realtime 99 0 nice -20 19 pri 139 -0

ps -C f2.sh 查看运行脚本信息 o pid,cmd,%cpu,%mem ps -C f2.sh -C ping o pid,cmd,%cpu,%mem 脚本的子进程 查看脚本的状态: [root@centos7~]#./f5.sh
f1.sh [root@centos7~]#ps -C f5.sh o pid,cmd,%cpu,%mem PID CMD %CPU %MEM 4221 /bin/bash ./f5.sh 0.0 0.0

cpu ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu |head ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem |head 每秒钟监控: watch -n 1ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu |head

pidof bash ,显示进程编号 系统工具 uptime
11:28:23 up 2:13, 3 users, load average: 0.00, 0.01, 0.05 cpu内核的个数,不大于3,那么系统的性能良好 1 5 10分钟

双核cpu load average is 6 if=/dev/zero of=/dev/null

top -b 显示所有进程 p cpu显示 M 内存显示 kii 杀掉进程: 15关闭进程: k

清空缓存:caches echo 1 > /proc/sys/vm/drop_caches vmstat 虚拟内存: vmstat 1 bi 从磁盘进内存 bo 从内存到磁盘 dd if=/dev/sda of=/dev/null 读 bi 涨 if=/dev/zero of=/dev/null xie bo 涨

内存工具 iostat 1 pmp :进程对应的内存映射 pmp -x 1 脏数据: 进程编号 查看内存情况 cat /proc/1/maps 监控工具 glance ss -ntl glances -s -B 192.168.137.22 服务器

glances -c 192.168.137.22 客户端模式 系统监控工具: dstat 代替vmstat iostat

iotop 监控磁盘io 状况

man 7 signal k字,信号名称以SIG开头 (可省略),不区分大小写 显示当前系统可用信号: kill –l,trap -l 常用信号:man 7 signal 1) SIGHUP: 无须关闭进程而让其重读配置文件 2) SIGINT: 中止正在运行的进程;相当于Ctrl+c 3) SIGQUIT:相当于ctrl+\ 9) SIGKILL: 强制杀死正在运行的进程 15) SIGTERM:终止正在运行的进程 18) SIGCONT:继续运行 19) SIGSTOP:后台休眠 指定信号的方法: (1) 信号的数字标识:1, 2, 9 (2) 信号完整名称:SIGHUP (3) 信号的简写名称:HUP

kill -1 183 重读配置文件 ping 127.1 pidof ping kill -2 7586 kill -3 pidof (ping bc) 15 :终止正在运行的进程 ===killall

kill -15 $(pidof ping ) echo $$ kill 4527 ( 15 :终止正在运行的进程) kill -9 $(pidof ping) 强制杀掉正在运行的进程 杀掉别人登陆计算机的 pkill -9 -t pts/2 18) SIGCONT:继续运行 & 后台运行 SIGSTOP:后台休

ping 127.0.0.1 & 直接放到后台执行 jobs 查看后台运行的个数:作业号 fg :前台执行 forntground bg :后台执行 background ctrl +z 正在运行的放到后台不运行, bg 后天作业号

[root@centos7~]#jobs [1]+ Stopped
开始:bg 1 kill -9 $(pidof ping) ps -au |grep ping

killall -19 ping (后台休眠) killall -18 ping (后台运行) fg 放到前台运行 ctrL +c ping 172.0.0.1 & pkill -t pts/3 恢复断网数据 screen ping ping 172.0.0.1 & screen -r 恢复

nohut.out ping 127.0.0.1 & disconnect tail -f nohup.out 还可以查看进程 6141进程数 同时执行在后台 cat all.sh ping 127.0.1 & ping 127.0.2 & ping 127.0.3 & killall ping 同步执行 { ping 127.1 & ping 127.2 & ping 127.3 & }

任务计划: rpm -qf /usr/bin/at 来自哪个包 rpm -ql at 查看有哪些信息

centos 6 service atd status service atd start centos7 systemctl status atd 确保时间一致: vim /etc/chrony.conf server 172.18.0.1 /etc/chrony.conf 同步时间:

ntpdate 172.18.0.1 iptables -vnL 查看防火墙 systemctl enable chronyd systemctl start chronyd systemctl status chronyd

centos 6 同步时间 ntpdate 172.18.0.1 vim /etc/ntp.conf server 172.18.0.1 iburst chkconfig ntpd on service ntpd status service ntpd start

计划任务 at 17:00 at >rm /app/* -rf at >reboot ctrl +d at -l at -c 8 (计划任务的数)

cat /var/spool/at/a000080184fd7c echo wall atjob |at now +1min 支持输入输出: at -d 6 删除计划任务 [root@centos7/app]#echo wall atjob |at now +1 min job 10 at Thu Jun 21 16:12:00 2018

cat /etc/at.allow 白名单 默认不存在 cat /etc/at.deny 黑名单 2个文件都不存在只有root可以执行at 命令

echo sun >> /etc/at.deny 不可以计划任务 echo sun > /etc/at.allow 白名单可以执行计划任务 rm -f /etc/at.allow 查看计划任务: at -c 8

写一个计划任务关机自己的电脑: at 18:30 << end rm -rf /app/* halt poweroff end

查看; which crond rpm -qf /usr/sbin/crond rpm -ql cronie

systemctl status crond systemctl enable crond

vim /etc/crontab

          • sun wall sun is job /1:每分钟 1,3,5 某个时间; 1-2
  • 表示没分钟 打包文件: J -xz z-gz 0 2 * * 1-5 root tar zcvf /data/etc.tar.gz /etc/ &> /dev/null tar Jcvf /data/etc.tar.xz /etc/ &> /dev/null

root date 050401592018 绝对路径 0 2 1,10,20 * 0,6 root tarjcvf /app/etc.tar.xz /etc/ &>/dev/null

@root root touch /app/cron.log :重启创建文件

man 5 crontab 普通用户:crontab -e

ll /bin/crontab ll /bin/at 创建空文件: echo f{1..10} |xargs -n2 touch

find /home -type d -exec ls {} ;

第七周: 高级进阶编程: [root@centos ~]#df |sed -rn '/^/dev/sd/s@.([^ ]+)%.@\1@p' |sort -nr 5 2 1 写在一起 [root@centos ~]#df |sed -rn 's/^/dev/sd.([^ ]+)%./\1/p' |sort -nr
5 2 1 计算100 [root@Centos7~]#seq -s + 100 |bc 5050 [root@centos7~]#id -u root 0[root@centos7~]#id -nu root root read -n 10 - p 用户长度10个字符: ?xargs find 默认递归

echo {1..10} $evalecho {1..$n} 给root 发送邮件 [root@centos7~]#echo $(df |grep '/dev/sda'|tr -s " "|sort -t " " -k5 -nr |cut -d" " -f1,5 |head -2)|mail -s "disk_use_$(date "+%F %T")" root

函数:

[root@centos7~]#declare -f funcl funcl () { echo funcl }

path =/data rm -rf $path/* :如果path没有值就会导致删除跟

cmd1 || { cmd2;exit; } 匿名函数

func_ 函数命名方式: history () { echo history function;} history unset history 取消函数 函数当前shell 有效: [root@centos7/etc/init.d]#funcl () { name=mage;echo "funcl:$name";} [root@centos7/etc/init.d]#funcl funcl:mage [root@centos7/etc/init.d]#unset funcl [root@centos7/etc/init.d]#name=mage [root@centos7/etc/init.d]#funcl () { echo "funcl : $name ";} [root@centos7/etc/init.d]#funcl funcl : mage 函数内部有效: funcl () { local name=mage;echo "funcl:$name";}

[root@centos7/app]#versin () { ver=cat /etc/centos-release |sed -r "s/.* ([0-9]+)\..*/\1/" ;return $ver ;} [root@centos7/app]#versin [root@centos7/app]#if [ $? -eq 7 ];then echo 'the version is new' ; else echo ' the verison is old'; fi
the version is new

d1G删除行前面的

dG 删除行后面的

echo ${url%%:} http echo ${url##:} 80

第八周 系统启动流程: ethtool -i ens33 modinfo e1000 产看模块信息 modprobe e1000加载 modprobe -r e1000 卸载 模块文件加载这里

cd /lib/modules/3.10.0-693.el7.x86_64/kernel rm -f initramfs-2.6.32-696.el6.x86_64.img 删除 cat /etc/inittab init 级别 0关机; 1单用户模式 2没有网络的多用户 3完整的多用户 4自定义 5图形界面模式 6reboot 重启模式 grub a 空格1

mkinitrd initramfs-2.6.32-696.el6.x86_64.img uname -r 创建 master boot record =mbr (446 boot loader +4*16分区表 +55A) chkconfig --list testserv2018-05-30.sh chkconfig --level 5 testserv2018-05-30.sh on ls /etc/rc5.d/ chkconfig --add testserv2018-05-30.sh

rpm2cpio 命令将rpm 软件包转换为cpio格式的文件 rpm2cpio
cpio -idv 解包并看过程

e2label /dev/sda2 / e2label /dev/sda3 查看卷标 centos 5

自启动网卡:

hexdump -C -n 446 -v /dev/sda 查看分区表

安装包实现自动补齐:bash-completion 自启动网卡

1.在旧系统中加硬盘 2.使新硬盘在虚拟机中被发现 echo '- - -' > /sys/class/scsi_host/host2/scan 3.对新硬盘进行分区,分2个区,一个100M,一个20G fdisk /dev/sdb 4.格式化文件系统为ext4,并创建相应目录,挂载 mkfs.ext4 /dev/sdb1 mkfs.ext4 /dev/sdb2 [root@instructor_v6(nanyibo) ~]# mkdir /mnt/sysimage [root@instructor_v6(nanyibo) ~]# mount /dev/sdb2 /mnt/sysimage/ [root@instructor_v6(nanyibo) ~]# mkdir /mnt/sysimage/boot [root@instructor_v6(nanyibo) ~]# mount /dev/sdb1 /mnt/sysimage/boot/

5.安装grub grub-install --root-directory=/mnt/sysimage /dev/sdb [root@instructor_v6(nanyibo) ~]# cp /boot/vmlinuz-2.6.32-696.el6.x86_64 /mnt/sysimage/boot/ [root@instructor_v6(nanyibo) ~]# cp /boot/initramfs-2.6.32-696.el6.x86_64.img /mnt/sysimage/boot/ [root@instructor_v6(nanyibo) boot]# ls -R .: grub initramfs-2.6.32-696.el6.x86_64.img vmlinuz-2.6.32-696.el6.x86_64

./grub: device.map ffs_stage1_5 minix_stage1_5 stage2 xfs_stage1_5 e2fs_stage1_5 iso9660_stage1_5 reiserfs_stage1_5 ufs2_stage1_5 fat_stage1_5 jfs_stage1_5 stage1 vstafs_stage1_5

6.编写grub.conf default=0 timeout=5 title redhat root (hd0,0) kernel /vmlinuz-2.6.32-696.el6.x86_64 ro root=UUID=4aa06589-fccb-4acd-b406-219347f5ad2d rhgb q uiet selinux=0 init=/bin/bash initrd /initramfs-2.6.32-696.el6.x86_64.img

7.编写拷贝程序和对应库文件的脚本 #!/bin/bash copy_cmd() { local cmd_destdir=$destdir$(dirname $(which $1)) if [ ! -d $cmd_destdir ];then mkdir -pv $cmd_destdir fi cp -v $(which $1) $cmd_destdir }

copy_libfile() { ldd $(which $1) |grep -oE "/.* " | while read libfile do local lib_destdir=$destdir$(dirname $libfile) local lib_destfile=$destdir$libfile if [ -e $lib_destfile ];then continue elif [ -d $lib_destdir ];then cp -v $libfile $lib_destdir else mkdir -pv $lib_destdir cp -v $libfile $lib_destdir fi done }

destdir=/mnt/sysimage

if [ ! -d $destdir ];then mkdir $destdir fi while true;do echo -ne "\e[33mPlease input a execute command:\e[0m" read cmd if [ "$cmd" == quit ];then exit fi which $cmd &> /dev/null || { echo $cmd not exist;continue; } copy_cmd $cmd copy_libfile $cmd done

8.执行上述脚本以拷贝命令及所对应的库文件 ./copycmd 注意执行前,修改该脚本中的destdir=你所指定的根目录 bash ls ifconfig ping hostname cat vi vim mount umount ps pstree mv touch cp insmod modprobe

9.拷贝网卡模块文件 cp /lib/modules/2.6.32-696.el6.x86_64/kernel/drivers/net/e1000/e1000.ko /mnt/sysimage/lib64/

10.创建根下的其他目录 mkdir /mnt/sysimage/{etc,dev,proc,sys,home,var,mnt,media,root,tmp,lib}

11.尝试chroot,并sync,然后关机

手动网卡获取步骤; 12.启动后配置网卡 insmod /lib64/e1000.ko ifconfig eth0 xxx.xxx.xxx.xxx/16 ifconfig -a 查看IP地址 自动启动网卡 获取步骤: cd /mnt/sysimage/etc/ vi /mnt/sysimage/etc/start.sh #!/bin/bash insmod /lib64/e1000.ko ifconfig eth0 172.18.118.119 /bin/bash chmod +x /mnt/sysimage/etc/start.sh vi /mnt/sysimage/boot/grub/grub.conf init=/etc/start.sh semanage fcontext -a -t httpd_sys_content_t "/app/apache22(/.*)?"

selinux [root@centos7/app]#ll -Z /etc/fstab -rw-r--r--. root root system_u:object_r:etc_t:s0 /etc/fstab restorecon -Rv apache22/ vim /etc/init.d/httpd DocumentRoot "/app/apache22/website" semanage port -l |grep http semanage port -a -t http_port_t -p tcp 9527 semanage port -d -t http_port_t -p tcp 9527 yum install setroubleshoot

awk

计算100 seq -s +100 |bc for((i=1,sum=0;i<=100;i++));do let sum+=i;done;echo $sum awk 'BEGIN{for(i=1;i<=100;i++)sum+=i;print sum}'