自己第一階段筆記

第二天重點
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'<br/>mkdir: created directory/app/testdir/dir/9'
mkdir: created directory /app/testdir/dir/9/x'<br/>mkdir: created directory/app/testdir/dir/9/x/a'
mkdir: created directory /app/testdir/dir/10'<br/>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' -&gt;/newapp/dir2'
dir2/mima' -&gt;/newapp/dir2/mima'
dir2/passwd' -&gt;/newapp/dir2/passwd'
mima' -&gt;/newapp/mima'
passwd' -&gt;/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 作業: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 <<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 *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 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 . 創建元數據: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 &lt; /etc/fstab|cut -d" " -f1 |cut -d"=" -f2
dir=swap; blkid -U egrep $dir &lt; /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 funcl
br/>[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}'

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章