首页 > 代码库 > 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是Bash
!Bash
和sh
是相互兼容的。通过执行echo $SHELL
就可以看到当前系统支持的哪种Shell
Linux支持的shell
vi /etc/shells
可以看到当前Linux支持的所有Shellsh
就从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是组中用户名列表,为空不代表没有用户,当这个组内只要一个用户,且用户名和组名相同时是可以省略的。需要注意以下几点:
- root用户组的组号一定为0,如‘root:x:0:‘
- 组号1-499是预留给系统软件和服务的,如安装了MySQL,会自动创建一个MySQL用户组,越早安装的软件和服务,组号越小
- 用户手动创建的用户组编号是从500开始的
- 主密码占位符无一例外全都是用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)