```
## 补充命令
```
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
```