第二天重点 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
PDUPDU: 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}'