```
## 補充命令
```
whoami 查看當前哪個用戶登錄
date 顯示當前的日期和時間
cal 查看當月日曆
cal 2018 查看2018全年的日曆
```
## 文件權限
```
rwx
r 4 100 讀
w 2 010 寫
x 1 001 執行 exec
- 0 沒有權限
u 文件的擁有者
g group 文件所屬組
o 其它用戶
a 以上所有
+ 在原有的基礎上 增加權限
- 在原有的基礎上 減少權限
= 在原有的基礎上 更新權限 不寫就代表 =
chmod
sudo chmod u+x test.txt 給test 擁有者增加執行的權限
sudo chmod g+w test.txt 給所屬的組增加寫的權限
sudo chmod a-w test.txt 給所有的 減去寫的權限
sudo chmod a=rwx test.txt 讓所有的用戶更新成 讀寫執行
sudo chmod g-x,g-w,o-w,o-x test.txt
sudo chmod 775 test.txt 更新權限 775
修改目錄權限的時候 記住先回到 上一級
chmod -R 遞歸修改權限
```
## 更改文件的擁有者 chown
```
sudo chown 用戶名 目標目錄
sudo chown 用戶名:組名 目標目錄
sudo chown -R 用戶名:組名 目標目錄 遞歸修改所屬的用戶及組
```
## 更改文件的所屬組 chgrp
```
sudo chgrp 組名 目錄名或者文件名
sudo chgrp -R 組名 目錄名或者文件名 遞歸修改
```
## chattr chmod 後面的大boss
```
sudo chattr +|-i 文件名 給文件增加或者去除只讀屬性 只能看不能修改 不能修改權限 不能刪除
sudo chattr +|-a 文件名 只能往裏寫 看 不能刪除 不能寫
+a 只能 查看 只能echo >> 追加
不能刪除 不能vi 寫入內容 不能更新權限
-a 解除保護 一般用於日誌文件
```
## 用戶和組
```
一個用戶必須有一個主組
一個用戶可以同時屬於多個組
一個組可以擁有多個用戶
用戶信息存在: /etc/passwd
組信息存在:/etc/group
密碼信息存在: /etc/shadow
```
### 創建用戶 useradd
```
useradd
sudo useradd 用戶名
-g 指定所屬的組
-m 自動建立用戶的家目錄
-d 指定用戶的家目錄 並不一定在home裏邊
-u 手動指定用戶的id
-s 指定 /usr/sbin/nologin 或者 /bin/bash
zelinxiong:x:1001:1002::/home/zelinxiong:/bin/bash
新建一個用戶的同時 會自動創建一個用戶名命名的組
sudo useradd -m qiulinxiong -g need888 -d /home/qiulin666
qiulinxiong:x:1003:1000::/home/qiulin666:
sudo useradd -m yuhuxiong -g kangbazi
yuhuxiong:x:1002:1001::/home/yuhuxiong:
sudo useradd -m shiminxiong -g kangbazi -s /bin/bash
sudo useradd -m shimin -g kangbazi -s /usr/sbin/nologin
第一部分:用戶名
第二部分:密碼
第三部分:用戶id
第四部分:組id
第五部分:備註信息
第六部分:用戶的家目錄
第七部分: /bin/bash 該用戶具備腳本執行的權限 也就是說 可以登錄
/usr/sbin/nologin 表示改用戶不具備腳
本執行的權限 也就是不能切換登錄
```
### 修改用戶密碼
```
sudo passwd 用戶名 不寫用戶名 代表你修改root
passwd -l 用戶名 鎖定用戶密碼
passwd -u 用戶名 解鎖用戶密碼
```
### 刪除用戶 userdel
```
sudo userdel shimin #/etc/passwd shimin記錄取消
sudo userdel -r shiminxiong # 刪除 /etc/passwd 記錄的同時 將 用戶的家目錄一併刪除
提示被佔用
kill -9 進程號
```
### 修改用戶
```
usermod
-u 用戶id
-g 所屬組 組的id
-G 組的名稱 附屬組
-a 將用戶添加到附屬組 跟G配合使用
-d 用戶家目錄
-l 修改用戶名
usermod -l yuhu yuhuxiong
sudo usermod -g 1001 -u 1003 zelinxiong 更改zelinxiong 的所屬組id 用戶id
sudo usermod -d /home/zelin zelinxiong 更改 zelinxiong的家目錄
sudo usermod -a -G need888 zelinxiong 將zelinxiong 加入到臨時組need888 中
```
### su sudo
> ubuntu 禁止root 用戶 系統安裝的時候 新建一個用戶名 自動屬於 sudo組 sudo權限 低於root 但是高於普通用戶 普通用戶只能 處理自己創建的內容 管理員權限大 這個時候可以使用sudo 暫時提升權限
```
sudo 命令 #需要用戶輸入自己的密碼 暫時提升權限
su 用戶 切換用戶
sudo usermod -a -G sudo 用戶名 將一個普通用戶 臨時加入 sudo組 這樣 該用戶權限 就有提升
```
### 其它命令
```
whoami 查看當前的用戶
id 直接查看當前用戶的 id 組信息
need888@need888-virtual-machine:~$ groups
need888 adm cdrom sudo dip plugdev lpadmin sambashare 查看當前用戶所屬的組
```
### 組管理
```
groupadd 組名
python1806:x:1003:
組名 組密碼 組id
groupdel 組名
groupmod -n 新組名 舊組名 組名更新
```
## 文本編輯器 vi vim
vim 編輯是 是vi的增強版
```
sudo apt-get install vim
vi 文件名
創建文件方式:
1.touch 文件名
2.vim 文件名 保存 也是創建文件的一種方式
3.cp
```
### 編輯模式
| 按鈕 | 說明 |
| ---- | -------------------- |
| i | 在當前光標的位置插入文本 |
| a | 在光標的下一個文職插入文本 |
| o | 在光標的下一行插入文本 |
| s | 刪除光標當前位置的字符 然後輸入內容 |
| A | 自動將光標定位到該行末尾 在行尾插入文本 |
| S | 刪除光標當前行的字符然後輸入內容 |
| L | 最後一行的行首 |
| I | 本行的行首 |
| ESC | 回到命令模式 |
### 命令模式 默認進入命令模式 輸入法 切換到英文輸入狀態
| 按鍵 | 說明 |
| ---------- | ----------------------------- |
| H | 向左移動 |
| J | 向下移動 |
| K | 向上移動 |
| L | 向右移動 |
| ( | 移動到段落開頭 |
| ) | 移動到段落結尾 |
| gg | 回到第一行 |
| GG | 回到最後一行 |
| ngg 4gg | 向上移動到第4行 n 是一個數字 |
| yy | 複製一行 ctrl+c |
| p | 粘貼一行 |
| nyy | 複製n行 n 是數字 |
| np | 粘貼n行 |
| dd | 刪除1行 還可以當剪切使用 |
| ndd | 刪除n行 |
| u | 撤銷上一次的操作 類似於windows 中的 ctrl+z |
| . | 重複上一次的操作 |
| shift+6 | 本行行首 |
| shift+4 | 本行行尾 |
| :或者 / ? | 進入底部命令模式 |
### 底部命令模式 保存 退出 查找 替換
| 快捷鍵 | 說明 |
| --------------------- | -------------------------------------- |
| :wq | 保存退出 |
| :q | 不保存退出 |
| :q! | 強制退出 |
| :wq! | 強制保存並退出 |
| :x | 保存並退出 |
| :set nu | 設置行號 |
| :行號 :66 | 把光標定位到第幾行 |
| :set nonu | 不顯示行號 |
| /字符串 | 查找字符串 n 下一個 從上往下 shift+n 從下往上找 上一個 |
| ?字符串 | 查找字符串 n 上一個 從下往上 shift+n 從上往下 下一個 |
| :s/要查找的字符串/替換後的字符串 | 替換光標當前行的第一個目標詞 第二個不被替換 |
| :s/要查找的字符串/替換後的字符串/g | 替換光標當前行所有的目標詞 |
| :%s/要查找的字符串/替換後的字符串 | 替換全文每一行的第一個目標詞 第二個不被替換 |
| :%s/要查找的字符串/替換後的字符串/g | 替換全文所有的目標詞 |
| :n,ms/要查找的字符串/替換後的字符串 | 只替換n到m行之間的目標詞 |
| | |
| | |
> 如果發現編輯不了 可能是因爲 非法退出 會產生一個 .文件名.swp 的臨時隱藏文件
>
> 將其刪除 重新編輯 即可
```
:%s/http:\/\/www.baidu.com\/1.py/https:\/\/www.google.cn\/test.py
```
## 網絡管理
### ifconfig windows 中是 ipconfig
```
ens33 Link encap:Ethernet HWaddr 00:0c:29:4e:78:d2
inet addr:10.11.53.107 Bcast:10.11.53.255 Mask:255.255.255.0
inet6 addr: fe80::de4e:2eb6:3c99:2f7a/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:370513 errors:0 dropped:0 overruns:0 frame:0
TX packets:14235 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:72233130 (72.2 MB) TX bytes:1622123 (1.6 MB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:294 errors:0 dropped:0 overruns:0 frame:0
TX packets:294 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:24031 (24.0 KB) TX bytes:24031 (24.0 KB)
ens33 代表當前 ip地址屬於哪一塊網卡 一個電腦可以有多塊網卡
inet addr ipv4地址 會看
Bcast 網關 下一跳 會看
Mask 子網掩碼 會看
HWaddr mac地址
RX 接收包
TX 發送包
SYN
ack
fin
UP 網卡開啓 RUNNING 網線連接正常 會看
MULTICAST 支持組播
MTU 最大的傳輸單元
ifconfig ens33 查看制定網卡的信息
ifconfig ens33 down 關閉網卡
ifconfig ens33 up 啓用網卡
重啓網絡
1.service networking restart|start|stop service 服務名 restart|start|stop
2./etc/init.d/networking restart 重點
```
### ping 重點
```
ping -c 3 www.baidu.com 指定ping的次數
-b 測試與網關ip的連通性
```
### netstat 查看網絡連接狀況
```
netstat
-n 顯示端口號
-p 顯示進程 process
-t tcp 協議過來的 http協議 socket 協議 都是 基於tcp/ip協議
-u udp udp協議
-a 顯示所有
sudo netstat -nt
sudo netstat -nu 顯示udp協議 連接
sudo netstat -ntpa 顯示所有tcp 端口號的使用情況
sudo netstat -ntpa | grep 22 重要 經常用它來測試 ssh服務是否開啓
sudo netstat -ntpa | grep 80 測試http服務是否開啓正常運行 重點
```
## 進程管理 ps process status 進程狀態的縮寫
```
ps
-e 顯示所有的進程
-u 查看制定用戶的進程
-x 跟a 配合使用 顯示完整的信息
ps -e | more -20 顯示所有的進程 每頁20個
ps -u root | more -10 顯示root 用戶的進程信息 每屏10個
ps -ef | grep ssh 過濾所有的進程信息
ps -aux | grep ssh 重要 通常用它來測試 服務是否正常開啓 測試正在內存中的 進程信息 重點
need888 4898 0.0 0.2 94924 4412 ? S 14:15 0:03 sshd: need888@pts/17
user 用戶名
pid 進程號
0.0 cpu 佔用率
0.2 內存佔用率
94924 VSZ 虛擬內存佔用量 等待進入的
4412 駐留內存的量
? tty ?表示不是終端連接 而是遠程鏈接過來的
S 進程狀態 表示可以終端的休眠狀態 R 準備就緒隨時等候調用
14:15 進程開始時間
0:03 已經執行的時間
kill -9 進程號 重點
killall -TERM 進程名稱
killall -TERM sshd 重點
```
### top 類似於 windows 中的任務管理器
```
top
q 退出
top - 16:51:41 up 1 min, 2 users, load average: 0.29, 0.15, 0.06
Tasks: 229 total, 1 running, 126 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.2 us, 0.2 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 2017316 total, 1473660 free, 185812 used, 357844 buff/cache
KiB Swap: 998396 total, 998396 free, 0 used. 1638376 avail Mem
16:51:41 當前時間
up 1 min 系統運行的時間
2個users
load average: 0.29, 0.15, 0.06 系統的平均負載情況
0.29 每分鐘的 負載情況
0.15 每五分鐘負載情況
0.06 每15分鐘的負載情況
值越大 說明負載越大 也就是壓力越大
1核 這三個值 不能超過 1
2核 這三個值不能超過2
229 total 任務總數
1 個運行
126 sleeping 126個睡眠的
stopped 停止的總數
最後兩行 內存的信息
總共 2gb內存 free 還剩 used 使用了 緩存的數量
swap 交換分區
total 交換分區的大小
下面一行信息 詳解:
PID 用戶進程
USER 進程所有者的用戶名
PR 優先級
可以安裝一個 可視化管理軟件 htop
sudo apt-get install htop
htop 直接查看
```
## 登錄狀態
#### hostname 顯示 設置 主機的名稱
```
hostname 顯示主機名
sudo hostname kangbazi 臨時設置主機名
sudo vim /etc/hostname 永久設置主機名
```
### whoami
```
查看當前登錄的用戶
who
need888 pts/8 2018-08-29 16:50 (10.11.53.21)
need888 pts/9 2018-08-29 16:51 (10.11.53.85)
tty 終端登錄
pts 遠程登錄
```
### last
```
顯示最近的登錄信息
last -10 顯示最近10條登錄信息
```
### w 查看登錄者信息 及行爲
```
w
17:21:24 up 31 min, 2 users, load average: 0.00, 0.02, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
need888 pts/8 10.11.53.21 16:50 1.00s 0.35s 0.01s w
need888 pts/9 10.11.53.85 16:51 4:50 0.07s 0.07s -bash
```