自己第一阶段笔记

第二天重点
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
[: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 "\"
2、[root@centos ~]#cut -d: -f1,7 < /etc/passwd |egrep -w "\"
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 作业:br/>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 <发邮件,发脚本邮件给所有人 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 *br/>[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/f1br/>[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>/ 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 . 创建元数据:br/>[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 512
63*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
0
0xxxxxxx 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.combr/>[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 "diskuse$(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";}br/>[root@centos7/etc/init.d]#funcl
funcl:mage
[root@centos7/etc/init.d]#unset funclbr/>[root@centos7/etc/init.d]#name=mage
[root@centos7/etc/init.d]#funcl () { echo "funcl : $name ";}br/>[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 ;}br/>[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}'

转载于:https://blog.51cto.com/13718453/2134973

你可能感兴趣的:(开发工具,运维,网络)