最近在學習Linux,特此記錄一下
Linux系統管理及服務配置
1.文件管理
1.文件類型(理解)
-
簡介
-
windows文件類型以後綴區分。
- exe
- doc
-
linux文件類型以單個字母區分(文件屬性中)
- - 普通文件(文本文件,二進制文件,壓縮文件,電影,圖片。。。) d 目錄文件(藍色) b 設備文件(塊設備)存儲設備硬盤,U盤 /dev/sda, /dev/sda1 c 設備文件(字符設備)打印機,終端 /dev/tty1 l 鏈接文件(淡藍色) s 套接字文件 p 管道文件
-
-
示例
- 示例1 - 查看各式各樣的文件類型。你能找出幾種呢? [root@tianyun ~]# ll -d /etc/hosts /bin/ls /home /dev/sda /dev/tty1 /etc/grub2.cfg /dev/log /run/dmeventd-client -rwxr-xr-x. 1 root root 117616 Nov 20 2015 /bin/ls srw-rw-rw- 1 root root 0 Mar 14 2017 /dev/log brw-rw---- 1 root disk 8, 0 Mar 14 09:03 /dev/sda crw--w---- 1 root tty 4, 1 Mar 14 09:03 /dev/tty1 lrwxrwxrwx. 1 root root 22 Dec 21 01:40 /etc/grub2.cfg -> ../boot/grub2/grub.cfg -rw-r--r-- 1 root root 392 Feb 22 15:51 /etc/hosts drwxr-xr-x. 10 root root 4096 Mar 14 11:00 /home
-
注意
- 通過顏色判斷文件的類型是不一定正確的!!!
Linux系統中文件不是必須設置擴展名!!!
2.文件管理命令
-
1.改變目錄
- cd [ 絕對路徑和 | 相對路徑]目錄
- pwd 查看當前目錄
-
2.創建文件
- touch 1.txt
cat >1.txt
-
3.創建目錄
- # mkdir dir1 # mkdir /home/dir2 /home/dir3 # mkdir -v /home/dir8/111/22 //顯示創建過程 # mkdir -pv /home/dir8/111/222 //包括其父母的創建,不會有任何消息輸出
-
4.查看文件內容
-
推薦查看的文件
- /bin/date /etc/hosts /etc/sysconfig/network /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/passwd /etc/shadow /etc/group /etc/grub2.cfg /etc/resolv.conf /etc/profile //設置系統環境變量 /etc/bashrc //影響bash shell環境 /var/log/messages //系統主日誌文件 /var/log/secure //跟安全相關的日誌如ssh登錄,本地登錄...
-
cat全部
- cat 文件名
-
-n 顯示行號
-A 包括控制字符(換行符/製表符)
tac 從最後一行逆序打印
- more翻頁
- more
- head頭部
- [root@tianyun ~]# head /etc/passwd
[root@tianyun ~]# head -2 /etc/passwd
- tail尾部
- [root@tianyun ~]# tail /etc/passwd
[root@tianyun ~]# tail -1 /etc/passwd
[root@tianyun ~]# tail -F /var/log/secure //-F 動態查看文件的尾部
- grep過濾關鍵字
- # grep 'root' /etc/passwd
-
5.複製
- # cp -v install.log /home/dir1 //-v 顯示詳細信息 # cp -rv /etc /home/dir1 //-r 拷貝文件夾 # cp -rf /etc /tmp //-f, --force 強制 #-r 遞歸複製文件夾下面所有文件及屬性 #-i 提示信息
-
cp到底是何方神聖?
- [root@tianyun ~]# type -a cp cp is aliased to `cp -i' cp is /bin/cp
-
6.移動
-
7.刪除
-
rm
- -r 遞歸 -f force強制 不顯示任何信息 -v 詳細過程 [root@tianyun ~]# rm -rf /home/dir10/* //不包括隱藏文件
-
rmdir
- 刪除空目錄
- -r 遞歸刪除空目錄
-
-
-
7.查找 find
-
find查找標準參數 find 路徑 參數 文件
- find / -name 1.txt
-
find -name
- find -name a.txt
-
按照文件大小查找 find / -size +1000k 大於1000k大小文件
-1000k 小於1000k -
根據時間查找 find / -mtime -(+)3 查找修改時間三天以(外)內的
-atime 訪問文件時間
-ctime 修改狀態的時間
-
-
8.grep 文本全局正則查找
-
-i 忽略大小寫
-
-c 只顯示匹配行的數量 查看匹配多少數量
-
-r 遞歸查找子目錄
-
-n 顯示行
- grep -n ‘字符’ a.txt
-
grep ‘字符’ * 當前目錄下查找所有含有搜索字符的文件
-
正則
- cat demo/a.txt | grep ‘1’ 搜索 字母開頭
- ls | grep ‘^w’ 字母開頭的文件
-
結合管道符 |
- ls | grep a 將ls得到的結果交給 grep 篩選
-
-
命令查找
- whereis
- which
-
-
9.鏈接
-
軟鏈接 -s
-
應用 ln -s 源文件 鏈接文件
- 軟鏈接:新建了一塊地址 存放源文件的引用的地址,所以當源文件刪除後,軟鏈接失效 相當於快捷方式
-
-
硬鏈接
-
ln 源文件 鏈接文件
- 硬鏈接:指向源文件的地址,當源文件引用被刪除後,硬鏈接依舊指向源文件地址,指向數據
-
-
查看
- 當 ll 後 文件後面出現 --> 爲軟鏈接
-
-
10.修改文件內容
-
1.圖形文件編輯器1
- 圖形文件編輯器 gedit
-
2.文件編輯器2
-
VI 的三個模式
- 可視模式,按V進入,小v光標自己選取,大V直接選取一行,YYp複製粘貼即可。
-
-
ctrl+V,上下選擇,然後可以ctrl+> 進行整體縮進。
- 命令模式
- 光標定位
- 光標定位
hjkl //上下左右
0 $ //行首行尾
gg G //野獸頁尾
3G 進入第三行
/string (n N 可以循環的) //查找字符,n下一個
-
文本編輯
-
文本編輯(少量)
y 複製 yy 3yy ygg yG (以行爲單位) d 刪除 dd 3dd dgg dG (以行爲單位) p 粘貼 x 刪除光標所在的字符 D 從光標處刪除到行尾 u undo撤銷 ^r redo重做 r 可以用來修改一個字符
-
進入其它模式
a 進入插入模式 i 進入插入模式 o 進入插入模式 A 進入插入模式 : 進入末行模式(擴展命令模式) v 進入可視模式 ^v 進入可視塊模式 V 進入可視行模式 R 進入替換模式
-
輸入模式
- insert:iaoIAO - 可視塊模式 - 塊替換: 選擇塊,r 輸入替換的字符 塊刪除: 選擇塊,d | x 塊複製: 選擇塊,y - 擴展命令模式
-
保存退出
:10 進入第10行 :w 保存 :q 退出 :wq 保存並退出 :w! 強制保存 :q! 不保存並退出 :wq! 強制保存退出 :x 保存並退出 ZZ
-
查找替換
:範圍 s/old/new/選項 :1,5 s/root/yang/ 從1-5行的root 替換爲yang - 讀入文件/寫文件(另存爲) :w 存儲到當前文件 :w /tmp/aaa.txt 另存爲/tmp/aaa.txt :1,3 w /tmp/2.txt :r /etc/hosts 讀入文件到當前行後 :5 r /etc/hosts 讀入文件到第5行後 - :set nu 設置行號 :set ic 不區分大小寫 :set ai 自動縮進 :set list 顯示控制字符 :set nonu 取消設置行號
-
11.文件基本信息:時間(瞭解)
-
時間類型
- 訪問時間:atime,查看內容 修改時間:mtime,修改內容 改變時間:ctime,文件屬性,比如權限 刪除時間:dtime,文件被刪除的時間
-
查詢示例
[root@tianyun ~]# stat install.log File: “install.log” Size: 34793 Blocks: 80 IO Block: 4096 一般文件 Device: 802h/2050d Inode: 65282 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2012-10-23 16:53:20.000000000 +0800 Modify: 2012-10-23 13:49:46.000000000 +0800 Change: 2012-10-23 13:49:52.000000000 +0800
-
ls -l 文件名 僅看的是文件的修改時間
3.文件權限
-
r:read w:write x:exe
-
d rwx r-x r-x
文件 用戶 用戶所屬組其他用戶 其他任何用戶 -
更改權限
-
user group other all
chmod [ugo / a] [±=] [rwx] 文件或者文件夾 -
方式1
- #chmod u -w b.txt #chomd u-w,o+w b.txt #chmod u=rw btxt 賦給權限 #chomd a -w 文件夾 對所有等級的用戶 減去寫的權限
-
八進制方式
-
r:4 w:2 r:1 從左往右賦值
-
chmod 644 1.txt
- u=6,g=4,o=4
-
對於一個文件夾:
#chmod 777 code
-
-
#chmod 006 * 給當前目錄下所有文件其他用戶 賦予讀寫執行權限,並且減去當前用戶,組用戶的所有權限
#chmod -66 減去組,其他用戶的讀寫權限 數字從左往右開始匹配 ogu
- 遞歸 chmod -R 666 code 遞歸的對code 以及code目錄下所有的文件賦予權限
4.用戶與組
-
用戶
-
用戶信息
-
一個用戶必有有一個主組
一個用戶可以有多個組
一個組可以有多個用戶- 用戶賬戶的信息存放在 /etc/passwd文件中
超級用戶root(0)
程序用戶(1-499)
普通用戶(500-65535)
- 用戶賬戶的信息存放在 /etc/passwd文件中
-
用戶名 密碼 uid gid 用戶說明 家目錄 shell解釋器
python : x : 1001 : 1001 : : /home /python : /bin/sh[外鏈圖片轉存失敗(img-r4nNlv4w-1566618018618)(assets/5f1d3e6276a4c4a569345a41b885cff3b227f244b9b083d85b90bc46894ecf55.png)] -
用戶名 密碼 最近更改時間 禁止修改密碼的天數 到用戶必須修改密碼的天數 告警更改密碼期限 不活動時間 標誌
python : 636636 : 17394 : 0 : 99999 : 7 : : :
[外鏈圖片轉存失敗(img-VDUbkPK6-1566618018622)(assets/1a98857f73802bbe51687a73adf1de047d0ae2505263c2ccc092f2c4c92cc09b.png)]
-
-
新建用戶
-
useradd [optional] 用戶名
-g 指定主組名或組id,必須已經存在的組
-u 指定用戶的id
-m 自動建立用戶主目錄
-d 指定用戶的家目錄
-s 指定用戶登錄後使用shell,默認是/bin/bash- example:
sudo useradd -m 用戶名
sudo useradd -m 用戶名 -s /bin/bash
- example:
-
-
刪除用戶
- userdel -r 用戶名
刪除用戶和用戶的家目錄
- userdel -r 用戶名
-
修改用戶密碼: sudo passwd 用戶名
-
切換用戶:su 用戶名 新建的用戶由於sh的原因沒有sudo權限
-
補充
#啓用root賬戶
$ sudo password root #根據提示爲root輸入密碼
必須切換到root用戶
#設置sudo提升權限的時候不需要輸入密碼,需要修改/etc/sudoers文件sudo vi /etc/sudoers
#也可以使用工具:sudo visudo編輯Allow members of group sudo to execute any command
#將sudo組添加NOPASSWD:
%sudo ALL=(ALL:ALL) NOPASSWD: ALL
#然後按esc
:wq!#如果新添加的用戶不屬於sudo組,是不能使用sudo提升權限的,需要將用戶添加到sudo組
#以屬於sudo組的用戶登錄
sudo usermod -a -G sudo 用戶名如果沒有切換使用此命令恢復:
pkexec chmod 0440 /etc/sudoers
-
-
組
- 組信息存放在 /etc/group
- groupadd 組名
groupdel 組名
groupmod -n 新組名 舊組名
groups 顯示所有組
2.SSH連接
工作原理
- 服務器啓動的時候自己產生一個祕鑰(768bit),本地的ssh客戶端發送請求到服務器,服務器檢查點客戶端發送的數據和IP地址,確認合法後發送密鑰(768bits)給客戶端,此時客戶端將本地私鑰(256bit)和服務器的公鑰(768bit)結合成密鑰對key(1024bit),發回給服務器端,建立連接通過key-pair數據傳輸。
SSH
-
簡介
- 1.SSH是安全的加密協議,用於遠程連接Linux服務器
- 2.SSH的默認端口是22,安全協議版本是SSH2
- 3.SSH服務器端主要包含2個服務功能SSH連接和SFTP服務器
- 4.SSH客戶端包含ssh連接命令和遠程拷貝scp命令等
服務
-
如何安裝ssh?
- Sudo apt-get install openssh-server
-
啓動服務
- sudo service ssh start / stop
-
查看服務是否啓動:
- ps -aux | grep ssh
-
遠程鏈接
- sudo ssh -p 端口 用戶名@ip地址
3.vi/vim編輯模式
-
平時用的最多的vi命令:
- 移動光標的方法:
- [Ctrl]+[f]:屏幕向下移動一頁,相當於[PageDown]按鍵。forward
- [Ctrl]+[b]:屏幕向上移動一頁,相當於[PageUp]按鍵。back
- 0或功能鍵[Home]:移動到這一行的最前面字符處。
- $或功能鍵[End]:移動到這一行的最後面字符處。
- G:移動到這個文件的最後一行。
- gg:移動到這個文件的第一行,相當於1G.
- N[Enter]:N爲數字,光標向下移動N行
-
刪除、複製和粘貼:
- .:小數點,重複前一個操作。
- x,X:在一行字中,x爲向後刪除一個字符(相當於[Del]鍵),X爲向前刪除一個字符(相當於[Backspace])。
- dd:刪除光標所在的一整行。
- ndd:刪除光標所在的向下n行。
- yy:複製光標所在的一行。
- nyy:複製光標所在的向下n行。
- p,P:p爲將已複製的內容在光標的下一行粘貼,P則爲粘貼在光標的上一行。
- u:復原前一個操作。
- [Ctrl]+r:重做上一個操作。
-
查找和替換:
- /word:向下尋找一個名稱爲word的字符串。
- ?word:向上尋找一個名稱爲word的字符串。
- :n1,n2s/word1/word2/g:在第n1行和n2行之間尋找word1這個字符串,並且將其替換爲word2.
- :1,$s/word1/word2/g:從第一行到最後一行尋找word1這個字符串,並且將其替換爲word2.
- :1,$s/word1/word2/gc:從第一行到最後一行尋找word1這個字符串,並且將其替換爲word2.且在替換前顯示提示字符給用戶確認是否需要替換。
-
一般模式切換到編輯模式:
- i,I:進入插入模式,i爲從目前光標所在處插入。I爲在目前所在行的第一個非空格字符處開始插入。
- a,A:進入插入模式。a爲從目前光標所在處的下一個字符處開始插入。A爲從所在行的最後一個字符處開始插入。
- o,O:進入插入模式。o爲在下一行插入。O爲在上一行插入。
- r,R:進入替換模式。r只替換光標所在那個字符一次。R會一直替換光標所在字符,直到按下Esc鍵。
-
一般模式切換到命令行:
- :set nonu 取消行號
- :w 新文件名 另存爲新文件名
- :n1,n2 w 新文件名 將第n1行到n2行的內容另存爲新文件名
- :r 文件名A 將文件A中的內容讀入到當前文件中
- :w:將編輯的數據寫入到硬盤中。
- :q:離開vi.後面加!爲強制離開。
- :wq:保存後離開。
- :wq! 爲強制保存後離開。
- :set nu 設置顯示行號
4.軟件包
壓縮與解壓
-
tar
-
-x 解包-c 打包
-v 可視化
-f指定文件名
-t 查看包裏的東西
-z 用gzip對包進行壓縮
-j 用把bzip2對包進行壓縮 - Example:
打包 tar -cvf test.tar 1.txt 2.txt 3.txt
解包 tar -xvf test.tar
打包並且壓縮 tar -zcvf 包名 文件/文件夾
解壓壓縮包 tar -zxvf 包名 -C 指定文件夾
-
-
gzip
- 特點:這裏講gzip只能壓縮單個文件,並不是一次只能壓縮一個文件,而是壓縮的單位是單個文件,即並不能將多個文件壓縮成爲一個文件
- gzip *.txt
#解壓 gunzip xxx.gz
-
bzip2/bz2
-
bzip2 wq.txt
- —>xxx.txt.bz2
-
bzip2 xxx.txt —>–→ 刪除源文件 存放的是源文件壓縮後文件
-
解壓bz2文件:
-
bunzip2 xxx.txt.bz2
-
bzip2 -d xxx.txt.bz2
-
-
zip
- zip -r 壓縮包名字 文件1 文件2 文件夾 打壓縮包
- zip -rm 壓縮包名字 文件1 文件2 文件夾 刪除源文件並打壓縮包
- unzip 解壓
- unzip -d 指定的目錄名 mytest.zip
apt / pckg
-
redhat: centos
-
rpm 軟件包管理
-
debian : ubuntu
-
dpkg 軟件包管理:
-
簡介
- 雖然我們在使用dpkg時,已經解決掉了 軟件安裝過程中的大量問題,但是當依賴關係不滿足時,仍然需要手動解決,而apt這個工具解決了這樣的問題,linux distribution 先將軟件放置到對應的服務器中,然後分析軟件的依賴關係,並且記錄下來,然後當客戶端有安裝軟件需求時,通過清單列表與本地的dpkg以存在的軟件數據相比較,就能從網絡端獲取所有需要的具有依賴屬性的軟件了。
- 然而,由於每位用戶所處的網絡環境不同,不可能隨意地訪問各鏡像站點。爲了能夠有選擇地訪問,在Ubuntu系統中,使用軟件源配置文件/etc/apt/sources.list列出最合適訪問的鏡像站點地址。
- apt簡介:
- 工作原理:
- Ubuntu採用集中式的軟件倉庫機制,將各式各樣的軟件包分門別類地存放在軟件倉庫中,進行有效地組織和管理。然後,將軟件倉庫置於許許多多的鏡像服務器中,並保持基本一致。這樣,所有的Ubuntu用戶隨時都能獲得最新版本的安裝軟件包。因此,對於用戶,這些鏡像服務器就是他們的軟件源(Reposity)
-
dpkg是"Debian Package"的簡寫。
- | dpkg -r 包名 | 卸載軟件包但保留配置信息 |
- | dpkg -P 包名 | 卸載軟件包聯通配置信息一併卸載 | |
- | dpkg -l 包名 |查看軟件包
- | dpkg -l | grep zip |
- | dpkg -i 包文件名(.deb) 安裝軟件包
- dpkg -i sogoupinyin_2.2.0.0108_amd64.deb |
-
apt 與 apt-get
-
apt-cache search 搜索應用程序
-
apt-cache show 現實應用程序安裝細節
-
apt = apt-get + apt-cache
-
apt search
-
apt show
-
apt install ~ apt-get install
-
apt remove ~ apt-get remove
-
apt list
-
5…shell 語法
### 命令 選項 參數
### [root@localhost ~]# ls
### [root@localhost ~]# ls -a
### [root@localhost ~]# ls -a /home
### 命令:整條shell命令的主體
### 選項:會影響會微調命令的行爲 //通常以 -, --
### 參數:命令作用的對象
6. 獲得幫助
HELP
-
語法
- 命令 --help
-
示例(ls --help)
man
baidu, google
7.總結
創建、複製、刪除、移動、查看、編輯
a-z ↩︎