linux入门
安装CentOS
安装虚拟机
创建虚拟机
创建虚拟机时,选择稍后安装操作系统
创建完成后,可以设置虚拟机的内存、处理器等。
-
处理器设置页面
【虚拟化Intel Vt-x/EPT或AMD-V/RVI(V)】的作用是在虚拟机需要处理大数据量时,勾选之个选择后,能够处理得更加快速,但会占用系统资源 -
CD/DVD(IDE)
默认【启动时连接】即可
初始安装系统,勾选【使用ISO映像文件(M)】,并选择ISO映像文件 -
网络适配器
默认【启动时连接】即可。选择桥接模式。
在VM虚拟机这个软件安装完后,在电脑的【控制面板】的【网络连接】中会出现两个网卡
【VMware Virtual Ethernet Adapter for VMnet1】与【VMware Virtual Ethernet Adapter for VMnet8】
桥接模式:这个模式是直接使用真实的物理网卡,会独立占用IP
NAT模式:可以上网,使用【VMware Virtual Ethernet Adapter for VMnet8】这个虚拟网卡与真实机进行通信
仅主机模式:不可以上网,使用【VMware Virtual Ethernet Adapter for VMnet1】这个虚拟网卡与真实机进行通信
如果选择了【NAT模式】或【仅主机模式】,则虚拟机只能与本机通信,而不能直接与局域网内的其它机器通信 -
拍摄快照
点击VM虚拟机工具栏中的【拍摄此虚拟机的快照】
快照这个功能,对学习很方便
系统分区
- 系统分区
主分区:最多只能有4个。硬盘结构决定,每个扇区512B,其中64B是记录分区(16B记录一个分区)
扩展分区:最多只能有1个;主分区加扩展分区最多有4个;不能写入数据,只能包含逻辑分区。
逻辑分区
- 格式化
格式化不是为了清空数据,而是为了写入文件系统(如FAT16、FAT32、NTFS、EXT2、EXT3、EXT4等)。
把分区划分成相等大小的数据块(block),方便存储文件
在分区列表里,建立表格,记录每个文件的节点、修改时间、权限、文件保存位置等
- 分区文件名及挂载
分区 ---> 格式化 ---> 给每一个分区起一个设备文件名 ---> 起一个盘符
在linux中每一个硬件,都是文件
-
设备文件名
/dev/hda1(IDE硬盘接口,古老的,速度比较慢)
/dev/sda1(SCSI硬盘接口(比较老,速度没SATA快)、SATA硬盘接口) -
挂载
必须分区:
/根分区
swap分区(交换分区,内存2倍,不超过2GB)
推荐分区:
/boot启动分区,200MB
下载CentOS
安装CentOS
-
为虚拟机设置CentOS的ISO映像文件
【CD/DVD】 选择 使用ISO映像文件 , 并选择相应的CentOS映像文件 -
开启虚拟机
不要安装图形界面 -
设置root密码为root
以后测试开发用的都设置为用户名与密码相同
连接软件
- SecureCRT
- WinSCP
- XShell
常用目录及作用
/根目录/bin命令保存目录(普通用户就可以读取的命令)/boot启动目录,启动相关文件/dev设备文件保存目录/etc配置文件保存目录/home普通用户的家目录/lib系统库保存目录/mnt系统挂载目录/media挂载目录
/root超级用户的家目录/tmp临时目录/sbin命令保存目录(超级用户才能使用的目录)/proc直接写入内在的,不能直接操作/sys直接写入内在的,不能直接操作/usr系统软件资源目录
/usr/bin系统命令(普通用户)
/usr/sbin系统命令(超级用户)
/var系统相关文档命令
在家目录/home或/tmp目录操作,其它的一般不要操作
linux常用命令
命令提示符(由echo $PS1定义):
[root@centos7 ~]#
root: 用户名
centos7: 主机名
~: 家目录
#超级用户提示符,普通用户提示符为$
命令基本格式
命令 [选项] [参数]
注意:个别命令使用不遵循此格式
当有多个选项时,可以写在一起
简化选项与完整选项 -a表示--all
使用命令ls -lh
-rw-r--r-- (r读w写x执行)
第1个字符表示文件类型(-文件 d目录 l软链接文件)
第2到第4个表示所有者权限 rw-
第5到第7个表示所属组权限 r--
第8到第10个表示其他人权限 r--
文件处理命令
-
建立目录:
mkdir(make directories)
mkdir -p [目录名]
-p 递归创建,即,如果父目录不存在,则创建之 -
切换所在目录:
cd(change directory)
简化操作
cd ~进入当前用户的家目录
cd
cd -进入上次目录
cd ..进入上一级目录
cd .进入当前目录 -
pwd(print working directory) -
删除空目录:
rmdir(remove empty directory) -
删除文件或目录:
rm
rm -rf [文件或目录]直接删除,使用时需要注意
-r删除目录
-f强制 -
复制命令:
cp(copy)
-r复制目录
-p连带文件属性复制
-d若源文件是链接文件,则复制链接属性
-a相当于-pdr -
剪切或改名命令:
mv(move)
mv [原文件或目录] [目标目录] -
链接命令:
ln(link)
ln -s [原文件] [目标文件]生成链接文件
-s创建软链接
硬链接特征:
- 拥有相同的i节点和存储block块,可以看做是同一个文件
- 可通过i节点识别
- 不能跨分区
- 不能针对目录使用
软链接特征:
- 类似windows快捷方式
- 软链接拥有自己的I节点和Block块,但数据块中只保存原文件的文件名和I节点号,并没有实际的文件数据
lrwxrwxrwxl表示软链接 软链接文件权限都为rwxrwxrwx- 修改任意文件,另一个都改变
- 删除原文件,软链接不能使用
文件搜索命令
locate
centos7最小安装时,没有locate命令
locate 文件名 只能搜索文件名
在后台数据库中按文件名搜索,搜索速度比较快
/var/lib/mlocate
locate命令所搜索的后台数据库
数据库不是实时更新的,应该是每天自动更新一次
所以使用locate命令时,有可能搜索不出来
updatedb 更新数据库
/etc/updatedb.conf配置文件
PRUNE_BIND_MOUNTS = "yes"开启搜索限制PRUNEFS =搜索时,不搜索的文件系统PRUNENAMES =搜索时,不搜索的文件类型PRUNEPATHS =搜索时,不搜索的路径
whereis与which
PATH环境变量: 定义的是系统搜索命令的路径 也是查找命令位置的路径
[root@centos7 etc]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
whereis 命令名 只能搜索系统的命令,不能搜索自定义的命令
搜索命令所在路径及帮助文档所在位置
-b: 只查找可执行文件
-m: 只查找帮助文件
whereis可以看到命令所在位置,还可以看到命令的帮助文档
which 只能看命令的位置,可以看到命令的别名
find
文件搜索的最强大功能find
搜索文件: find [搜索范围] [搜索条件]
示例: find / -name install.log
避免大范围搜索,会非常耗费系统资源
find 是在系统当中搜索符合条件的文件名。如果需要匹配,使用通配符匹配,通配符是完全匹配
find /root -iname install.log不区分大小写find /root -user root按照所有搜索find /root -nouser查找没有所有者的文件find /var/log/ -mtime +10(modify)查找10天前修改的文件(-10表示10天内,10表示10天当天,+10表示10天以前)find /var/log/ -atime +10(access)文件访问时间find /var/log/ -ctime +10(change)改变文件属性find . -size 25k查找文件大小是25KB的文件(k为小写的k,M为大写的。-25k表示小于25KB的文件,25k表示等于25K,+25k表示大于25K)find . inum 262422查找i节点是262422的文件
linux中的通配符
*匹配任意内容?匹配任意一个字符[]匹配任意一个中括号内的字符
grep
搜索字符串命令: grep [选项] 字符串 文件名
在文件中匹配符合条件的字符串
选项:
-i: 忽略大小写
-v: 排除指定字符串
-a: 将二进制文件当成文本文件进行读取(文件内容中出现乱码的情况)
-n: 同时输出行号
--colour: 高亮匹配的文本
-B 10: 输出前面10行
-A 10: 输出后面10行
-C 10: 输出前后10行,相于-B 10 -A 10
find vs grep
find命令:在系统当中搜索符合条件的文件名,如果需要匹配,使用通配符匹配,通配符是完全匹配。
grep命令: 在文件当中搜索符合文件中的字符串,如果需要匹配,使用正则表达式进行匹配,正则表达式时包含匹配
帮助命令
man 命令
如: man ls
help shell内部命令 获取shell内部命令的帮助
例如:
whereis cd 确定是否为shell内部命令(没有可执行文件)
help cd 获取shell内部命令的帮助
info 命令 详细命令帮助info
回车 进入子帮助页面(带有*号标记)
u 进入上层页面
n 进入下一个帮助小节
p 进入上一个帮助小节
q 退出
压缩与解压命令
常用压缩格式: .zip .gz .bz2 .tar.gz .tar.bz2
zip
最小安装没有zip命令
zip 压缩文件名 源文件 # 压缩文件
zip -r 压缩文件名 源目录 # 压缩目录
unzip 压缩文件名 # 解压文件
gz只能压缩文件
gzip 源文件 # 压缩为.gz格式的压缩文件,源文件会消失
gzip -c 源文件 > 压缩文件 # 压缩为.gz格式,源文件保留 (-c为输出到屏,>为重定向输出)
gzip -r 目录 # 压缩目录下所有的子文件,但是不能压缩目录
gzip -d 压缩文件 # 解压文件
gunzip 压缩文件 # 解压文件
gunzip -r 目录 # 解压目录下所有压缩文件
.tar.gz与.tar.bz2
tar -cvf 打包文件名 源文件
-c:打包-v:显示过程-f:指定打包的文件名-t:列出归档内容tar -tvf 打包文件名-x:从归档中解出文件tar -xvf 打包文件名-z:通过 gzip 过滤归档tar -zcvf 压缩包名.tar.gz 源文件tar -zxvf 压缩包名.tar.gz-j:过 bzip2 过滤归档tar -jcvf 压缩包名.tar.bz2 源文件tar -jxvf 压缩包名.tar.bz2
关机和重启命令
shutdown [选项] 时间 使用这个命令比较安全
-c:取消前一个关机命令-h:关机-r:重启
其他关机命令
haltpoweroffinit 0
其他重启命令
rebootinit 6
系统运行级别
runlevel查看系统运行级别
cat /etc/inittab 修改默认运行级别 id:3:initdefault:
- 0 关机
- 1 单用户
- 2 不完全多用户,不含NFS服务
- 3 完全多用
- 4 未分配
- 5 图形界面
- 6 重启
退出登录命令
logout
其他常用命令
linux 挂载命令
mount # 查询系统中已挂载的设备
mount -a # 依据配置文件/etc/fstab的内容,自动挂载
mount [-t 文件系统] [-o 特殊选项] 设备文件名 挂载点
mkdir /mnt/cdrom/ # 建立挂载点
mount -t iso9660 /dev/sr0 /mnt/cdrom/ # 挂载光盘
umount /mnt/cdrom/ # 卸载挂载点
挂载U盘(linux默认不支持NTFS文件系统的)
fdisk -l # 查看U盘设备文件名
mount -t vfat /dev/sdb1 /mnt/usb/
linux用户登录查看命令
w 用户名
- USER: 登录用户名
- TTY: 登录终端
- FROM: 从哪个IP地址登录
- LOGIN@: 时间
- IDLE: 用户闲置时间
- JCPU: 指的是和该终端连接的所有进程占用的时间
- PCPU: 是指当前进程所占用的时间
- WHAT: 当前正在运行的命令
who 用户名
- 用户名
- 登录终端
- 登录时间(登录来源IP)
last # 所有用户的登录信息(包括系统启动时间)
last命令默认是读取/var/log/wtmp文件数据
- 用户名
- 登录终端
- 登录IP
- 登录时间
- 退出时间 (在线时间)
lastlog # 查看所有用户的最后一次登录信息
lastlog命令默认是读取/var/log/lastlog文件数据
shell 基础
查看当前使用的shell:echo $SHELL
查看支持的shell: cat /etc/shells
进入子shell后,使用命令exit即可退出
查看父子shell:
echo输出命令
echo [选项] [输出内容]
-e:支持反斜线控制的字符转换
| 控制字符 | 作用 |
|---|---|
\a |
输出警告音 |
\b |
退格键 |
\n |
换行符 |
\r |
回车键 |
\t |
制表符 |
\v |
垂直制表符 |
\0nnn |
按照八进制ASCII码表输出字符 |
\xhh |
按照十六进制ASCII码表输出字符 |
脚本编写
以#!/bin/bash声明使用bash开头,若当前使用其它shell时,执行这个脚本时,也会自动使用bash
赋予执行权限 chmod +x hello.sh或chmod 755 hello.sh
执行: ./hello.sh 或调用bash来执行 bash hello.sh
命令别名与快捷键
alias # 查看系统中所有的命令别名
alias 别名='原命令' # 设定命令别名
unalias 别名 # 删除别名
# 别名永久生效与删除别名
vi ~/.bashrc # 写入环境变量配置文件
source ~/.bashrc # 写环境变量马上生效,不需要重新登录
命令生效顺序
- 第一顺序执行用绝对路径或相对路径执行的命令
- 第二顺序执行别名
- 第三顺序执行Bash的内部命令
- 第四顺序执行按照$PATH环境变量定义的目录查找顺序找到的第一个命令
常用快捷键
CTRL + C强制终止当前命令CTRL + L清障CTRL + A光标移动到命令行首CTRL + E光标移动到命令行尾CTRL + U从光标所在位置删除到行首CTRL + Z把命令放入后台CTRL + R在历史命令中搜索
历史命令
history # 列出历史命令
history -c # 清空历史命令
history -w # 把缓存中的历史命令写入历史命令保存文件~/.bash_history
~/.bash_history 这个文件保存的上次登录正常退出后保存的命令
历史命令默认会保存1000条,可以在环境变量配置文件/etc/profile中进行修改
HISTSIZE=1000
历史命令的调用
- 使用上、下箭头调用以前的历史命令
- 使用"!n"重复执行第n条历史命令
- 使用"!!"重复执行上一条命令
- 使用"!字串"重复执行最后一条以字串开头的命令
输出重定向
标准输入输出
| 设备 | 设备文件名 | 文件描述符 | 类型 |
|---|---|---|---|
| 键盘 | /dev/stdin |
0 | 标准输入 |
| 显示器 | /dev/sdtout |
1 | 标准输出 |
| 显示 | /dev/sdterr |
2 | 标准错误输出 |
输出重定向
| 类型 | 符号 | 作用 |
|---|---|---|
| 标准输出重定向 | 命令 > 文件 |
以覆盖的方式,把命令的正确输出,输出到指定的文件或设备当中。 |
| 标准输出重定向 | 命令 >> 文件 |
以追加的方式,把命令的正确输出,输出到指定的文件或设备当中。 |
| 标准错误输出重定向 | 命令 2> 文件 |
以覆盖的方式,把命令的正确输出,输出到指定的文件或设备当中。 |
| 标准错误输出重定向 | 命令 2>> 文件 |
以覆盖的方式,把命令的正确输出,输出到指定的文件或设备当中。 |
正确输出和错误输出同时保存
| 符号 | 作用 |
|---|---|
命令 > 文件 2>&1 |
以覆盖方式,把正确输出和错误输出保存到同一个文件当中。 |
命令 >> 文件 2>&1 |
以追加方式,把正确输出和错误输出保存到同一个文件当中。 |
命令 &> 文件 |
以覆盖方式,把正确输出和错误输出保存到同一个文件当中。 |
命令 &>> 文件 |
以追加方式,把正确输出和错误输出保存到同一个文件当中。 |
命令 >> 文件1 2>>文件2 |
把正确的输出追加到文件1中,把错误的输出追加到文件2中。 |
输入重定向
wc -c # 统计字节数
wc -w # 统计单词数
wc -l # 统计行数
输入重定向,一般很少使用,在软件安装打补丁时,可能会用到
wc -l < hello.sh # 统计hello.sh
多命令执行顺序
| 多命令执行符 | 格式 | 作用 |
|---|---|---|
; |
命令1;命令2 | 多个命令顺序执行,命令之间没有任何逻辑关系。不管前面命令对错,都会执行 |
&& |
命令1&&命令2 | 逻辑与。当命令1正确执行,则命令2才会执行;当命令1执行不正确,则命令2不执行 |
| ` | ` |
管道符
# 格式:命令1的正确输出作用命令2的操作对象
命令1 | 命令2
# 当文件过多时,分屏查看文件列表
ls -lh | more
# 查看8080端口当前并发连接数据(ESTABLISHED表示有人正在连接当前端口,LISTEN表示当前端口被监听等待有人访问)
netstat -an | grep ESTABLISHED | grep '8080'
netstat -an | grep ESTABLISHED | grep '8080' | wc -l # 统计当前8080端口并发数量
通配符
| 通配符 | 作用 |
|---|---|
? |
匹配一个任意字符 |
* |
匹配0个或任意多个任意字符,也就是可以匹配任何内容 |
[] |
匹配中括号中任意一个字符。 |
[-] |
匹配中括号中任意一个字符,-表示珍上范围 |
[^] |
逻辑非,表示匹配不是中括号内的一个字符 |
ls -lh test*.txt
bash中其他特殊符号
| 符号 | 作用 |
|---|---|
'' |
单引号。在单引号中所有的特殊符号,如$和 `(反引号),都没有特殊意义 |
"" |
双引号。在双引号中特殊符号都没有特殊意义,但是$(调用变量值)、 (引用命令)和 \ `(转义符)是例外 |
` |
反引号。反引号括志来的内容是系统命令,在Bash中会先执行它。和$()使用一样,不过推荐使用$(),因为反引号非常容易看错 |
$() |
和反引号使用一样,用来引用系统命令。 |
# |
在Shell脚本中,#开头的行代表注释 |
$ |
用于调用变量的值,如需要调用变量name的值时,使用$name |
\ |
转义符,跟在\之后的特殊符号将失去特殊含义,变为普通字符 |
`
磁盘管理
磁盘管理基本命令
df -h # 以人性化的格式显示磁盘分区使用情况
du -h # 以人性化的单位统计当前路径的文件大小,-s指定统计目录
du -sh # 以人性化的单位统计当前目录大小
使用fdisk进行分区
linux系统中硬件设备都是以文件的形式存在于根目录下的dev目录下
硬件设备都是由linux系统自动识别的
必须对硬盘进行分区、格式化、挂载后才能使用
fdisk -l # 查看磁盘列表
fdisk /dev/sdb # 进入命令模式
执行fdisk /dev/sdb进入命令模式后,输入m可以查看到帮助
n 新建分区(有默认使用默认值即可,只能有一个扩展分区,可以有多个逻辑分区)
p 查看分区情况
d 删除分区。如果分配有误,需要将扩展分区删除,再重新分配剩余的磁盘空间
w 写入并退出
硬盘分区模式
MBR分区:主分区不超过4个,单个分区容量最大2TB,比较过时,前面的分区方式就是MBR分区
GPT分区:主分区最多可以支持128个分区,单个分区容量几乎没有限制(18EB),分区就是分区,不需要区分主分区或逻辑分区
GPT分区不适合安装x86架构的系统,即32位系统
fdisk只能进行MBR分区
parted命令,可以进行MBR分区,也可以进行GPT分区
使用parted进行分区
没有主分区、扩展分区、逻辑分区,的区分
直接输入parted命令,即可进入parted分区工具
help 帮助信息
select /dev/sdc 选择/dev/sdc这个磁盘进行分区
mklabel gpt 创建label,如果需要进行MBR分区,则为msdoc,如果为GPT分区,则为gpt
print 显示当前磁盘分区情况
print all 显示所有磁盘分区情况
parted有两种分区模式 交互模式(与fdisk类似,一步步提示)与命令模式(设置参数,一步到位)
只输入mkpart,则以交互模式一步步创建分区,起始点与结束点的单位是M
mkpart test 2000 3000 一步到位的命令模式,格式是mkpart 分区名称 起始点 结束点(不包含)
rm 3 删除分区,数字3为print显示的对应分区号
unit GB 设置使用的单位,包括创建分区时的单位与使用print显示出来单位
quit 退出parted分区工具
分区格式化
parted工具也可以进行格式化,但其支持的格式比较少
一般使用mkfs进行格式化
mkfs.ext3 /dev/sdb1 将/dev/sdb1分区格式化为ext3格式
mkfs -t ext3 /dev/sdb1
挂载分区
挂载默认位置/mnt
需要挂载在一个已经存在的位置
mkdir -p /mnt/test # 创建挂载点
mount /dev/sdb1 /mnt/test # 挂载
umount /mnt/test # 解除挂载
vim + /etc/fstab # 配置自动挂载
vim + /etc/fstab 配置自动挂载
格式: 设备名称 挂载点 文件类型 defaults 0 0
示例: /dev/sdb1 /mnt/test ext3 dfaults 0 0
swap分区
-
建立一个普通的linux分区
-
修改分区类型的16进制编码
fdisk /dev/sdb查看分区,选择一个分区设置为swap分区
t修改系统编码
l列出所有编码
输入82
w保存退出 -
格式化交换分区
mkswap /dev/sdb6 -
启用分区
swapon /dev/sdb6 -
停止swap分区
swapoff /dev/sdb6
用户管理
/etc/group 存储当前系统中所有用户信息
Group : x : 123 : user1,user2,user3
组名称 : 组密码占位符 : 组编号 : 组中用户列表
手动创建的用户组从500开始
/etc/gshadow 存储当前系统中用户组的密码信息,每行与/etc/group中的一行行对应
Group : * : : user1,user2,user3
组名称 : 组密码 : 组管理者 : 组中用户列表
组密码为*或为空白时,都认为这个组没有设置密码
/etc/passwd 存储当前系统中所有用户的信息
user : x : 123 : 456 : xxxx : /home/user : /bin/bash
用户名 : 密码占位符 : 用户编号 : 用户组编号 : 用户注释信息 : 用户主目录 : shell类型
/etc/shadow 存储当前系统中所有用户的密码信息,每行与/etc/passwd中的一行行对应
user : 单向加密 :::::
用户名 : 密码 :::::
基本命令
# 新建组
groupadd 组名
groupadd -g 组ID 组名
# 修改组名
groupmod -n 新组名 原组名
# 修改组ID
groupmod -g 组ID 组名
# 删除组
groupdel 组名
# 新建用户(指定组名)
useradd -g 组名 用户名
# 新建用户(指定个人文件夹)
useradd -d /home/xxx 用户名
# 为用户添加注释
usermod -c 注释信息 用户名
# 修改用户名
usermod -l 新用户名 原用户名
# 为用户名指定个人文件夹
usermod -d /home/xxx 用户名
# 修改用户所属用户组
usermod -g 组名 用户名
# 删除用户(不会删除个人文件夹)
userdel 用户名
# 删除用户,同时删除个人文件夹
userdel -r 用户名
# 禁止除root用户外的其他用户登录,文件内容无关紧要
touch /etc/nologin
进阶命令
# 锁定用户,不让其登录
passwd -l 用户名
# 解锁用户
passwd -u 用户名
# 清除用户密码
passwd -d 用户名
# 添加附属组(同时属于多个组,一个主要组,其他附属组)
gpasswd -a 用户名 附属组名
# 切换到附属组
newgrp 组名
# 删除附属组
gpasswd -d 用户名 附属组名
# 新创建用户时,同时指定主要组及附属组
useradd -g 主要组名 -G 附属组名1,附属组名2...
# 修改或添加组密码,会提示输入组密码
gpasswd 组名
# 显示用户所在的所有组
groups 用户名

浙公网安备 33010602011771号