Linux基础
Linux的两大分支
基于Debian: Debian、Ubuntu、Corel、Kali等
基于RedHat: Red Hat、CentOS、Fedora Core等
Linux 目录结构
-
/bin
存放着经常使用的命令 -
/boot
存放启动Linux时的核心文件和一些连接文件及镜像文件 -
/dev
存放Linux的外部设备文件,Linux访问设备时就是访问文件
dev 是设备(device)的英文缩写,Linux 沿袭 Unix 的风格,将所有设备认成是一个文件
设备文件分为两种:块设备文件(b)和字符设备文件(c)
设备 | 设备在Linux内的文件名 |
---|---|
SCSI/SATA/IDE设备 | /dev/sd* |
U盘 | /dev/sd* (与SATA相同) |
USB块设备 | /dev/ub* |
软驱 | /dev/fd[0-1] |
打印机 | 25针: /dev/lp[0-2] USB: /dev/usb/lp[0-15] |
鼠标 | USB: /dev/usb/mouse[0-15] PS2: /dev/psaux 当前:/dev/mouse |
光盘设备 | /dev/cdrom => /dev/sr* |
磁带机 | IDE: /dev/ht0 SCSI: /dev/st0 |
软RAID设备 | /dev/md[0-31] |
本地回环设备 | /dev/loop[0-7] |
内存 | /dev/ram[0-15] |
Nvidia图形设备(比如显卡) | /dev/nvidia* |
DRI显卡 | /dev/dti/card* |
虚拟终端 | /dev/tty[0-63] |
控制台 | /dev/console |
串口 | /dev/ttyS[0-3] |
并口 | /dev/lp[0-3] |
对于SCSI设备,/dev/tape
指向 /dev/st*
,而 /dev/cdrom
指向 /dev/sr*
;而 /dev/cdwriter
和 /dev/scanner
分别指向对应的 /dev/sg*
(sg 代表 scsi + generic(通用))
其他:
/dev/null
:无限数据接收设备,相当于黑洞
/dev/zero
:无限零资源
/dev/fb[0-31]
:帧缓冲设备
/dev/nb*
:网络块设备
/dev/modem
:调制解调器(猫) => /dev/ttyS*
/dev/random
:真随机数设备
/dev/urandom
:伪随机数设备
-
/etc
存放系统配置文件及子目录 -
/home
用户主目录,存放以用户名命名的用户目录 -
/lib
存放最基本的动态共享库,类似于Windows里的DLL文件,几乎所有应用程序都需要用到这些共享库 -
/lost+found
存放非正常关机时产生的一些文件,一般情况为空的 -
/media
存放Linux系统自动识别的一些设备的挂载目录,例如U盘、光驱等 -
/mnt
存放用户临时挂载的目录或文件 -
/opt
存放额外安装的软件 -
/proc
系统内存的映射,可通过访问该目录获取系统信息,这个目录在内存里 -
/root
超级用户主目录 -
/sbin
存放系统管理员使用的系统管理程序 -
/selinux
redhat分支所特有的目录,Selinux是一个安全机制,类似于防火墙,但这套机制比较复杂,该目录就是存放selinux相关的文件的 -
/srv
存放服务启动后需要的数据 -
/sys
存放linux2.6内核新出现的一个文件系统systs相关文件 -
/tmp
存放临时文件 -
/usr/bin
用户使用的程序 -
/usr/sbin
超级用户(root)使用的比较高级的管理程序和系统守护程序 -
/usr/src
内核源码默认存放目录 -
/var
存放不断扩充的东西,被经常修改的目录存放在该目录,包括各种日志文件
几个重要的目录,注意不要误删或随意修改内部文件
/etc
系统配置文件,如果被修改系统可能会不能启动
/bin
,/sbin
,/usr/bin
,/usr/sbin
系统预设的执行文件存放目录
/var
程序日志文件存放,具体在/var/log
常用命令
文件操作
ls [-ald] <文件或目录路径>
: 显示目录文件
-a
显示所有文件,包括隐藏文件-l
详细信息显示- U所有者 g所属组 o其他人 r读 w写 x执行
-d
查看目录属性
mkdir [-p] <目录全路径名>
: 创建新目录
-p
递归创建
cd <目录路径>
: 切换目录
cd –
返回前一个工作目录,价于cd $OLDPWD
pwd
: 显示当前目录路径
rmdir <目录名>
: 删除空目录
cp [-rp] <原路径> <目标路径>
: 复制文件
-r
递归复制所有文件-p
保存文件属性
mv <原路径> <目标路径>
: 剪切文件、改名
rm [-rf] <文件或目录>
: 删除文件
-r
删除目录-f
强制执行
touch <文件名>
: 创建空文件
cat [-n] <文件名>
: 显示文件内容
-n
显示行号
tac [文件名]
: 显示文件内容(反向显示)
more <文件名>
: 分页显示文件内容
- (空格)或f 翻页
- (Enter) 换行
- Q或q 退出
less <文件名>
: 分页显示文件内容(可向上翻页)
- 可和很多命令组合使用方便多页显示
- F向下翻页,B向上翻页,Q退出
head [-n] <文件名>
: 显示文件前几行
-n
指定行数
tail [-nf] <文件名>
: 显示文件后面几行
-n
指定行数-f
动态显示文件末尾内容
ln [-s] <原文件> <目标文件>
: 生成链接文件
-s
创建软链接- 软链接:类似于Windows的快捷方式,权限为
rwxrwxrwx
- 硬链接:拷贝源文件+同步更新
权限管理
chmod <[{u|g|o|a}{+|-|=}{r|w|x}][{4|2|1}]> [-R] <文件或目录>
: 修改权限
-R
递归修改u
所属用户 ,g
所属组 ,o
其他 ,a
所用权限r
读取权限 ,w
写入权限 ,x
执行权限- 权限的数值表示
r=4
,w=2
,x=1
chown <用户> <文件或目录>
: 改变文件或目录的所有者
chown <用户>:<用户组> <文件或目录>
: 改变文件或目录的所有者和所属组
chgrp <用户组> <文件或目录>
: 改变文件或目录的所属组
umask [-S]
: 显示、设置文件的缺省权限
-S
以rwx
形式显示创建文件缺省权限
查找帮助
find <搜索范围目录> [选项] <匹配条件>
: 文件搜索
选项和匹配条件:
-name <文件或目录>
按照文件名查找文件-iname <文件或目录>
不区分大小写-size <+|-]N[c|w|b|k|M|G>
文件大小为n
个由后缀决定的数据块+N
大于N,-N
小于N,N
等于Nb
: 代表 512 位元组的区块(如果用户没有指定后缀,则默认为 b)c
: 表示字节数k
: 表示 kilo bytes (1024字节)w
: 字 (2字节)M
:兆字节(1048576字节)G
: 千兆字节 (1073741824字节)
-a
and ,两个条件同时满足-size +N -a -size -M
查找大于 N 且小于 M 的文件
-o
or ,两个条件满足任意一个即可-user <用户>
查找所有者的文件-group <用户组>
根据所属组查找-cmin [+-]N <文件或目录>
查找 N 分钟[-内 +前]被修改过-
以内+
之前
-ctime [+-]N <文件或目录>
在 N 天[-内 +前]被修改过-amin [+-]N <文件或目录>
在 N 分钟之[-内 +前]被读取过-atime [+-]N <文件或目录>
在 N 天[-内 +前]被读取过<选项> <文件或目录> -exec/ok <命令> [] \
对搜索结果执行操作-type <f|d|l> <文件或目录>
根据文件类型查找f
文件d
目录l
软链接文件
locate <文件名>
: 在文件资料库中查找文件
which [命令]
: 搜索命令所在目录及别名信息
whereis <命令>
: 搜索命令所在目录及帮助文档路径
grep [-iv] <字符串> <文件>
: 在文件中搜寻字符串匹配的行并输出
-i
不分大小写-v
排除指定字串
man <命令或配置文件>
: 获得帮助信息
help <命令>
: 获得Shell内置命令的帮助信息
用户管理
useradd <用户名>
: 添加新用户
passwd <用户名>
: 设置用户密码
who
: 查看登录用户信息
w
: 查看登录用户详细信息
write <用户名>
: 给用户发信息,以Ctrl+D保存结束
打包压缩
tar <-zxcvfru> <压缩后文件名.tar.gz> <目录>
: 打包目录
-
f
指定文件 -
c
打包 -
x
解包 -
v
显示详细信息 -
z
调用 gzip 压缩 -
t
查看里面的文件信息 -
r
添加文件到压缩文件 -
u
更新
zip [-r] <压缩后文件名.zip> <文件或目录>
: 压缩文件或目录
-r
压缩目录
unzip <压缩文件>
: 解压.zip的压缩文件
bzip2 [-k] <文件>
: 压缩文件,文件格式为:.bz2
-k
保留原文件
bunzip2 [-k] <压缩文件.bz2>
: 解压.bz2文件
-k
保留原文件
网络相关
ping [-c] <地址>
: 测试网络连通性
-c
指定次数-i
指定收发间隔时间-s
指定大小-t
指定生存周期
ifconfig [网卡名] [选项]
: 查看和配置网卡信息
- 留空为查看网卡信息
downf
关闭网卡up
启动网卡[IP地址]
配置IP地址netmask [子网掩码]
配置子网掩码broadcast [网关]
配置网关arp
开启arp功能-arp
关闭arp功能
mail <用户名>
: 查看发送电子邮件
last
: 列出目前与过去登入系统的用户信息
lastlog <-u UID>
: 检查某特定用户上次登录的时间
-u UID
通过UID查看用户的登录信息
traceroute
: 显示数据包到主机间的路径
netstat [选项]
: 显示网络相关信息
-a
显示详细的网路状况-i
显示网卡列表-t
列出TCP端口-u
列出UDP端口-n
显示IP地址和端口
设备管理
free [-mtV]
: 显示内存
-m
以MB为单位显示内存使用情况-t
显示内存总和列
lsblk [-fml]
: 查看块设备,块设备有硬盘,闪存盘,CD-ROM等
-f
显示文件系统-m
显示权限信息-l
使用列表格式显示
mount [-fnrsvw] [-t文件系统类型] [-o 选项] <设备文件名> <目录>
: 挂载设备
-o [选项]
指定加载文件系统时的选项dev
可读文件系统上的字符或块设备loop
把文件当成硬盘分区挂载ro
只读挂载rw
可读写挂载
-t <文件系统类型>
指定设备的文件系统类型iso9660
光盘ext4
、ntfs
文件系统
umount <目录>
: 卸载挂载的设备
shutdown <-chr> <时间> [“提示信息”]
: 关机重启
-c
取消-h
关机-r
重启- 时间:
now
现在,23:00
晚上11点,+5
在5分钟后
halt
、poweroff
、init 0
: 关机
reboot
、init 6
: 重启
系统运行级别:0关机,1单用户,2不完全多用户,不含NFS服务,3完全多用户,4未分配,5图像界面,6重启
logout
: 退出登录
VI/VIM基础
打开文件
vi 文件名
vim 文件名
vi/vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)
命令模式:
启动 vi/vim 时便是命令模式,此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。
在另外两种模式按 Esc 可进入命令模式。
常用命令:
a
:光标字符后输入,i
:光标字符前输入,o
:光标下插入新行并进入输入模式
x
:删除光标处的,nx
:删除光标起n个字符 (vi/vim 的删除都会将内容保存到寄存器中)
yy
:复制当前行,nyy
:复杂n行
dd
:剪切当前行,ndd
:剪切n行
p
粘贴到光标后,P
:粘贴到贯标前
gg
: 到首行, G
: 到末行
w
, W
: 下一个单词
b
, B
: 前一个单词
n
: 查找下一处,N
: 查找上一处
r
、R
替换
u
:恢复
ZZ
:保存退出
输入模式:
-
命令模式下按下
i
进入输入模式。 -
ESC
,退出输入模式,切换到命令模式。
底线命令模式
命令模式下按下:(英文冒号)就进入了底线命令模式
:w
:保存,:wq
:保存退出
:q
:退出,:q!
:强制退出
:n
:新建文件
:X
:跳到X行
:set nu
:显示行号,:set nonu
:取消行号
本地源配置
Debian 分支
Debian 分支使用 aot-get
管理 deb
软件包
apt-get {<install|reinstall|remove|search> <软件包名>}|{update|upgrade|dist-upgrade|clean}
install
安装reinstall
重新安装remove
卸载search
搜索update
更新源upgrade
更新系统dist-upgrade
识别依赖发生改变并作处理的系统更新clean
清理缓存
-
准备ISO文件、或光盘(本例从Debian的官网下载了3个ISO镜像文件,将其挂载到虚拟机)。
-
创建挂载目录:
sudo mkdir -r /mnt/ISO1 sudo mkdir -r /mnt/ISO2 sudo mkdir -r /mnt/ISO3
-
查看光盘的设备文件和挂载目录
lsblk
sr*
的为光盘的设备文件 -
若文件未被挂载则将文件挂载到目录
sudo mount -t iso9660 /dev/sr0 /mnt/ISO1 sudo mount -t iso9660 /dev/sr1 /mnt/ISO2 sudo mount -t iso9660 /dev/sr2 /mnt/ISO3
如果硬盘空间足够可以将挂载的几个光盘内的内容分别复制到几个目录中,然后更改配置文件,就可将这几个目录固定为apt源库。
如果ISO文件在Linux磁盘中可用:
sudo mount -o loop -t iso9660 /home/iso/debain-DVD-1.iso /mnt/ISO1
将文件挂载到目录。 -
备份默认的配置文件
sudo cp /etc/apt/sources.list /etc/apt/spurces.list.bak
-
修改配置文件
sudo vim /etc/apt/sources.list
deb file:///mnt/ISO1/ stretch main contrib non-free deb file:////mnt/ISO1/ stretch-updates main contrib non-free deb file:///mnt/ISO1/ stretch-backprts main contrib non-free deb-src file:///mnt/ISO1/ stretch main contrib non-free deb-src file:////mnt/ISO1/ stretch-updates main contrib non-free deb-src file:///mnt/ISO1/ stretch-backprts main contrib non-free deb file:///mnt/ISO2/ stretch main contrib non-free deb file:////mnt/ISO2/ stretch-updates main contrib non-free deb file:///mnt/ISO2/ stretch-backprts main contrib non-free deb-src file:///mnt/ISO2/ stretch main contrib non-free deb-src file:////mnt/ISO2/ stretch-updates main contrib non-free deb-src file:///mnt/ISO2/ stretch-backprts main contrib non-free deb file:///mnt/ISO3/ stretch main contrib non-free deb file:////mnt/ISO3/ stretch-updates main contrib non-free deb file:///mnt/ISO3/ stretch-backprts main contrib non-free deb-src file:///mnt/ISO3/ stretch main contrib non-free deb-src file:////mnt/ISO3/ stretch-updates main contrib non-free deb-src file:///mnt/ISO3/ stretch-backprts main contrib non-free
档案类型:
deb
二进制预编译软件包deb-src
编译二进制软件包的源代码仓库地址:
http://……
、https://……
、ftp://……
、file://……
发行版代号:
Debiand的版本及稳定版代号: 9(stretch)、8(jessie)、7(wheezy)、6(squeeze)等,可指定库:代号-库名(updates、backports)
Ubuntu的版本及稳定版代号:18.04(bionic)(Bionic Beaver)、17.10(artful)(Artful Aardvark)、17.04(zesty)(Zesty Zapus)等,可指定库:代号-库名(updates、backports、security)
软件包分类:
Debian:
main
符合DFSG指导原则自由软件包,这些软件包依赖于符合DFSG指导原则的软件包contrib
符合DFSG自由软件包,这些软件包不依赖min分类中的软件包non-free
不符合DFSG指导原则的自由软件包Ubuntu:
min
官方支持的自由软件restricted
官方支持的分完全自由的软件universe
社区维护的自由软件multiverse
非自由软件 -
更新源信息
sudo apt-get update
RedHat 分支
RedHat 使用 yum
管理 rpm
软件包
yum {<install|remove|search> <软件包>}|{update|list|updates|clean all}
-
准备ISO文件、或光盘(可将文件直接放到Linux磁盘,本例为将ISO文件挂载到虚拟机)
-
创建挂载目录
sudo mkdir /mnt/ISO
-
查看光盘的设备文件和挂载目录
lsklb
光盘设备文件为sr*
-
若没有挂载就将其挂载到创建的目录
sudo mount -t iso9660 /dev/sr0 /mnt/ISO
若磁盘空间运行可以将挂载目录中读取到的文件复制到一个固定的目录。作为yum源仓库目录。
也可将linux磁盘内的ISO文件直接挂载到目录:sudo mount -o loop -t iso9660 /home/iso/redhat-DVD.iso /mnt/ISO
-
备份配置文件
sudo cp /etc/yum.repos.d/***.repo /etc/yum.repos.d/***.repo.bak
或新建建一个
cdrom.repo
文件(CentOS有一个默认的本地yum配置文件:CentOS-Media.repo) -
修改配置文件内容
将redhat.repo的内容全删除替换上本地源的配置内容。
或直接在cdrom.repo内添加。[CDROM] name=isofile baseurl=file:///mnt/ISO/ enabled=1 gpgcheck=0 gpgke=file:///mnt/ISO/RPM-GPG-KEY-redhat-release
[serverid]
:serverid是用去区别各个不同源的,必须独一无二的的名称,重复了会被覆盖
name=name
:对源的描述
baseurl=url1
url2
url3
:指定源的路径,可以指定多条,http://……
、https://……
、ftp://……
、file://……
enabled=[1/0]
:启用(1)或禁用(0)源
gpgcheck=[1/0]
:启用(1)或禁用(0)gpg校验
gpgke=url
:若启用gpg校验,则调用gpgkey的地址 -
清理旧缓存,刷新源
sudo yum clean all sudo yum repolist # 或 sudo yum malecache # 或 sudo yum list