Linux基础知识
一、Linux入门
- Linux 和 Windows的简单对比
二、安装VMware软件
一直下一步即可...
三、新建虚拟机
-- 类似于在当前电脑上再安装一台虚拟电脑
四、安装Centos7
-- 注意:在启动虚拟机之前,一定要映射 Centos镜像文件。
五、Linux常见目录结构
- bin 是Binary的缩写,这个目录存放着最经常使用的命令
- home 存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的
- root 该目录为超级管理员目录
- tmp 存放一些临时文件
- etc 所有的系统管理所需要的配置文件和子目录
- boot linux系统启动所需要的一些核心文件,如一些连接文件和镜像文件。自己的文件一般别放这个目录。
- usr 存放了用户的很多程序和文件,类似windows下的program files.
- var 习惯存放一些经常修改的的目录,日志文件也存放在里面。
六、VI和VIM编辑器的使用
6.1、一般模式
操作一些修剪工作 例如 复制 粘贴 删除...
语法 | 功能描述 |
yy | 复制光标当前一行 |
y数字y | 复制一段(从第几行到第几行) |
p | 箭头移动到目的行粘贴 |
u | 撤销上一步 |
dd | 删除光标当前行 |
d数字d | 删除光标(含)后多少行 |
x | 剪切一个字母,相当于del |
X | 剪切一个字母,相当于Backspace |
yw | 复制一个词 |
dw | 删除一个词 |
shift+6(^) | 移动到行头 |
shift+4 ($) | 移动到行尾 |
1+shift+g | 移动到页头,数字 |
shift+g | 移动到页尾 |
数字+shift+g | 移动到目标行 |
6.2、编辑模式
可以直接编辑文本 插入内容
6.3、指令模式
通过一些指令全局对文本进行操作 例如 保存 退出 查找 替换
命令 | 功能 |
:w | 保存 |
:q | 退出 |
:! | 强制执行 |
/要查找的词 | n 查找下一个,N 往上查找 |
:noh | 取消高亮显示 |
:set nu | 显示行号 |
:set nonu | 关闭行号 |
:%s/old/new/g | 替换内容 /g 替换匹配到的所有内容 |
6.4、模式之间的切换
默认打开文件就是一般模式
一般模式 切换到 编辑模式 --> i
编辑模式 切换到 一般模式 --> esc
一般模式 切换到 指令模式 --> : 或者 /(查找内容场景用/)
七、网络配置和系统管理操作
7.1、物理机和虚拟机之间的网络配置的联系
1). 当我们安装VM虚拟机软件的时候,默认安装虚拟网卡,保证
物理机和VM虚拟机软件之间可以通信,此时虚拟网卡会分配一个
IP:192.168.X.1
2). 查看VM虚拟机的网络编辑器发现 虚拟机软件也占用了一个IP:192.168.X.0
3). 当我们创建一个新的客户机并且在客户机上安装Linux系统后,通过网络配置
给当前客户机(Linux)也分配了一个IP:192.168.X.X ,综上所述,就保证
物理机和VM虚拟机以及Linux客户机之间正常通行。
4). 通常情况下,我们需要手动改变Linux客户机的IP为静态的,
目的就是防止每次重启后再次动态分配
-- 修改 ifcfg-ens33 文件
vim /etc/sysconfig/network-scripts/ifcfg-ens33
修改内容如下:
BOOTPROTO="static"
ONBOOT="yes"
#IP地址
IPADDR=192.168.2.100
#网关(虚拟机的网关,每台电脑可能都不一样)
GATEWAY=192.168.2.2
#域名解析器
DNS1=192.168.2.2
7.2、配置主机名
修改主机名
[lzh@lzhgy100 home]$ vim /etc/hostname
修改hosts映射文件
[root@lzhgy100 ~]# vim /etc/hosts
添加如下内容
192.168.25.100 lzhgy100
192.168.25.101 lzhgy101
192.168.25.102 lzhgy102
192.168.25.103 lzhgy103
192.168.25.104 lzhgy104
修改window10的主机映射文件(hosts文件)
(1)进入C:\Windows\System32\drivers\etc路径
(2)拷贝hosts文件到桌面
(3)打开桌面hosts文件并添加如下内容
192.168.25.100 lzhgy100
192.168.25.101 lzhgy101
192.168.25.102 lzhgy102
192.168.25.103 lzhgy103
192.168.25.104 lzhgy104
7.3、关闭防火墙
1) 基本语法
systemctl start | stop | restart | status 服务名
2) 经验技巧
查看服务的方法:/usr/lib/systemd/system
3)案例实操
(1)查看防火墙服务的状态、
[root@lzhgy100 ~]# systemctl status firewalld.service
(2)停止防火墙服务
[root@lzhgy100 ~]# systemctl stop firewalld.service
(3)启动防火墙服务
[root@lzhgy100 ~]# systemctl start firewalld
(4)重启防火墙服务
[root@lzhgy100 ~]# systemctl restart firewalld.service
(5)开启/关闭iptables(防火墙)服务的自动启动
[root@lzhgy100 ~]#systemctl enable firewalld.service
[root@lzhgy100 ~]#systemctl disenable firewalld.service
八、常用命令
8.1帮助命令
man
1)基本语法
man [命令或配置文件] (功能描述:获得帮助信息)
[root@lzhgy100 ~]# man ls
help
1)基本语法
help 命令 (功能描述:获得shell内置命令的帮助信息)
[root@lzhgy100 ~]# help cd
常用快捷键
常用快捷键 | 功能 |
ctrl + c | 停止进程 |
ctrl+l | 清屏;彻底清屏是:reset |
ctrl + q | 退出 |
善于用tab键 | 提示(更重要的是可以防止敲错) |
上下键 | 查找执行过的命令 |
ctrl +alt | linux和Windows之间切换 |
8.2、文件目录类
[root@lzhgy100 bbb]# pwd
/root/bbb
ll=ls -l
[root@lzhgy100 /]# ll
cd:Change Directory切换路径
1)基本语法
cd [参数]
2)参数说明
参数 | 功能 |
cd 绝对路径 | 切换路径 |
cd相对路径 | 切换路径 |
cd ~或者cd | 回到自己的家目录 |
cd - | 回到上一次所在目录 |
cd .. | 回到当前目录的上一级目录 |
cd -P | 跳转到实际物理路径,而非快捷方式路径 |
[root@lzhgy100 ~]# mkdir abc
[root@lzhgy100 ~]# rmdir abc
[root@lzhgy100 ~]# touch ccc
[root@lzhgy100 ~]# cp aaa -r abc/
[root@lzhgy100 ~]# cp bb.txt abc/
[root@lzhgy100 ~]# rm bb.txt
[root@lzhgy100 ~]# rm -rf abc
[root@lzhgy100 ~]# mv aa.sh aaa/
[root@lzhgy100 ~]# mv aa.tex aa.txt
[lzh@lzhgy100 home]$ cat aa.sh
[root@lzhgy100 ~]# more bb.txt
[root@lzhgy100 ~]# less bb.txt
[root@lzhgy100 ~]# echo -e "aaa\tbbb"
[root@lzhgy100 ~]# head -n 1 bb.txt
[root@lzhgy100 ~]# tail -f bb.txt
[root@lzhgy100 ~]# echo "aaa哈哈哈">>bb.txt
[root@lzhgy100 ~]# ln -s bb.txt ln_bbb
##删除软链接: rm -rf 软链接名,而不是rm -rf 软链接名/
[root@lzhgy100 ~]# history
8.3、时间日期类
(1)显示当前时间信息
[root@lzhgy100 ~]# date
2021年 03月 12日 星期五 18:33:55 CST
(2)显示当前时间年月日
[root@lzhgy100 ~]# date +%Y-%m-%d
2021-03-12
(3)显示当前时间年月日时分秒
[root@lzhgy100 ~]# date "+%Y-%m-%d %H:%M:%S"
2021-03-12 18:36:01
(1)显示前一天
[root@lzhgy100 ~]# date -d '1 days ago'
2021年 03月 11日 星期四 18:37:05 CST
(2)显示明天时间
[root@lzhgy100 ~]# date -d '-1 days ago'
2021年 03月 13日 星期六 18:37:45 CST
[root@lzhgy100 ~]# date -s "2021-06-19 20:52:18"
2021年 06月 19日 星期六 20:52:18 CST
[root@lzhgy100 ~]# cal 2021
8.4、用户管理命令
-
useradd 添加新用户
[root@lzhgy100 ~]# useradd gy
-
passwd 设置用户密码
[root@lzhgy100 ~]# passwd gy
-
id 查看用户是否存在
[root@lzhgy100 ~]# id gy
uid=1001(gy) gid=1001(gy) 组=1001(gy)
-
cat /etc/passwd 查看创建了哪些用户
[root@lzhgy100 ~]# cat /etc/passwd
-
su 切换用户
[root@lzhgy100 ~]# su gy
-
userdel 删除用户
[root@lzhgy100 ~]# userdel gy
-
who 查看登录用户信息
##显示自身用户名称
[root@lzhgy100 ~]# whoami
##显示登录用户的用户名
[root@lzhgy100 ~]# who am i
-
sudo 设置普通用户具有root权限
[root@lzhgy100 ~]#vi /etc/sudoers
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
lzh ALL=(ALL) NOPASSWD:ALL
-
usermod 修改用户
usermod -g 用户组 用户名
[root@lzhgy100 ~]# usermod -g root lzh
8.5、用户组管理命令
-
groupadd 新增组
[root@lzhgy100 ~]# groupadd gr1
-
groupdel 删除组
[root@lzhgy100 ~]# groupdel gr1
-
groupmod 修改组
groupmod -n 新组名 老组名
[root@lzhgy100 ~]# groupmod -n lzh100 lzh
-
cat /etc/group 查看创建了哪些组
[root@lzhgy100 ~]# cat /etc/group
8.6、文件权限类
-
文件属性
从左到右的10个字符表示
如果没有权限,就会出现减号[ - ]。从左至右用0-9这些数字来表示:
(1)0首位表示类型
在Linux中第一个字符代表这个文件是目录、文件或链接文件等等
- 代表文件
d 代表目录
l 链接文档(link file);
(2)第1-3位确定属主(该文件的所有者)拥有该文件的权限。---User
(3)第4-6位确定属组(所有者的同组用户)拥有该文件的权限,---Group
(4)第7-9位确定其他用户拥有该文件的权限 ---Other
rxw作用文件和目录的不同解释
1)作用到文件:
[ r ]代表可读(read): 可以读取,查看
[ w ]代表可写(write): 可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件.
[ x ]代表可执行(execute):可以被系统执行
(2)作用到目录:
[ r ]代表可读(read): 可以读取,ls查看目录内容
[ w ]代表可写(write): 可以修改,目录内创建+删除+重命名目录
[ x ]代表可执行(execute):可以进入该目录
-
chmod 改变权限
第一种方式变更权限
chmod [{ugoa}{+-=}{rwx}] 文件或目录
第二种方式变更权限
chmod [mode=421 ] [文件或目录]
经验技巧
u:所有者 g:所有组 o:其他人 a:所有人(u、g、o的总和)
r=4 w=2 x=1 rwx=4+2+1=7
##修改文件使其所属主用户具有执行权限
[root@lzhgy100 ~]# chmod g+x bb.txt
##采用数字的方式,设置文件所有者、所属组、其他用户都具有可读可写可执行权限。
[root@lzhgy100 ~]# chmod 777 bb.txt
##修改整个文件夹里面的所有文件的所有者、所属组、其他用户都具有可读可写可执行权限。
[root@lzhgy100 ~]# chmod 777 aaa/
-
chown 改变所有者
chown [选项] [最终用户] [文件或目录] (功能描述:改变文件或者目录的所有者)
## 修改文件所有者
[root@lzhgy100 ~]# chown lzh aaa
##递归改变文件的所有者和所有组
[root@lzhgy100 ~]# chown -R lzh:lzh aaa/
-
chgrp 改变所属组
[root@lzhgy100 aaa]# chgrp root aa.sh
8.7、搜素查找类
-
find 查找文件或者目录
find指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件显示在终端。
1)基本语法
find [搜索范围] [选项]
2)选项说明
表7-21
选项 | 功能 |
-name<查询方式> | 按照指定的文件名查找模式查找文件 |
-user<用户名> | 查找属于指定用户名所有文件 |
-size<文件大小> | 按照指定的文件大小查找文件,单位为: *b* —— 块(512字节)****c**** —— 字节****w**** —— 字(2字节)****k**** —— 千字节****M**** —— 兆字节****G**** —— 吉字节 |
3)案例实操
(1)按文件名:根据名称查找/目录下的filename.txt文件。
[root@lzhgy100 ~]# find bbb/ -name *.sh
(2)按拥有者:查找/opt目录下,用户名称为-user的文件
[root@lzhgy100 ~]# find /opt -user lzh
(3)按文件大小:在/home目录下查找大于200m的文件(+n 大于 -n小于 n等于)
[root@lzhgy100 ~]find /home -size +204800
-
locate快速定位文件路径
locate指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件。Locate指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新locate时刻。/tmp下的不会被查出来。
1)基本语法
locate 搜索文件
2)经验技巧
由于locate指令基于数据库进行查询,所以第一次运行前,必须使用updatedb指令创建locate数据库。
3)案例实操
[root@lzhgy100 ~]# locate lzh.sh
-
grep 过滤查找及“|”管道符
管道符,“|”,表示将前一个命令的处理结果输出传递给后面的命令处理
1)基本语法
-n 显示匹配行及行号。
grep 选项 查找内容 源文件
[root@lzhgy100 ~]# ls |grep -n a
2:aaa.txt
3:aa.txt
4:anaconda-ks.cfg
7:initial-setup-ks.cfg
8:ln_a
9:ln_aa
8.8、压缩解压类
-
gzip/gunzip 压缩
1)基本语法
gzip 文件 (功能描述:压缩文件,只能将文件压缩为*.gz文件)
gunzip 文件.gz (功能描述:解压缩文件命令)
2)经验技巧
(1)只能压缩文件不能压缩目录
(2)不保留原来的文件
3)案例实操
[root@lzhgy100 ~]# gzip aaa.txt aa.tx
[root@lzhgy100 ~]# gunzip aaa.txt.gz aa.txt.gz
-
zip/unzip 压缩
1)基本语法
-r 压缩目录 -d<目录> 指定解压后文件的存放目录
zip [选项] XXX.zip 将要压缩的内容 (功能描述:压缩文件和目录的命令)
unzip [选项] XXX.zip (功能描述:解压缩文件)
##压缩文件到指定目录
[root@lzhgy100 ~]# zip gy/aa.zip aa.txt
##压缩目录
[root@lzhgy100 ~]# zip lzh/lzh.zip -r gy
##解压文件到指定目录
[root@lzhgy100 ~]# unzip aa.zip -d lzh
-
tar 打包
1)基本语法
tar [选项] XXX.tar.gz 将要打包进去的内容 (功能描述:打包目录,压缩后的文件格式.tar.gz)
2)选项说明
选项 | 功能 |
-c | 产生.tar打包文件 |
-v | 显示详细信息 |
-f | 指定压缩后的文件名 |
-z | 打包同时压缩 |
-x | 解包.tar文件 |
-C | 解压到指定目录 |
3)案例实操
##把aa.txt lzh文件夹 打包并压缩
[root@lzhgy100 ~]# tar -cvzf lzh.tar.gz aa.txt lzh
##解压到指定目录
[root@lzhgy100 ~]# tar zxvf lzh.tar.gz -C gy/
8.9、磁盘分区类
- df 查看磁盘空间使用情况
- fdisk 查看分区
- lsblk 查看设备挂载情况
- mount/umount 挂载/卸载
8.10、进程线程类
-
ps 查看当前系统进程状态
ps:process status 进程状态
1)基本语法
ps -aux | grep xxx (功能描述:查看系统中所有进程)
ps -ef | grep xxx (功能描述:可以查看子父进程之间的关系)
2)选项说明
表7-30
选项 | 功能 |
-a | 选择所有进程 |
-u | 显示所有用户的所有进程 |
-x | 显示没有终端的进程 |
3)功能说明
(1)ps -aux显示信息说明
USER:该进程是由哪个用户产生的
PID:进程的ID号
%CPU:该进程占用CPU资源的百分比,占用越高,进程越耗费资源;
%MEM:该进程占用物理内存的百分比,占用越高,进程越耗费资源;
VSZ:该进程占用虚拟内存的大小,单位KB;
RSS:该进程占用实际物理内存的大小,单位KB;
TTY:该进程是在哪个终端中运行的。其中tty1-tty7代表本地控制台终端,tty1-tty6是本地的字符界面终端,tty7是图形终端。pts/0-255代表虚拟终端。
STAT:进程状态。常见的状态有:R:运行、S:睡眠、T:停止状态、s:包含子进程、+:位于后台
START:该进程的启动时间
TIME:该进程占用CPU的运算时间,注意不是系统时间
COMMAND:产生此进程的命令名
(2)ps -ef显示信息说明
UID:用户ID
PID:进程ID
PPID:父进程ID
C:CPU用于计算执行优先级的因子。数值越大,表明进程是CPU密集型运算,执行优先级会降低;数值越小,表明进程是I/O密集型运算,执行优先级会提高
STIME:进程启动的时间
TTY:完整的终端名称
TIME:CPU时间
CMD:启动进程所用的命令和参数
4)经验技巧
如果想查看进程的CPU占用率和内存占用率,可以使用aux;
如果想查看进程的父进程ID可以使用ef;
-
kill 终止进程
kill [选项] 进程号 (功能描述:通过进程号杀死进程)
killall 进程名称 (功能描述:通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用)
-9表示强迫进程卢克停止
-
pstree 查看进程树
pstree [选项]
-p 显示进程的PID
-u 显示进程的所属用户
-
top 查看系统健康状态
1)基本命令
top [选项]
2)选项说明
选项 | 功能 |
-d 秒数 | 指定top命令每隔几秒更新。默认是3秒在top命令的交互模式当中可以执行的命令: |
-i | 使top不显示任何闲置或者僵死进程。 |
-p | 通过指定监控进程ID来仅仅监控某个进程的状态。 |
3) 操作说明
操作 | 功能 |
P | 以CPU使用率排序,默认就是此项 |
M | 以内存的使用率排序 |
N | 以PID排序 |
q | 退出top |
-
netstat 显示网络统计信息和端口占用情况
1)基本语法
netstat -anp | grep 进程号 (功能描述:查看该进程网络信息)
netstat –nlp | grep 端口号 (功能描述:查看网络端口号占用情况)
2)选项说明
表7-40
选项 | 功能 |
-n | 拒绝显示别名,能显示数字的全部转化成数字 |
-l | 仅列出有在listen(监听)的服务状态 |
-p | 表示显示哪个进程在调用 |
3)案例实操
通过进程号查看该进程的网络信息
[root@lzhgy100 ~]# netstat -anp | grep sshd
查看某端口号是否被占用
[root@lzhgy100 ~]# netstat -nlp |grep 22
8.11crontab系统定时任务
-
crontab 服务管理
重新启动crond服务
[root@lzhgy100 ~]# systemctl restart crond
-
crontab 定时任务设置
1)基本语法
crontab [选项]
2)选项说明
选项 | 功能 |
-e | 编辑crontab定时任务 |
-l | 查询crontab任务 |
-r | 删除当前用户所有的crontab任务 |
3)参数说明
[root@lzhgy100 ~]# crontab -e
(1)进入crontab编辑界面。会打开vim编辑你的工作。
执行的任务
项目 | 含义 | 范围 |
第一个“*” | 一小时当中的第几分钟 | 0-59 |
第二个“*” | 一天当中的第几小时 | 0-23 |
第三个“*” | 一个月当中的第几天 | 1-31 |
第四个“*” | 一年当中的第几月 | 1-12 |
第五个“*” | 一周当中的星期几 | 0-7(0和7都代表星期日) |
(2)特殊符号
特殊符号 | 含义 |
* | 代表任何时间。比如第一个“*”就代表一小时中每分钟都执行一次的意思。 |
, | 代表不连续的时间。比如“0 8,12,16 * * * 命令”,就代表在每天的8点0分,12点0分,16点0分都执行一次命令 |
- | 代表连续的时间范围。比如“0 5 * * 1-6命令”,代表在周一到周六的凌晨5点0分执行命令 |
*/n | 代表每隔多久执行一次。比如“*/10 * * * * 命令”,代表每隔10分钟就执行一遍命令 |
(3)特定时间执行命令
时间 | 含义 |
45 22 * * * 命令 | 在22点45分执行命令 |
0 17 * * 1 命令 | 每周1 的17点0分执行命令 |
0 5 1,15 * * 命令 | 每月1号和15号的凌晨5点0分执行命令 |
40 4 * * 1-5 命令 | 每周一到周五的凌晨4点40分执行命令 |
*/10 4 * * * 命令 | 每天的凌晨4点,每隔10分钟执行一次命令 |
| |
0 0 1,15 * 1 命令 | 每月1号和15号,每周1的0点0分都会执行命令。注意:星期几和几号最好不要同时出现,因为他们定义的都是天。非常容易让管理员混乱。 |
4)案例实操
(1)每隔1分钟,向/root/bailongma.txt文件中添加一个11的数字
*/1 * * * * /bin/echo ”11” >> /root/bailongma.txt
九、软件包管理
9.1、RPM
1)基本语法
rpm -qa (功能描述:查询所安装的所有rpm软件包)
rpm -e RPM 软件包 (功能描述:卸载软件包)
rpm -ivh RPM 包全名 (功能描述:安装软件包)
选项 | 功能 |
-i | -i=install,安装 |
-v | -v=verbose,显示详细信息 |
-h | -h=hash,进度条 |
--nodeps | --nodeps,不检测依赖进度 |
2)经验技巧*
由于软件包比较多,一般都会采取过滤。rpm -qa | grep 软件包
9.2、yum
1)基本语法
yum [选项] [参数]
2)选项说明
3)参数说明
参数 | 功能 |
install | 安装rpm软件包 |
update | 更新rpm软件包 |
check-update | 检查是否有可用的更新rpm软件包 |
remove | 删除指定的rpm软件包 |
list | 显示软件包信息 |
clean | 清理yum过期的缓存 |
deplist | 显示yum软件包的所有依赖关系 |
4)案例实操实操
(1)采用yum方式安装firefox
[root@lzhgy100 ~]# yum -y install firefox