首页 > 代码库 > linux基础(21-30)

linux基础(21-30)

1.Shell概述

Shell是什么?

  • 是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动,挂起,停止甚至是编写一些程序
  • 还是一个功能强大的变成语言,易编写,易调试,灵活性较强。Shell是解释执行的脚本语言,在Shell中可以直接调用Linux系统命令

Shell的分类

  • Bourne Shell,也称为B Shell,1979年起Unix就开始使用它,主文件名为sh
  • C Shell,主要是BSD版的Unix系统中使用,因其语法和C语言相类似而得名

Shell的两种主要语法类型有Bourne和C,这两种语法彼此不兼容。前者主要包括sh, ksh, Bash, psh,后者主要包括csh, tcsh

Linux的标准Shell是BashBashsh是相互兼容的。通过执行echo $SHELL就可以看到当前系统支持的哪种Shell

Linux支持的shell

vi /etc/shells 可以看到当前Linux支持的所有Shell
sh 就从Bash进入到了sh
exit 退出当前Shell
使用bash命令可以在已有的Bash下创建一个子Shell,同样使用exit退出,调用和退出都是一级一级连贯的
后续课程会讲自己当前所处的shell是什么

2.磁盘管理基本命令

查看磁盘分区的使用状况

df【选项】
选项:
-l 仅显示本地磁盘(默认)
-a 显示所有文件系统的磁盘使用情况,包含比如/proc/
-h 以1024进制计算最合适的单位显示磁盘容量
-H 以1000进制计算最合适的单位显示磁盘容量
-T 显示磁盘分区类型
-t 显示指定类型文件系统的磁盘分区,如df -t ext4
-x 不显示指定类型文件系统的磁盘分区

统计磁盘上的文件大小

du【选项】
选项:
-b 以byte为单位统计文件
-k 以KB为单位统计文件
-m 以MB为单位统计文件
-h 按照1024进制以最合适的单位统计文件
-H 按照1000进制以最合适的单位统计文件
-s 指定统计目标,如du -s ~/desktop,可以查看destop目录的大小

3.底行模式和命令模式常用指令

底行模式下的常用指令

:w 保存
:q 退出
:! 忽略修改,强制退出
:ls 列出所有打开的文件
:n :N 文件前进,后退
:15 快速定位到第15行
/xxx 从光标位置开始,向后搜索xxx
?xxx 从光标位置开始,向前搜索xxx

命令模式常用指令

h 光标左移
j 光标下移
k 光标上移
l 光标右移
ctrl+f 向下翻页(front)
ctrl+b 向上翻页(back)
ctrl+d 向下翻半页(down)
ctrl+u 向上翻半页(up)
dd 删除光标所在行
o 在光标所在行的下方插入一行并切换到输入模式
yy 复制光标所在的行
p 在光标所在行的下方粘贴
P 在光标所在行的上方粘贴

4.分区格式化

ls -l /dev/sdb* # 查看第二块磁盘的分区
mkfs.ext3 /dev/sdb1 # 将第二块磁盘的第一个分区格式化为ext3文件系统
mkfs -t ext3 /dev/sdb2 # 效果和上一个一样

5.挂载分区

分区默认挂载目录是/mnt,挂载点必须先存在

mkdir -p /mnt/imooc # 建立sdb1的挂载点,即新建目录
mount /dev/sdb1 /mnt/imooc # 完成挂载,可以开始存储数据
umount /mnt/imooc # 完成卸载
# monut命令,当系统重启之后就会失效,如果想永久挂载,需要编辑/etc/fstab文件
vim /etc/fstab
/dev/sdb1 /mnt/imooc ext3 defaults 0 0 # 在末尾添加,保存退出

6.其他用户和用户组命令

su【用户名】 快速切换当前用户,如果不加用户名,则切换到root用户
whoami 显示当前登录用户名
id【用户名】 显示指定用户信息,包括用户编号和用户名;主要组编号及名称,附属组列表
groups【用户】 显示用户所在的主要组和附属组
chfn【用户】 设置用户资料,依次输入用户资料
finger【用户】 显示用户的详细资料

7.用户和用户组的概念

用户:使用操作系统的人
用户组:操作系统中具有相同系统权限的一组用户

/etc/group 存储当前系统中所有用户组信息

cat /etc/group 会发现密密麻麻好多用户组,每一行都有一个基本格式a:b:c:d:a是组名称;b是组密码占位符;c是组编号;d是组中用户名列表,为空不代表没有用户,当这个组内只要一个用户,且用户名和组名相同时是可以省略的。需要注意以下几点:

  1. root用户组的组号一定为0,如‘root:x:0:‘
  2. 组号1-499是预留给系统软件和服务的,如安装了MySQL,会自动创建一个MySQL用户组,越早安装的软件和服务,组号越小
  3. 用户手动创建的用户组编号是从500开始的
  4. 主密码占位符无一例外全都是用x来表示的,这与系统安全演变有关,后面课程会提

/etc/gshadow 存储当前系统中用户组的密码信息

cat /etc/gshadow
基本格式a:b:c:d:a是组名称;b是组密码;c是组管理者;d是组中用户名列表。

/etc/passwd 存储当前系统中所有用户的信息

cat /etc/passwd
基本格式a:b:c:d:e:f:g:a是用户名;b是密码占位符;c是用户编号;d是用户组编号;e是用户注释信息;f是用户主目录;g是shell类型。

/etc/shadow 存储当前系统中所有用户的密码信息

cat /etc/shadow
基本格式a:b:c:d:e:f:g:a是用户名;b是用户登录密码,单向加密,其他都是些零碎的内容,包括创建时间,最后修改时间等。

原先只有group和passwd两个文件,但后来考虑到安全性问题,就又演变出shadow和gshadow两个文件。

8.用户和用户组的基本命令

# 跟用户组有关的命令
groupadd cloudedge # 创建用户组
cat /etc/group # 看最后一行是否已添加
groupmod -n hadoop cloudedge # -n代表修改组名
groupmod -g 668 hadoop # -g代表修改组编号
groupadd -g 888 Master # -g代表在创建用户组时也指定组编号
groupdel hadoop # 删除用户组

# 跟用户有关的命令
useradd -g hadoop Jeff # -g代表指定用户组
useradd -d /home/Jeff Jeff # -d代表创建指定用户的目录,默认会在/home下创建一个和用户名同名的目录
usermod -c helloworld Jeff # -c代表为用户添加注释信息
usermod -l NewJeff Jeff # -l代表修改用户名
usermod -d /home/NewJeff NewJeff # 修改用户的目录
usermod -g Master Jeff # -g代表更改用户所在的用户组
userdel Jeff # 删除用户,但不会删除/home/Jeff内的文件
userdel -r Jeff # 完全删除
touch /etc/nologin # 只要创建这个空文件就能禁止root用户外的用户删除用户信息

9.用户和用户组进阶命令

passwd -l NewJeff # 锁定用户
passwd -u NewJeff # 解锁用户
passwd -d NewJeff # 无密码登录

主要组和附属组

用户可以同时属于多个用户组,但必须要有一个主要组,加上多个附属组。

gpasswd -a NewJeff Master # -a代表将用户添加到一个附属组,如果有多个附属组,可以相互之间用逗号隔开,但用户创建文件等操作都默认属于他的主用户组,如果要在附属组下进行,就要将身份临时切换到附属组
newgrp Master # 注意这个命令的前提是你现在登录在NewJeff下!!需要用户自己执行!!
# 此时可能需要你输入Master的组密码
gpasswd -d NewJeff Master # 从用户组中删掉用户,即将用户的某个附属组去掉
useradd -g group1 -G group2,group3 Jeff # 直接设置用户的主从用户组
gpasswd hadoop # 设置用户组密码

10.GPT分区

分区模式之MBR

  • 主分区不超过4个
  • 单个分区容量最大2TB

分区模式之GPT

  • 主分区个数『几乎』没有限制
  • 单个分区容量『几乎』没有限制
  • 但,GPT主分区中不适合安装X86构架的系统
parted # 既可以进行MBR分区,也可以进行GPT分区
# 默认是using /dev/sda,即第一块硬盘,是可以切换其他磁盘的
help # 查看帮助信息
select /dev/sdc # 切换到第三块磁盘
mklabel gpt # 指定分区表类型,使用GPT分区模式
mklabel msdos # 或者使用MBR分区模式
print # 查看当前磁盘的分区信息
print all # 查看所有磁盘的分区信息

# 现在可以开始进行分区,有交互和命令模式两种
# 首先,交互模式
mkpart
# 询问个性化分区名称,默认留空
# 询问分区的文件系统,默认ext2
# 询问分区位置的起始点,指的是从第几MB开始,输入0
# 询问分区位置的结束点,指的是到第几MB结束,比如想给它2G,即给2048
# 可能会出现一个"未对齐"的错误提示,这时候需要cancel,然后设置起始点从1或者2开始

# 然后,命令模式
mkpart test 2000 3000 # 直接设置分区名和大小,此时已经有两个分区了

# 但如果再设置一个分区mkpart next 2500 3500,会和前一个分区重叠,它会让你选择是否接受建议的分区大小

rm 3 # 删除分区,3是分区编号

#继续添加分区,可以突破4个的限制,且没有主分区,逻辑分区这些概念

unit GB # 单位转换为GB
quit # 退出分区工具,立即生效
 

linux基础(21-30)