Skip to content

Latest commit

 

History

History
500 lines (414 loc) · 18.1 KB

File metadata and controls

500 lines (414 loc) · 18.1 KB

一起学Linux(Part-1)

List SubDirectory Description Notes
Linux 文件系统 关于Linux目录的各种说明
Linux 命令 关于Linux下的各种命令
- 文件处理
- 权限管理
---- 权限属性权限用户权限组
- 文件搜索
---- 文件路径搜索文件内容搜索
- 帮助命令
- 压缩与解压缩
- 网络命令
- 关机重启
- Vim 编辑器
软件包
- 概念
- RPM-rpm命令
- RPM-yum命令
用户和组管理
- 用户文件
---- 用户配置文件用户管理相关文件
- 用户管理命令
---- 添加用户用户密码管理修改用户信息
---- 删除用户切换用户身份用户组管理
权限管理 sudo - 概念
- 命令

Linux 文件系统

Linux 文件系统目录结构

- /              # 根目录
- /boot          # 存放用于系统引导(启动)时使用的各种文件
- /root          # 系统管理员目录,系统管理员的主目录
- /home          # 用户主目录,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的,如上图中的 alice、bob 和 eve。
- /etc           # 系统配置文件,存放所有的系统管理所需要的配置文件和子目录
- /bin           # 存放二进制可执行文件(ls、cat、mkdir等)
- /sbin          # 存放二进制可执行文件,只有root才能访问
- /tmp           # 临时文件目录,存放临时文件
- /run           # 存放临时文件
- /var           # 存放运行时需要改变数据的目录(动态数据)
- /mnt           # 临时挂载点目录,各种设备挂载到系统后,会在/mnt目录下生成相应设备的目录,比如挂载光驱、文件系统、CD等。

- /usr           # 用户软件目录, 存放用户软件,unix shared resources(共享资源)
- /usr/bin       # 存放用户命令
- /usr/sbin      # 存放用户管理命令,超级用户使用的比较高级的管理程序和系统守护程序。
- /usr/lib       # 存放用户命令需要的共享库
- /usr/share     # 存放共享数据
- /usr/local     # 存放软件升级后新的功能存放目录

- /dev           # 用于存放设备文件
- /proc          # 虚拟文件系统,存放系统内存的映射
- /sys           # 虚拟文件系统,存放系统内存的映射
- /lib           # 存放跟文件系统中的程序运行所需要的共享库及内核模块

Linux 命令

文件处理

# 以下为简单的命令,具体可看 bash
clear         # 清空屏幕
ctr + l       # 清屏(快捷键)

env           # 显示环境变量
df -h         # 显示磁盘使用情况
pstree        # 显示进程树
pwd           # 显示当前工作目录
who           # 显示当前登录用户
whoami        # 显示当前用户
ls -l # 列出文件
ls -lR # 列出所有文件(不要轻易用)
ls -lh # 列出文件,以易读的方式显示文件大小
   # 查看到文件权限的时候,第一个字符表示文件权限,后面是文件所有者,后面是文件所属组,后面是文件大小,后面是文件修改时间,后面是文件名
   # 文件类型(文件权限的第一个位置):- 普通文件,d 目录,l 链接文件,b 块设备文件,c 字符设备文件   
   # 文件权限:r 读权限,w 写权限,x 执行权限,- 没有权限
   # 文件所有者:u 所有者,g 组,o 其他用户
   # 文件所属组:u 所有者,g 组,o 其他用户
ls -la # 列出所有文件,包括隐藏文件
ls -i  # 列出文件,包括文件索引
mkdir <文件路径> # 创建文件夹
mkdir -p <文件路径>  # 递归创建文件夹

rmdir <文件路径> # 删除空白文件夹
rm -r <文件路径> # 删除文件夹
cp <文件路径> <目标路径> # 复制文件
cp -r # 复制目录
cp -p # 保留文件属性
cp -a # 复制文件和目录及其属性
mv <文件路径> <目标路径> # 移动文件
mv <文件路径> <目标路径/新文件名> # 移动并重命名文件
mv <文件> <新文件名> # 当前文件夹下重命名文件
rm -rf  <文件路径> # 删除文件
   -r # 删除目录
   -f # 强制删除   
touch <文件路径> # 创建文件
cat <文件路径> # 显示文件内容
    -n # 显示行号
tac  <文件路径> # 从最后一行开始显示,可以看出 tac 是 cat 的倒着写

head -n <行数> <文件路径> # 显示文件内容,默认显示前10行
tail -n <行数> <文件路径> # 显示文件内容,默认显示后10行
     -f # 跟踪文件变化,当文件内容发生变化时,自动显示变化内容

more <文件路径> # 查看长文件内容,分页显示文件内容,按空格键查看下一页,按 q 键退出

less <文件路径> # 查看长文件内容,分页显示文件内容(可向上翻页),按空格键查看下一页,按 q 键退出,按 / 键搜索,按 n 键搜索下一个
ln <文件路径> <目标路径> # 创建链接文件,硬链接
  -s # 创建软链接,软连接类似windows的快捷方式,文件权限是由软连接指向的文件决定
# 硬链接和软链接的区别:
#    1. 硬链接:文件有多个路径,文件大小不变,不能跨分区。软链接:文件只有一个路径,文件大小不变,可以跨分区
#    2. 硬链接:不能对目录创建硬链接。软链接:可以对目录创建软链接
#    3. 硬链接:删除原文件时,文件不变,类似 cp -p 。软链接:删除原文件时,软链接失效

# 查看是软链接还是硬链接:ls -i 查看文件索引,索引相同,则为硬链接,索引不同,则为软链接

权限管理

umask -S # 查看默认权限
umask -S <权限> # 设置默认权限

umask -p # 查看默认权限
umask # 查看默认权限

权限属性

change mode

chmod <权限> <文件路径> # 修改文件权限
chmod [{u|g|o|a} {+|-|=} {r|w|x}] <文件或者目录路径>
    # u: 所有者,g: 组,o: 其他用户,a: 所有用户
    # +: 添加权限,-: 删除权限,=: 设置权限
    # r: 读权限,w: 写权限,x: 执行权限
    #    r权限:允许用户查看文件内容,可以列出目录内容
    #    w权限:允许用户修改文件内容,可以创建、删除文件,修改目录
    #    x权限:允许用户执行文件,可以进入目录
    # 例如:chmod u+x,g+w,o+r file.txt    
    # 权限的数字表示: r: 4,w: 2,x: 1
    # 例如: chmod u=rwx,g=rw,o=x file.txt,chmod 761 file.txt
chmod -R <权限> <文件路径> # 递归修改文件权限

权限用户

change owner

chown <用户名> <文件路径> # 修改文件所有者

权限组

change group

chgrp <组名> <文件路径> # 修改文件所属组

文件搜索

文件路径搜索

# find 消耗资源大
find <文件路径> <匹配条件>
find <文件路径> -name <文件名> # 搜索文件 *文件名* 模糊搜索
              -iname <文件名> # 搜索文件 忽略大小写
              -size <文件大小> # 搜索文件 文件大小单位:k,M,G,T,P,E,Z. 
              -type <文件类型> # 文件类型:f,d,l,c,b
              -user <用户名> # 搜索文件所属用户
              -group <组名> # 搜索文件所属组
              -inum <索引号> # 搜索文件索引号
locate  <文件名> # 搜索文件 需要先更新locate数据库,如果放在/tmp目录下,一般搜索不到,因为/tmp为临时目录
       -i <文件名> # 忽略大小写
updatedb # 更新locate数据库
which <命令名> # 搜索命令所在路径
whereis <命令名> # 搜索命令所在路径

文件内容搜索

grep <关键字> <文件路径> # 搜索文件内容
    -i # 忽略大小写
    -v # 搜索不包含关键字的文件,如忽略注释行:grep -v "^#" file.txt

帮助命令

man <命令名 or 配置文件名> # 帮助手册
    1 # 命令帮助
    5 # 配置文件帮助
    
whatis <命令名> # 查看命令,让人知道命令是什么。在root账号下,可以搜索到所有命令
apropos <命令名> # 查看配置
<命令名> --help # 查看shell命令帮助

help <内置命令> # 查看内置命令

用户管理

useradd <用户名> # 创建用户
userdel <用户名> # 删除用户
usermod <用户名> # 修改用户
passwd <用户名> # 修改用户密码

who # 查看登录用户信息
w # 查看当前登录用户信息
w <用户名> # 查看当前用户信息

压缩与解压缩

gzip <文件名> # 压缩文件,只压缩文件,不压缩目录,
gunzip <文件名> # 解压文件,解压之后,不保留压缩文件

tar -zcvf <压缩文件名: 文件名.tar.gz> <文件名 or 目录名> # 压缩文件
    -z # 打包同时压缩
    -c # 打包
    -v # 显示详细信息
    -f # 指定文件名   
tar -zxvf <压缩文件名: 文件名.tar.gz> <文件名 or 目录名> # 解压文件

zip <压缩文件名: 文件名.zip> <文件名 or 目录名> # 压缩文件,压缩比80%
    -r # 压缩目录
unzip <压缩文件名: 文件名.zip> <文件名 or 目录名> # 解压文件

网络命令

white <用户名>
wall <消息> # 发送消息给所有用户

mail <用户名> <消息> # 发送消息给指定用户,ctr + d 保存信息

ping <ip> # 测试主机是否在线
    -c <次数> # 测试次数

ifconfig # 查看网络接口信息
        eth0 
        lo # 本地回环地址

last # 查看登录信息
lastlog # 查看最后一次登录信息

traceroute  # 显示数据包到主机间的路径

netstat # 显示网络统计信息
       -t # 显示TCP连接 
       -u # 显示UDP连接
       -l # 显示监听
       -r # 显示路由表
       -n # 显示IP地址和端口号
       -a # 显示所有连接和监听              

关机重启

shutdown -h now # 关机
shutdown -r now # 重启
shutdown -h <时间> # 如shutdown -h 10 , 表示10分钟后关机

halt # 关机
poweroff # 关机
reboot # 重启
init 0 # 关机
   #  0 表示关机
   #  1 表示单用户
   #  2 表示不完全多用户
   #  3 表示完整多用户模式
   #  4 表示未分配
   #  5 表示图形界面
   #  6 表示重启
init 6 # 重启

logout # 退出当前用户

Vim 编辑器

Vim编辑器工作模式.png

Vim 键盘图.png

软件包

Centos

概念

  • 源码包

    • 安装速度慢
    • 可看到源码
    • 性能比二进制包强 5%
  • 二进制包(RPM包)

    • 安装速度快
    • 不可看到源码
    • 依赖性高

RPM-rpm命令

依赖安装太麻烦

RPM包命令原则:httpd-2.2.15.el6.centos.1.i686.rpm

  • httpd 软件包名
  • 2.2.15 软件版本
  • 15 软件发布次数
  • el6.centos 适合的Linux平台
  • 1.i686 适合的硬件平台
  • rpm 扩展名

www.rpmfind.net

rpm -ivh <软件包> # 安装软件包
rpm -e <软件包> # 卸载软件包

rpm -q <软件包> # 查询软件包是否安装
rpm -qa # 查询所有软件包
rpm -qa | grep httpd # 查询httpd软件包
rpm -qp <软件包> # 查询未安装软件包信息

rpm -V <软件包> # 查看软件包的校验
rpm2cpio <软件包> # 将软件包转换为.cpio格式
cpio -idmv <软件包>.cpio # 将.cpio格式转换为软件包

RPM-yum命令

yum serch <软件包> # 查询软件包
yum -y install <软件包> # 安装软件包
yum -y update <软件包> # 更新软件包
yum -y remove <软件包> # 卸载软件包 尽量不要卸载系统软件包,因为卸载系统软件包可能会导致系统无法启动

yum list installed # 查询已安装软件包

yum grouplist # 查询软件包组
yum groupinstall "软件包组" # 安装软件包组

用户和组管理

用户文件

用户配置文件

用户信息文件

/etc/passwd     # 用户信息
# root:x:0:0:root:/root:/bin/bash
     # 第1字段:用户名
     # 第2字段:密码标志
     # 第3字段:用户ID(UID)
     #   0:超级用户   1-499:系统用户  500+:普通用户   
     # 第4字段:组ID(GID)  分为初始组、附加组
     # 第5字段:用户用户说明
     # 第6字段:用户主目录
     #   普通用户:/home/用户名    系统用户:/root
     # 第7字段:用户默认shell     

影子文件(密码文件)

/etc/shadow     # 用户密码信息
# root:*:19683:0:99999:7:::
     # 第1字段:用户名
     # 第2字段:加密密码
     #    如果为 !! 或者 * 表示密码为空,不能登录
     # 第3字段:上一次修改密码的时间
     # 第4字段:密码的最小使用期限
     # 第5字段:密码的最大使用期限
     # 第6字段:密码过期前的警告天数
     # 第7字段:密码过期后的宽限天数
     # 第8字段:密码过期后的账号禁用天数(账号失效时间) 时间戳
     # 第9字段:保留字段         

组信息文件

/etc/group      # 组信息
# root:x:0:
     # 第1字段:组名
     # 第2字段:加密密码
     # 第3字段:组ID(GID)
     # 第4字段:组成员列表(附加用户)

组密码文件

/etc/gshadow      # 组密码信息
# root:*::
     # 第1字段:组名
     # 第2字段:加密密码
     # 第3字段:组管理员列表(管理员用户名)
     # 第4字段:保留字段(附加用户)

用户管理相关文件

/root/          # 超级用户主目录,
/home/用户名     # 普通用户主目录

/etc/skel/      # 用户主目录模板文件

用户管理命令

添加用户

useradd <用户名> # 添加用户
       -d <用户主目录>   # 指定用户主目录
       -g <用户组>     # 指定用户组
       -G <附加用户组>  # 指定附加用户组
       -s <用户登录Shell>  # 指定用户登录Shell, 默认为/bin/bash
       -u <用户UID>     # 指定用户UID
       -m <用户主目录>    # 创建用户主目录

id <用户名> # 查看用户ID信息
       
# 用户默认值文件
/etc/default/useradd   # 查看 `cat /etc/default/useradd`

用户密码管理

超级用户
passwd <用户名> # 修改用户密码
       -S   # 查看用户密码状态,仅root用户可执行
       -l   # 锁定用户密码,仅root用户可执行
       -u   # 解锁用户密码,仅root用户可执行

普通用户
passwd   # 修改用户密码,普通用户修改密码要求密码复杂性要求

修改用户

usermod <用户名> # 修改用户信息
       -d <用户主目录>   # 指定用户主目录
       -g <用户组>     # 指定用户组
       -u <用户UID>     # 指定用户UID
       -L <用户名>     # 锁定用户密码
       -U <用户名>     # 解锁用户密码
       -s <用户登录Shell>  # 指定用户登录Shell, 默认为/bin/bash
       
change <用户名>  # 修改用户密码状态
       -d <日期>     # 修改用户密码最后一次修改日期

删除用户

userdel <用户名> # 删除用户
      -r <用户名>    # 删除用户主目录

切换用户身份

id <用户名> # 查看用户ID信息

su <用户名> # 切换用户身份
   -  # 只使用 - 表示带用户的环境变量一起切换(日常操作中需要带这个参数)
   # su - root -c "useradd  <用户名>" : 表示不切换root,用root身份创建用户
   -c <命令>   # 只执行命令,不切换用户身份

用户组管理

groupadd <用户组名> # 添加用户组
        -g <用户组ID>    # 指定用户组ID
groupmod <用户组名> # 修改用户组信息
        -g <用户组ID>    # 指定用户组ID
        -n <新用户组名>    # 修改用户组名
groupdel <用户组名> # 删除用户组

gpasswd <用户组名> # 把用户填入组或者从组中删除
       -a <用户名>    # 添加用户到组 
       -d <用户名>    # 从组中删除用户       

权限管理 sudo

概念

sudo 是一个命令,允许用户以root权限运行命令,但是sudo命令本身并不是root用户,而是一个用户,通常为sudo用户。 sudo 操作对象是系统命令,是root将超级用户的权限授予sudo用户,让sudo用户可以执行一些只有root才能执行的系统命令。

visudo 文件所在位置:/etc/sudoers

命令

sudo -l # 查看sudo权限
audo <命令> # 使用sudo执行命令