第一周總結

存儲網絡:
DAS-----直接連接存儲(Direct attached storage
NAS-----網絡連接存儲(Network attached storage
SAN-----存儲區域網絡(storage area network
DAS優缺點:
直接存儲(Direct Attached Storage)。存儲設備與主機的緊密相連  
1.管理成本較低,實施簡單  
2.儲時直接依附在服務器上,因此存儲共享受到限制  
3.CPU必須同時完成磁盤存取和應用運行的雙重任務,所以不利于CPU
指令周期的優化,增加系統負擔
NAS優缺點:  
網絡連接存儲(Network Attached Storage)  
通過局域網在多個文件服務器之間實現了互聯,基于文件的協議( NFS、
SMB/CIFS ),實現文件共享  
1.集中管理數據,從而釋放帶寬、提高性能  
2.可提供跨平臺文件共享功能  
3.可靠性較差,適用于局域網或較小的網絡
SAN優缺點:  
存儲區域網絡(Storage Area Networks,SAN)
利用高速的光纖網絡鏈接服務器與存儲設備,基于SCSI,IP,ATM等多種高
級協議,實現存儲共享  
1.服務器跟儲存裝置兩者各司其職  
2.利用光纖信道來傳輸數據﹐以達到一個服務器與儲存裝置之間多對多  
的高效能、高穩定度的存儲環境  
3.實施復雜,管理成本高
操作系統六大功能:
硬件驅動  
進程管理  
網絡管理  
安全管理  
文件管理  
內存管理
命令lsblk(查看塊設備情況)

例:

[root@centos7 share]#lsblk  
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT  
fd0      2:0    1    4K  0 disk   
sda      8:0    0  200G  0 disk   
├─sda1   8:1    0    1G  0 part /boot  
├─sda2   8:2    0   50G  0 part /  
├─sda3   8:3    0   30G  0 part /data  
├─sda4   8:4    0    1K  0 part   
└─sda5   8:5    0    2G  0 part [SWAP]  
sr0     11:0    1  8.1G  0 rom  /run/media/root/CentOS 7 x86_64
開發接口標準:
程序員寫好的程序在a操作系統可以用,能否在b上應用  
編程接口兼容:  
posix:portable operating system  可移植的操作系統  
任何遵循POSIX標準的api接口,其源代碼在a系統上可用,在b上也可用,在abi運行接口上則不兼容,一旦被編譯成二進制,就變成對應機器獨特的二進制格式  
APIapplication program interface   
程序員面對的編程接口    定義了源代碼與庫之間的接口  
ABIapplication binary interface  
程序應用者面對的運行程序接口    描述了應用程序與os之間的底層接口
自動登錄:
修改配置文件vi /etc/gdm/custom.conf  
[daemon]  
AutomaticLoginEnable=true        ###開啟自動登錄  
AutomaticLogin=root              ###root身份運行
命令id (查看用戶ID號)
-u 只顯示id  
例:  
[root@centos7 share]#id -u 
0
命令tty(查看當前終端)
例:
[root@centos6 ~]# tty  
/dev/pts/0
命令who(查看當前所有登錄用戶,并查看其終端)
例:  
[root@centos6 ~]# who   
root     tty1         2018-03-28 19:02 (:0)            ###本機登錄  
root     pts/0        2018-03-28 19:06 (192.168.30.1) ###表示通過遠程登錄
命令whoami(顯示當前用戶身份)
例:
[root@centos6 ~]# whoami  
root
命令who am i(顯示身份,登錄終端等信息)
例:
[root@centos6 ~]# who am i
root     pts/0        2018-03-28 19:06 (192.168.30.1)
命令w(查看誰在登錄,并查看其正在做什么)
例:
[root@centos7 share]#w
 00:51:42 up  8:39,  4 users,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     :0       :0               16:12   ?xdm?  10:21   0.69s /usr/libexec/gnome-sess
root     pts/0    :0               18:47    6:03m  0.30s  0.30s bash
root     pts/1    192.168.30.1     22:23    6.00s  1.45s  0.15s w
root     tty2                      18:48    5:58m  0.19s  0.19s -bash
命令init
例:  
init 3 關掉圖形界面進入字符界面  
init 0 關機  
init 5 切換到圖形界面
備注:init是模式切換,startx 只是開啟圖形工具,不改變運行等級
命令runlevel(查看運行等級)
例:  
[root@centos7 share]#runlevel  
N 5
命令chvt
例:  
chvt 2  切換到虛擬終端2
shell
cat /etc/shells查看當前系統所有shell類型
命令>(創建新文件,清空文件)
例:  
> file     ###若文件不存在則創建,若存在則清空文件
命令提示符
相關變量PS1  
修改提示符格式,man bash可查看PS1詳細用法  
PS1="\[\e[1;5;41;33m\][\u@\h \W]\\$\[\e[0m\]"  
\e \033 \u 當前用戶  
\h 主機名簡稱 \H 主機名  
\w 當前工作目錄 \W 當前工作目錄基名  
\t 24小時時間格式 \T 12小時時間格式  
使其永久生效,寫入配置文件/etc/profile.d/env.sh,文件名必須是.sh結尾
. 或者source重新加載配置文件
命令help
help 列出所有內置命令  
help cd 查看內置命令幫助  
ls --help 查看外部命令幫助
命令type(查看命令是否外置內置)
例:
root@centos7 share]#type cd 
cd is a shell builtin
命令enable(禁用內部命令)
-n 禁用內部命令  
例:  
enable -n cd    
enable cd       ###啟用命令
外部命令查找方式
外部命令按變量$PATH查找  
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin  
例:  
cp /usr/bin/yes /usr/local/sbin/yes
執行命令yes
執行的結果用type查看
[root@centos6 ~]#type yes
yes is hashed (/usr/local/sbin/yes)
但要注意清除hash緩存
命令hash
hash顯示緩存
hash l 顯示緩存可以作為輸入使用
hash p name 將命令全路徑path改名為name
hash t name 打印緩存中name的路徑
hash d name清除name緩存
hash r 清除緩存
命令which(查看外部命令對應的路徑)
按照$PATH逐個查找。假如在第一個目錄中找到了,則不再繼續往下查找,要想列出所有執行which a name。       
which --skip-alias ls   不顯示別名,只顯示路徑  
例:
[root@centos6 ~]#which --skip-alias ls  
/bin/ls
命令whereis(顯示路徑更為全面,包括一些文檔路徑)
例:  
[root@centos7 share]#whereis ls 
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz
命令alias(定義命令別名)
要想一直生效,寫入配置文件.bashrc(只針對當前用戶有效,對所有用戶有效,則寫入配置文件/etc/bashrc
命令unalias(取消別名)
例:
unalias -a    ###取消所有別名
內部命令和別名的優先級
例:alias enable=who  
執行命令enable  
[root@centos6 ~]#enable  
root     tty1         2018-03-29 07:46 (:0)  
root     pts/0        2018-03-29 07:53 (:0.0)  
root     pts/1        2018-03-29 07:54 (192.168.30.1)  
說明別名命令優先級更高
只使用原始命令而不使用別名的方法
command
\command
命令的絕對路徑
一條命令分多行輸入執行
例:
[root@centos6 ~]#hos\
> t\
> name
centos6
命令date
-d  --date   顯示指定日期
例:
[root@centos7 share]#date -d "-2 day" +%F
2018-03-28                         ####顯示前兩天日期
-s  
例:[root@centos7 share]#date -s "-1 day"
Thu Mar 29 01:40:26 CST 2018       ###設置成昨天的時間

練習:
顯示前天是星期幾
date -d -2 day +%A
命令hwclock,clock
-s --hctosys 以硬件時間為準
-w systohc以系統時間為準
命令timedatectl
timedatectl list-timezones                列出所有時區
timedatectl status                        查看當前時區
timedatectl set-timezone Asia/Hongkong  設置時區
時區相關文件/etc/localtime  或者/usr/share/zoneinfo
命令cal(查看日歷)
-y
例:
[root@centos7 share]#cal 3 2018
     March 2018     
Su Mo Tu We Th Fr Sa
             1  2  3
 4  5  6  7  8  9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
命令shutdown
-r reboot
-h halt
-c cancel
TIME:無指定,默認相當于 +1
now: 立刻,相當于+0
+m: 相對時間表示法,幾分鐘之后;例如 +3
hh:mm: 絕對時間表示,指明具體時間
命令wall
例:
wall hello"
命令screen
創建新screen會話
screen S [SESSION]
加入screen會話
screen x [SESSION]
退出并關閉screen會話
exit
剝離當前screen會話
Ctrl+a,d
顯示所有已經打開的screen會話
screen -ls
恢復某screen會話
screen -r [SESSION]
利用screen實現遠程協助
1.在本機創建會話screen -S help
2.在遠程登錄需要幫助的主機,查看會話screen -ls ,然后加入會話screen -x實現同步操作
利用screen備份數據,防止備份中斷
1.進入會話(執行screen),然后開始備份操作
2.假若備份中斷,進入會話(執行screen),然后執行screen -r進行恢復
命令echo
功能:顯示字符
?語法:echo [-neE][字符串]
?說明:echo會將輸入的字符串送往標準輸出。輸出的字符串間以空白字符隔開
并在最后加上換行號
?選項:
? -E (默認)不支持 \ 解釋功能
? -n 不自動換行
? -e 啟用 \ 字符的解釋功能
?顯示變量
echo "$VAR_NAME  變量會替換,弱引用
echo '$VAR_NAME   變量不會替換,強引用
?啟用命令選項-e,若字符串中出現以下字符,則特別加以處理,而不會將它當成
一般文字輸出
\a 發出警告聲
\b 退格鍵
\c 最后不加上換行符號
\n 換行且光標移至行首
\r 回車,即光標移至行首,但不換行
\t 插入tab
\\ 插入\字符
\0nnn 插入nnn(八進制)所代表的ASCII字符
echo -e '\033[43;31;5mmagedu\033[0m'
\xHH插入HH(十六進制)所代表的ASCII
例:
[root@centos6 data]#echo {10..30..2}
10 12 14 16 18 20 22 24 26 28 30        ####2遞增
例:[root@centos6 data]#echo {a..Z}
a ` _ ^ ]  [ Z                          ###結果按照ASCII碼順序顯示
例:[root@centos6 data]#echo file{a,b,c}.{log,txt}
filea.log filea.txt fileb.log fileb.txt filec.log filec.txt
登錄前提示
配置文件/etc/motd
編輯內容,登錄后即可顯示登錄提示
登錄后提示信息
/etc/issue
一個命令調用另一個命令的輸出
例:
cp `which --skip-alias ls` /tmp
tab鍵
~2tab  列出所有用戶
$2tab  列出所有變量
命令history
echo $HISTSIZE    默認記錄1000條,編輯/etc/profile可修改HISTSIZE  
命令行歷史
保存你輸入的命令歷史??梢杂盟鼇碇貜蛨绦忻?/span>
登錄shell時,會讀取命令歷史文件中記錄下的命令~/.bash_history
-c清空歷史,但不會清除.bash_history 中的歷史
-d 清空指定的歷史條目
-a 把內存中的歷史寫入磁盤中
-r 把磁盤中的歷史追加到內存
-w: 保存歷史列表到指定的歷史文件
-n: 讀歷史文件中未讀過的行到歷史列表
-p:不記錄歷史                  例:history -p `ls`
-s:構造歷史,但命令實際不執行   例:history -s `rm -rf *`
登錄進shell后新執行的命令只會記錄在緩存中;這些命令會用戶退出時“追
加”至命令歷史文件中
重復前一個命令,有4種方法
重復前一個命令使用上方向鍵,并回車執行
 !! 并回車執行
輸入 !-1 并回車執行
 Ctrl+p 并回車執行
!:0  執行前一條命令(去除參數)
Ctrl + n 顯示當前歷史中的下一條命令,但不執行
Ctrl + j 執行當前命令
!n 執行history命令輸出對應序號n的命令
!-n 執行history歷史中倒數第n個命令
!string 重復前一個以“string”開頭的命令
!?string 重復前一個包含string的命令
!string:p 僅打印命令歷史,而不執行
!$:p 打印輸出 !$ (上一條命令的最后一個參數)的內容
!*:p 打印輸出 !*(上一條命令的所有參數)的內容
^string 刪除上一條命令中的第一個string
^string1^string2 將上一條命令中的第一個string1替換為string2
!:gs/string1/string2 將上一條命令中所有的string1都替換為 string2

使用up(向上)和down(向下)鍵來上下瀏覽從前輸入的命令
ctrl-r來在命令歷史中搜索命令reverse-i-search`’:
Ctrl+g:從歷史搜索模式退出
要重新調用前一個命令中最后一個參數
!$  表示
Esc, .(點擊Esc鍵后松開,然后點擊 . 鍵)
Alt+ .(按住Alt鍵的同時點擊 . 鍵)
調用歷史參數:
command !string:^ 從命令歷史中搜索以 string 開頭的命令,并獲取它的第一
個參數
command !string:$ 從命令歷史中搜索以 string 開頭的命令,并獲取它的最后一
個參數
command !string:n 從命令歷史中搜索以 string 開頭的命令,并獲取它的第n
個參數
command !string:* 從命令歷史中搜索以 string 開頭的命令,并獲取它的所有
參數
命令whatis=man -f
例:
[root@centos6 ~]#whatis ls
ls                   (1)  - list directory contents
ls                   (1p)  - list directory contents
centos6制作數據庫  makewhatis
centos7制作數據庫  mandb
man幫助
man -k password  表示查看跟password相關的章節
命令歷史相關環境變量
HISTSIZE:命令歷史記錄的條數
HISTFILE:指定歷史文件,默認為~/.bash_history
HISTFILESIZE:命令歷史文件記錄歷史的條數
HISTTIMEFORMAT=%F %T 顯示時間
HISTIGNORE=str1:str2*:  忽略str1命令,str2開頭的歷史
控制命令歷史的記錄方式:
環境變量:HISTCONTROL
ignoredups 默認,忽略重復的命令,連續且相同為“重復”
ignorespace 忽略所有以空白開頭的命令
ignoreboth 相當于ignoredups, ignorespace的組合
erasedups 刪除重復命令
export 變量名="值“
存放在 /etc/profile  ~/.bash_profile    最好存放在自己創建的文件中/etc/profile.d/env.sh
命令ldd(查看程序庫調用)
例:[root@centos7 share]#ldd /bin/ls
	linux-vdso.so.1 =>  (0x00007ffdcf3ee000)
	libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f2f9eeb0000)
	libcap.so.2 => /lib64/libcap.so.2 (0x00007f2f9ecab000)
	libacl.so.1 => /lib64/libacl.so.1 (0x00007f2f9eaa1000)
	libc.so.6 => /lib64/libc.so.6 (0x00007f2f9e6de000)
	libpcre.so.1 => /lib64/libpcre.so.1 (0x00007f2f9e47c000)
	libdl.so.2 => /lib64/libdl.so.2 (0x00007f2f9e277000)
	/lib64/ld-linux-x86-64.so.2 (0x000055b2e31e1000)
	libattr.so.1 => /lib64/libattr.so.1 (0x00007f2f9e072000)
	libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f2f9de56000)
centos6自動掛在光盤
[root@centos6 ~]#cd /misc
[root@centos6 misc]#cd cd/
[root@centos6 cd]#df
識別新增硬盤
echo '- - -' >/sys/class/scsi_host/host2/scan
centos7目錄的變化
/bin/usr/bin
/sbin/usr/sbin
/lib/usr/lib
/lib64/usr/lib64
以上目錄都是以軟鏈接的形式,而在centos6則表示不同的目錄
字符設備與塊設備
字符設備是順序訪問,塊設備是隨機訪問,塊設備有緩存,而字符設備沒有,字符設備如:/dev/zero.
[root@centos7 18:58:03 ~]#ll /dev/zero /dev/sda
brw-rw----. 1 root disk 8, 0 Mar 30 16:03 /dev/sda
crw-rw-rw-. 1 root root 1, 5 Mar 30 16:03 /dev/zero
定義各類文件或目錄的顏色
編輯配置文件vi /etc/DIR_COLORS
命令ls
選項:
-R 目錄遞歸通過
-ld目錄和符號鏈接信息
-1文件分行顯示
-S按大到小排序
-tMtime排序
-u配合-t選項,顯示并按atime從新到舊排序
-U按目錄存放順序顯示(即文件創建的順序)
-X按文件后綴排序
-r倒序排列
例:-t 
root@centos7 09:47:44 data]#vi file2
[root@centos7 09:49:31 data]#ls -t 
file2   file41  file46  file18  file24  file29  file34  file10  file15  file9  file6

例:[root@centos7 19:36:48 data]#ls -1 
file1
file10
file2
file3
file4
file5
file6
file7
例:按文件大小倒序排列
[root@centos7 19:41:08 /]#ls -Slr
total 20
dr-xr-xr-x.  13 root root    0 Mar 30 16:02 sys
dr-xr-xr-x. 198 root root    0 Mar 30 16:02 proc
-rw-r--r--.   1 root root    0 Mar 30 04:40 a
drwxr-xr-x.   2 root root    6 Nov  5  2016 srv
drwxr-xr-x.   2 root root    6 Nov  5  2016 mnt
drwxr-xr-x.   2 root root    6 Nov  5  2016 media
lrwxrwxrwx.   1 root root    7 Mar 28 02:04 lib -> usr/lib
lrwxrwxrwx.   1 root root    7 Mar 28 02:04 bin -> usr/bin
lrwxrwxrwx.   1 root root    8 Mar 28 02:04 sbin -> usr/sbin
lrwxrwxrwx.   1 root root    9 Mar 28 02:04 lib64 -> usr/lib64
例:按ctime排序
[root@centos7 19:53:58 data]#chown hehe. file3
[root@centos7 19:54:11 data]#chown hehe. file5
[root@centos7 19:54:16 data]#chown hehe. file6
[root@centos7 19:54:20 data]#ls -clt
total 0
-rw-r--r--. 1 hehe hehe  0 Mar 30 19:54 file6
-rw-r--r--. 1 hehe hehe  0 Mar 30 19:54 file5
-rw-r--r--. 1 hehe hehe  0 Mar 30 19:54 file3
-rw-r--r--. 1 root root  0 Mar 30 19:36 file1
-rw-r--r--. 1 root root  0 Mar 30 19:36 file10
-rw-r--r--. 1 root root  0 Mar 30 19:36 file2
-rw-r--r--. 1 root root  0 Mar 30 19:36 file4
例:查看鏈接文件/bin加“/”與不加的區別
[root@centos7 09:38:24 data]#ll /bin/
-rwxr-xr-x. 1 root root       1118 Dec 29  2013 zenheiset
-rwxr-xr-x. 1 root root     103608 Aug  2  2017 zenity
-rwxr-xr-x. 1 root root        123 Aug  2  2017 zfgrep
-rwxr-xr-x. 1 root root       2144 Aug  2  2017 zforce
-rwxr-xr-x. 1 root root       5916 Aug  2  2017 zgrep
-rwxr-xr-x. 1 root root     215840 Nov  6  2016 zip
-rwxr-xr-x. 1 root root     100456 Nov  6  2016 zipcloak
-rwxr-xr-x. 1 root root      48451 Jun 10  2014 zipdetails
-rwxr-xr-x. 1 root root       2953 Oct 11  2008 zipgrep
-rwxr-xr-x. 2 root root     185488 Nov  6  2016 zipinfo
-rwxr-xr-x. 1 root root      95984 Nov  6  2016 zipnote
-rwxr-xr-x. 1 root root     100096 Nov  6  2016 zipsplit
-rwxr-xr-x. 1 root root       2041 Aug  2  2017 zless
-rwxr-xr-x. 1 root root       2859 Aug  2  2017 zmore
-rwxr-xr-x. 1 root root       5343 Aug  2  2017 znew
lrwxrwxrwx. 1 root root          6 Mar 28 02:05 zsoelim -> soelim
[root@centos7 09:38:24 data]#ll /bin
lrwxrwxrwx. 1 root root 7 Mar 28 02:04 /bin -> usr/bin
例:
[root@centos6 data]#ll -d /etc      只顯示目錄本身
drwxr-xr-x. 118 root root 12288 Apr  1 09:34 /etc
[root@centos6 data]#ll -d /etc/*     顯示目錄下文件和目錄
drwxr-xr-x.  3 root root   4096 Mar 27 17:19 /etc/abrt
drwxr-xr-x.  4 root root   4096 Mar 27 17:29 /etc/acpi
-rw-r--r--.  1 root root     47 Mar 31 21:05 /etc/adjtime
-rw-r--r--.  1 root root   1512 Jan 12  2010 /etc/aliases
[root@centos6 data]#ll -d /etc/*/    顯示目錄下目錄
drwxr-xr-x.  3 root root 4096 Mar 27 17:19 /etc/abrt/
drwxr-xr-x.  4 root root 4096 Mar 27 17:29 /etc/acpi/
drwxr-xr-x.  2 root root 4096 Mar 27 17:26 /etc/alsa/
drwxr-xr-x.  2 root root 4096 Mar 27 17:30 /etc/alternatives/

命令shutdown
選項:
-r
centos6執行shutdown -r 后面要加時間
centos7則可以直接執行
文件通配符
匹配零個或多個字符
? 匹配任何單個字符
~ 當前用戶家目錄
~mage 用戶mage家目錄
~+ 當前工作目錄
~- 前一個工作目錄
[0-9] 匹配數字范圍
[a-z]:字母
[A-Z]:字母
[wang] 匹配列表中的任何的一個字符
[^wang] 匹配列表中的所有字符以外的字符
例:通配符?
[root@centos7 20:01:30 data]#ls ?
                                 ###漢字也算一個字符
例:通配符[]
[root@centos7 20:29:40 data]#touch file{a..z} file{A..Z}
[root@centos7 20:30:16 data]#ls file[a-d]
filea  fileA  fileb  fileB  filec  fileC  filed  
###字母排序以小大小大排序
文件通配符
預定義的字符類:man 7 glob
[:digit:]:任意數字,相當于0-9
[:lower:]:任意小寫字母
[:upper:]: 任意大寫字母
[:alpha:]: 任意大小寫字母
[:alnum:]:任意數字或字母
[:blank:]:水平空白字符
[:space:]:水平或垂直空白字符
[:punct:]:標點符號
[:print:]:可打印字符
[:cntrl:]:控制(非打印)字符
[:graph:]:圖形字符
[:xdigit:]:十六進制字符
例:只顯示隱藏文件,等價于l.
[root@centos7 20:39:01 ~]#ls -d .*
.  ..  .bash_history  .bash_logout  .bash_profile  .bashrc  .cache  .config  .cshrc  .dbus  .esd_auth  .ICEauthority  .lesshst  .local  .serverauth.3629  .tcshrc  .Xauthority
例:顯示該目錄及子目錄下隱藏文件
[root@centos7 20:45:36 ~]#ls -R .[^.]*
.bash_history  .bash_logout  .bash_profile  .bashrc  .cshrc  .esd_auth  .ICEauthority  .lesshst  .serverauth.3629  .tcshrc  .Xauthority

.cache:
abrt   event-sound-cache.tdb.centos7.x86_64-redhat-linux-gnu  gnome-control-center  gnome-software  imsettings  thumbnails  yelp
dconf  evolution                                              gnome-shell           gstreamer-1.0   media-art   tracker

.cache/abrt:
applet_dirlist  lastnotification

.cache/dconf:
user

.cache/evolution:
addressbook  calendar  mail  memos  sources  tasks
注:目錄中含..這個目錄,表示上級目錄,因此第二個為字符為非.[^.]
例:
[root@centos7 20:54:28 ~]#ls -ad .[^.]*
.aa  .bash_history  .bash_logout  .bash_profile  .bashrc  .cache  .config  .cshrc  .dbus  .esd_auth  .ICEauthority  .lesshst  .local  .serverauth.3629  .tcshrc  .Xauthority
命令touch
touch [OPTION]... FILE...
-a 僅改變 atimectime
-m 僅改變 mtimectime
-t  [[CC]YY]MMDDhhmm[.ss] 
指定atimemtime的時間戳
-c 如果文件不存在,則不予創建

注:touch創建新文件時,若文件名已存在,不會發生覆蓋,但改變時間戳,包括atime,ctime,mtime

[root@centos6 data]#touch -a file2
[root@centos6 data]#stat file2
  File: `file2'
  Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
Device: 803h/2051d	Inode: 12          Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2018-03-31 15:16:18.576995276 +0800
Modify: 2018-03-31 15:12:56.272000245 +0800
Change: 2018-03-31 15:16:18.576995276 +0800
[root@centos6 data]#touch -m file2
[root@centos6 data]#stat file2
  File: `file2'
  Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
Device: 803h/2051d	Inode: 12          Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2018-03-31 15:16:18.576995276 +0800
Modify: 2018-03-31 15:17:18.587996113 +0800
Change: 2018-03-31 15:17:18.587996113 +0800

命令cp
常用選項:
-i:覆蓋前提示 n:不覆蓋,注意兩者順序
-r, -R: 遞歸復制目錄及內部的所有內容
-a: 歸檔,相當于-dR --preserv=all
-d--no-dereference --preserv=links 不復制原文件,只復制鏈接名
--preserv[=ATTR_LIST]
mode: 權限
ownership: 屬主屬組
timestamp: 
links
xattr
context
all

-p: 等同--preserv=mode,ownership,timestamp
-v: --verbose
-f: --force
-u:--update 只復制源比目標更新文件或目標不存在的文件
--backup=numbered 目標存在,覆蓋前先備份加數字后綴
-f強制覆蓋(先刪除原文件,再創建新文件,所有者所屬主均發生變化)
[hehe@centos7 21:25:16 ~]$ll
total 4
-rw-r--r--. 1 root root 23 Mar 30 21:24 issue
[hehe@centos7 21:25:23 ~]$cp -f /etc/motd issue
[hehe@centos7 21:25:51 ~]$ll
total 4
-rw-r--r--. 1 hehe hehe 7 Mar 30 21:25 issue
-d保留軟鏈接
例:
[root@centos7 21:34:36 data]#ll /etc/grub2.cfg 
lrwxrwxrwx. 1 root root 22 Mar 28 02:10 /etc/grub2.cfg -> ../boot/grub2/grub.cfg
[root@centos7 21:35:09 data]#cp -d /etc/grub2.cfg /data
[root@centos7 21:35:43 data]#ll
total 0
lrwxrwxrwx. 1 root root 22 Mar 30 21:35 grub2.cfg -> ../boot/grub2/grub.cfg
-a存檔,保留所有屬性,常用于備份,可和-v(顯示過程)一起使用,但容易造成終端死機


--backup=numbered 
例:
[root@centos7 21:47:39 ~]#cp --backup=numbered f1 /data/f1
cp: overwrite /data/f1? y
[root@centos7 21:47:55 data]#ls
f1  f1.~1~  f1.~2~
可定義成別名,,防止誤覆蓋
復制特殊文件如:/dev/sda,r如果不加-a,會復制里面的數據,而不是文件名稱
cp -a /dev/sda ./
練習
1、定義別名命令baketc,每天將/etc/目錄下所有文件,備份到
/data獨立的子目錄下,并要求子目錄格式為 backupYYYY-mm-dd,
備份過程可見
練習
[root@centos7 22:00:09 data]#cp -av /etc /data/backup`date +%F`
[root@centos7 22:00:04 data]#ls 
backup2018-03-30
[root@centos7 15:48:45 data]#alias backetc='cp -av /etc /data/backup`date +%F`'

##### 命令rename
例:
[root@centos7 22:09:13 data]#touch {1..30}.conf
[root@centos7 22:09:28 data]#ls
10.conf  13.conf  16.conf  19.conf  21.conf  24.conf  27.conf  2.conf   4.conf  7.conf
11.conf  14.conf  17.conf  1.conf   22.conf  25.conf  28.conf  30.conf  5.conf  8.conf
12.conf  15.conf  18.conf  20.conf  23.conf  26.conf  29.conf  3.conf   6.conf  9.conf
[root@centos7 22:09:28 data]#rename "conf" "conf.bak" *.conf
[root@centos7 22:11:21 data]#ls 
10.conf.bak  14.conf.bak  18.conf.bak  21.conf.bak  25.conf.bak  29.conf.bak  4.conf.bak  8.conf.bak
11.conf.bak  15.conf.bak  19.conf.bak  22.conf.bak  26.conf.bak  2.conf.bak   5.conf.bak  9.conf.bak
12.conf.bak  16.conf.bak  1.conf.bak   23.conf.bak  27.conf.bak  30.conf.bak  6.conf.bak
13.conf.bak  17.conf.bak  20.conf.bak  24.conf.bak  28.conf.bak  3.conf.bak   7.conf.bak
命令rm防止誤刪除
方法:定義別名
[root@centos7 08:28:26 ~]#alias rm='mv -t /data'
并且寫入配置文件.bashrc
磁盤空間被占滿
boot目錄下生成一個大文件
[root@centos7 08:51:45 boot]#dd if=/dev/zero of=/boot/bigfile bs=1M count=800
[root@centos7 08:53:47 boot]#df -h 
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        30G   33M   30G   1% /data
/dev/sda1      1014M  958M   57M  95% /boot
此時/boot空間即將被占滿,假若有用戶正在訪問bigfile這個文件,用rm刪除文件,文件雖然被刪除,但并不能馬上釋放空間。
解決方法一:
lsof |grep deleted  查看系統中被刪除,但還沒釋放空間的文件。
[root@centos7 09:12:18 boot]#lsof |grep deleted
single    1691 2277           root   15r      REG                8,2     32768   68247442 /root/.local/share/gvfs-metadata/root-056956aa.log (deleted)
vi        2935                root    3r      REG                8,1 838860800         79 /boot/bigfile (deleted)
[root@centos7 09:12:48 boot]#killall vi 
[root@centos7 09:15:23 boot]#df -h
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           609M     0  609M   0% /sys/fs/cgroup
/dev/sda3        30G   33M   30G   1% /data
/dev/sda1      1014M  158M  857M  16% /boot
解決方法二:
[root@centos7 09:17:41 boot]#>bigfile 
[root@centos7 09:17:55 boot]#df -h 
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        30G   33M   30G   1% /data
/dev/sda1      1014M  158M  857M  16% /boot
tmpfs           122M   24K  122M   1% /run/user/0
/dev/sr0        8.1G  8.1G     0 100% /run/media/root/CentOS 7 x86_64
[root@centos7 09:18:14 boot]#\rm -rf bigfile
命令tree
-L 顯示目錄的層級       例:tree -L 2 /etc/
-d 只顯示目錄不顯示文件
-P pattern 只顯示由指定pattern匹配到的路徑
元數據與數據
inodeindex node)表中包含文件系統所有文件列表
一個節點 (索引節點)是在一個表項,包含有關文件的信息( 元數據 ),包
括:
文件類型,權限,UID,GID
鏈接數(指向這個文件名路徑名稱個數)
該文件的大小和不同的時間戳
指向磁盤上文件的數據塊指針
有關文件的其他數據

目錄的元數據:包括目錄自身權限,目錄類型,UID,GID等信息
目錄真實數據:存放的是文件i節點編號,通過節點編號找到節點表,通過節點表找到磁盤中文件數據,因此刪除目錄中的文件并不是刪除文件數據,只是刪除文件節點編號,數據并未被馬上刪除。
徹底刪除磁盤中的文件使用如下方法:
[root@centos7 10:36:51 data]#ll
total 4
-rw-r--r--. 1 root root 2059 Mar 31 10:36 passwd
[root@centos7 10:36:54 data]#shred -zv -n 8 passwd 
shred: passwd: pass 1/9 (random)...
shred: passwd: pass 2/9 (555555)...
shred: passwd: pass 3/9 (000000)...
shred: passwd: pass 4/9 (random)...
shred: passwd: pass 5/9 (ffffff)...
shred: passwd: pass 6/9 (random)...
shred: passwd: pass 7/9 (aaaaaa)...
shred: passwd: pass 8/9 (random)...
shred: passwd: pass 9/9 (000000)...
[root@centos7 10:37:18 data]#ll
total 4
-rw-r--r--. 1 root root 4096 Mar 31 10:37 passwd
-z表示最后一次用0覆蓋,-n表示覆蓋的次數
模擬磁盤inode被用完,但磁盤空間并沒有滿(/boot/test)
[root@centos7 10:07:10 testdir]#df -i 
Filesystem       Inodes  IUsed    IFree IUse% Mounted on
/dev/sda3      15728640     10 15728630    1% /data
/dev/sda1        524288    327   523961    1% /boot
echo file{1..524288} |xargs touch    xargs解決參數過多問題
touch: cannot touch file524287: No space left on device
touch: cannot touch file524288: No space left on device
[root@centos7 10:14:14 test]#df -h 
/dev/sda1      1014M  433M  582M  43% /boot
[root@centos7 10:13:13 test]#df -i
Filesystem       Inodes  IUsed    IFree IUse% Mounted on
/dev/sda1        524288 524288        0  100% /boot
結果磁盤空間還剩余,但inode被用光,提示磁盤空間不足,刪除大量文件
echo file{1..524288} |xargs rm
軟硬鏈接
鏈接數含義:同一個文件有幾個名,硬鏈接鏈接一次鏈接數增加一次,而軟鏈接不增加。
硬鏈接機制:一個節點編號,多個文件名
軟硬鏈接本質區別:
硬鏈接:同一個文件,多個名字
軟鏈接:一個文件對應快捷方式,不同文件
硬鏈接特點:
1.鏈接文件彼此獨立平等,刪除一個文件只是刪除一個名字,還可通過其他文件名訪問
2.不可以跨分區鏈接(硬鏈接原理是一個節點,如果跨分區了,可能出現多個節點)
3.不能對目錄創建
4.硬鏈接鏈接次數會增加
5.刪除原始文件,新鏈接文件不受影響
6.硬鏈接大小由文件由原文件大小決定

軟鏈接特點:
1.軟鏈接依賴原始文件
2.可以跨分區
3.可對目錄創建
4.鏈接數不增加
5.刪除原始文件,鏈接失效
6.軟鏈接的大小由原始文件的路徑決定

注:創建軟鏈接路徑,相對路徑不能使相對當前目錄路徑,而是相對軟鏈接的路徑
例:
[root@centos7 11:13:54 data]#ln -s ../data/fi /root/link2
[root@centos7 11:14:54 data]#ll /root/link2
lrwxrwxrwx. 1 root root 10 Mar 31 11:14 /root/link2 -> ../data/fi
命令readlink(查看鏈接對應的原始文件)
例:
[root@centos7 11:30:25 ~]#readlink link2
../data/fi
利用軟鏈接實現軟件部署
假設nginx有兩個版本,nginx1,nginx2,可實現兩個版本相互切換
[root@centos7 11:45:14 data]#ln -s nginx1 nginx
[root@centos7 11:45:37 data]#ll
total 0
lrwxrwxrwx. 1 root root 6 Mar 31 11:45 nginx -> nginx1
drwxr-xr-x. 2 root root 6 Mar 31 11:45 nginx1
drwxr-xr-x. 2 root root 6 Mar 31 11:45 nginx2
[root@centos7 11:46:06 data]#rm nginx
[root@centos7 11:46:55 data]#ln -s nginx2 nginx
[root@centos7 11:47:00 data]#ll
total 0
lrwxrwxrwx. 1 root root  6 Mar 31 11:47 nginx -> nginx2
drwxr-xr-x. 2 root root 20 Mar 31 11:46 nginx1
drwxr-xr-x. 2 root root  6 Mar 31 11:45 nginx2
命令file
文件可以包含多種類型的數據
檢查文件的類型,然后確定適當的打開命令或應用程序使用
file [options] <filename>...
常用選項:
-b 列出文件辨識結果時,不顯示文件名稱
-f filelist 列出文件filelist中文件名的文件類型
-F 使用指定分隔符號替換輸出文件名后默認的”:”分隔符
-L 查看對應軟鏈接對應文件的文件類型
I/O重定
錯誤輸出和正確輸出分別輸入到對應文件中

[root@centos7 12:37:16 data]#ls /erro /data >true 2>erro
[root@centos7 13:41:55 data]#cat true 
/data:
erro
link
links
nginx
[root@centos7 13:42:15 data]#cat erro 
ls: cannot access /erro: No such file or directory
正確輸出和錯誤輸出都重定向到一個文件中
方法一:
[root@centos7 13:42:24 data]#ls /erro /data >f1 2>&1
[root@centos7 13:46:49 data]#cat f1
ls: cannot access /erro: No such file or directory
/data:
erro
f1
link
links
nginx
方法二:
[root@centos7 13:46:58 data]#ls /erro /data &>f1
[root@centos7 13:53:15 data]#cat f1
ls: cannot access /erro: No such file or directory
/data:
erro
f1
link
links
nginx

禁止覆蓋,強制覆蓋,允許覆蓋
[root@centos7 13:53:24 data]#hostname >f1
[root@centos7 13:56:47 data]#set -C 
[root@centos7 13:56:56 data]#hostname >f1
-bash: f1: cannot overwrite existing file
[root@centos7 13:57:07 data]#ls >| f1
[root@centos7 13:57:58 data]#set +C f1
以下四個重定向,哪個與其它三個不同
[root@centos7 13:58:53 data]#ls /erro /data >log1 2>&1
[root@centos7 14:05:51 data]#ls /erro /data 2>&1 >log2
ls: cannot access /erro: No such file or directory
[root@centos7 14:07:39 data]#ls /erro /data &>log3
[root@centos7 14:08:12 data]#ls /erro /data 2>log4 >&2
其中第二個執行結果錯誤輸出未重定向到文件中
cat <f1 >f1    相當于清空f1
cat <f1 >f2   相當復制f1f2
cat <f1 >>f2   無限追加f1內容到f2

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/94191

(0)
王琪鋒王琪鋒
上一篇 2018-04-01 11:57
下一篇 2018-04-01 13:40

相關推薦

  • N31第一周

    一、計算機的組成及其功能。 計算機是由運算器、控制器、存儲器、輸入設備、輸出設備五大部件組成,每一個部分分別按照要求執行特定的基本功能。 運算器:運算器的主要功能是對數據進行各種運算。 控制器:控制器是整個計算機系統的控制中心,它指揮計算機各部分協調地工作,保證計算機按照預先規定的目標和步驟有條不紊的進行操作及處理。 存儲器:存儲器的主要功能是存儲程序和各種…

    2018-06-19
  • 軟件包管理 1 —–基本知識 rpm yum

    軟件包管理,要做到如何管理軟件 ,包括安裝 ,卸載, 基本的功能查詢,搜索等重點如何使用rpm包yum管理如何編譯安裝**軟件 運行和編譯 **ABI:Application Binary Interface 操作系統接口標準,調用2進制程序的接口Windows 與Linux不兼容ELF(Executable and Linkable Format)PE (…

    Linux筆記 2018-04-22
  • Linux第一周命令總結

    hostname? 完整主機名? cat +文件路徑 可查看文件信息 cat /etc/centos-release 查看文件? 版本的名稱、發行時間所有shell cat/etc/shells? 顯示當前系統使用的 lsd_release -a? 命令? 查看版本 /etc/centos-release 是文本文件? cat是查看文本的命令 uname-r…

    2018-07-22
  • 第四周博客作業

    用戶權限和正則表達式grep相關

    Linux筆記 2018-03-29
  • SElinux簡介

    本文主要介紹:SELinux概念、配置SELinux、管理文件安全標簽、管理端口標簽、管理SELinux布爾值開關、管理日志、查看SELinux幫助以及SElinux操作示例(遷移httpd服務默認目錄)

    2018-05-17
  • 網絡基礎2

    網絡基礎2

    Linux筆記 2018-05-01
欧美性久久久久