Linux 课程学习
Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年10月5日首次发布,它主要受到Minix和Unix思想的启发,是一个基于多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
- 免费开源
- 模块化程度高
- 广泛的硬件支持
- 安全稳定
- 多用户,多任务
- 良好的可移植性
一、Linux的基本知识
1.1、Linux 的发行版本
Linux 的发行版说简单点就是将 Linux 内核与应用软件做一个打包。
目前市面上较知名的发行版有:Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS 等。
1.2、Linux vs Windows
比较 | Windows | Linux |
---|---|---|
界面 | 界面统一,外壳程序固定所有 Windows 程序菜单几乎一致,快捷键也几乎相同 | 图形界面风格依发布版不同而不同,可能互不兼容。GNU/Linux 的终端机是从 UNIX 传承下来,基本命令和操作方法也几乎一致。 |
驱动程序 | 驱动程序丰富,版本更新频繁。默认安装程序里面一般包含有该版本发布时流行的硬件驱动程序,之后所出的新硬件驱动依赖于硬件厂商提供。对于一些老硬件,如果没有了原配的驱动有时很难支持。另外,有时硬件厂商未提供所需版本的 Windows 下的驱动,也会比较头痛。 | 由志愿者开发,由 Linux 核心开发小组发布,很多硬件厂商基于版权考虑并未提供驱动程序,尽管多数无需手动安装,但是涉及安装则相对复杂,使得新用户面对驱动程序问题(是否存在和安装方法)会一筹莫展。但是在开源开发模式下,许多老硬件尽管在Windows下很难支持的也容易找到驱动。HP、Intel、AMD 等硬件厂商逐步不同程度支持开源驱动,问题正在得到缓解。 |
使用 | 使用比较简单,容易入门。图形化界面对没有计算机背景知识的用户使用十分有利。 | 图形界面使用简单,容易入门。文字界面,需要学习才能掌握。 |
学习 | 系统构造复杂、变化频繁,且知识、技能淘汰快,深入学习困难。 | 习系统构造简单、稳定,且知识、技能传承性好,深入学习相对容易。 |
软件 | 每一种特定功能可能都需要商业软件的支持,需要购买相应的授权。 | 大部分软件都可以自由获取,同样功能的软件选择较少。 |
二、虚拟机部署系统及linux系统的基本讲解
Vm虚拟机(VMware Workstation)是一个“虚拟PC”软件,VMware虚拟机使你可以在一台机器上同时运行二个或更多Windows、DOS、LINUX系统。与“多启动”系统相比,vm虚拟机采用了完全不同的概念。多启动系统在一个时刻只能运行一个系统,在系统切换时需要重新启动机器.
2.1、VMware 12的主界面图
2.2、打开已有的Linux镜像文件
第一步:文件->打开
第二步:选中镜像文件
第三步:选择已经加载的镜像文件,点击 开启此虚拟机
2.3、彻底删除虚拟机
2.4 、Linux 基本界面说明
2.5、 Linux shell基本原理
2.6、 Linux 文件结构
/bin: 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。
/boot: 存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。
/dev : 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。
/etc: 用来存放所有的系统管理所需要的配置文件和子目录。
/home: 用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的
/lib: 存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。
/lost+found: 这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
/media: linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下。
/mnt: 系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了。
/opt: opt 是 optional(可选) 的缩写,这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
/proc: proc 是 Processes(进程) 的缩写,/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:
/root: 该目录为系统管理员,也称作超级权限者的用户主目录。
/sbin: s 就是 Super User 的意思,是 Superuser Binaries (超级用户的二进制文件) 的缩写,这里存放的是系统管理员使用的系统管理程序。
/selinux: 这个目录是 Redhat/CentOS 所特有的目录,Selinux 是一个安全机制,类似于 windows 的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。
/srv: 该目录存放一些服务启动之后需要提取的数据。
/sys: 这是 Linux2.6 内核的一个很大的变化。该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs 。
sysfs 文件系统集成了下面3种文件系统的信息:针对进程信息的 proc 文件系统、针对设备的 devfs 文件系统以及针对伪终端的 devpts 文件系统。
该文件系统是内核设备树的一个直观反映。
当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。
/tmp: tmp 是 temporary(临时) 的缩写这个目录是用来存放一些临时文件的。
/usr: usr 是 unix shared resources(共享资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。
/usr/bin: 系统用户使用的应用程序。
/usr/sbin: 超级用户使用的比较高级的管理程序和系统守护程序。
/usr/src: 内核源代码默认的放置目录。
/var: var 是 variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
/run: 是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。
三、linux的常用命令命令
3.1、标准输出
- echo:将指定字符串的值输出到标准的输出设备
查询当前的shell 环境
[root@VM-16-13-centos ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
打印出当前用户环境的home目录路径
[root@VM-16-13-centos ~]# echo $HOME
/root
输出环境变量 PATH
[root@VM-16-13-centos ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
如果文件名称中有特殊字符用单引号包裹
单引号('):不处理任何变量和命令
[root@VM-16-13-centos home]# echo 'echo $PATH'
echo $PATH
双引号("):只处理变量,不处理命令
[root@VM-16-13-centos home]# echo "echo $PATH"
echo /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
反引号(`):命令处理
[root@VM-16-13-centos home]# echo `echo $PATH`
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
3.2、网络相关
- ip addr:显示IP地址
查询Linux的IP地址命令
[root@VM-16-13-centos ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 52:54:00:44:46:55 brd ff:ff:ff:ff:ff:ff
inet 10.0.16.13/22 brd 10.0.19.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::5054:ff:fe44:4655/64 scope link
valid_lft forever preferred_lft forever
3.3、常用的操作命令
- exit:退出登录命令
[root@VM-16-13-centos ~]# exit
logout
- man:查看帮助
[root@VM-16-13-centos ~]# man echo
想要退man命令查看请按 q 键退出阅读
Linux命名大全(手册) https://www.linuxcool.com
- pwd命令:来自于英文词组”print working directory“的缩写,其功能是用于显示当前工作目录的路径,即显示所在位置的绝对路径。
[root@VM-16-13-centos ~]# pwd
/root
- cd:切换目录
绝对路径:与根目录相关的位置,以正斜杠开头
相对路径:与当前位置相关的位置
- … 上一级目录
- . 当前目录
- ~ 用户家目录
- - 上一个工作目录
cd :切换目录
cd / :切换到根目录
cd /root :切换到根目录下的root目录
cd /tmp :切换到根目录下的tmp目录
cd ./tmp :切换到当前目录下的tmp目录
cd - :切换到上一个工作目录
cd … :切换到上一级目录
cd ~ :切换到用户家目录
- ls:来自于英文单词list的缩写,其功能是列举出指定目录下的文件名称及其属性。
默认不加参数的情况下,ls命令会列出当前工作目录中的文件信息,经常与cd和pwd命令搭配使用
[root@VM-16-13-centos home]# ls
jason lighthouse
ls -l :显示详细信息
[root@VM-16-13-centos home]# ls -l
total 8
drwx------ 4 jason jason 4096 May 17 23:05 jason
drwx------ 3 lighthouse lighthouse 4096 Apr 12 12:00 lighthouse
ls -a :显示隐藏文件,以 . 开头的文件为隐藏文件
[root@VM-16-13-centos home]# ls -a
. .. jason lighthouse
ls /root :显示指定目录的内容
ls -R:递归处理,将指定目录下的所有文件及子目录一并显示
Linux 文件命名规则:
- 文件的名称严格区分大小写
- 名称最多可以为 255 个字符
- 除了正斜杠 / 外,都是有效字符
- 以 . 开头的文件为隐藏文件
- Linux 是一个无扩展系统
- file :识别文件类型
[root@VM-16-13-centos jason]# file file.cfg
file.cfg: empty
- history:历史记录
!序号:重复执行该命令
!!:重复执行上一条命令
history -c :清空历史记录
- clear:清屏
3.4 、文件操作命令
- touch: 创建空文件、更新文件时间
新建一个名为test.txt的空文件
touch test.txt
同时创建1.txt ,2.txt, 3.txt ,4.txt 多个空文件文件
touch 1.txt 2.txt 3.txt 4.txt
修改文件的时间
touch -d "2022-05-08 15:44" anaconda-ks.cfg
- stat :命令显示文件状态信息
[root@localhost ~]# stat anaconda-ks.cfg
文件:"anaconda-ks.cfg"
大小:1245 块:8 IO 块:4096 普通文件
设备:fd00h/64768d Inode:33574979 硬链接:2
权限:(0600/-rw-------) Uid:( 0/ root) Gid:( 0/ root)
环境:system_u:object_r:admin_home_t:s0
最近访问:2022-06-23 17:06:52.995889595 +0800
最近更改:2017-09-09 17:35:00.721092313 +0800
最近改动:2022-06-07 17:31:58.006481062 +0800
创建时间:-
- mkdir:创建空目录
创建一个空目录(文件夹)adir
mkdir adir
同时创建多个同级目录 adir ,bdir, cdir ,ddir
mkdir adir bdir cdir ddir
递归创建层级目录
mkdir -p B/B1/B11
- cp :命令来自于英文单词copy的缩写,用于将一个或多个文件或目录复制到指定位置
复制一个1.txt的文件到指定的同级目录adir下
cp 1.txt adir/
复制并重新命名
cp 1.txt 2.txt
将adir目录下的所有下级文件及目录复制到bdir目录下
cp -r adir/ bdir
- mv :命令来自于英文单词move的缩写,用于对文件进行剪切移动和重命名
将1.txt移动到bdir目录下
mv 1.txt bdir/
将2.txt重命名为5.txt
mv 2.txt 5.txt
- rmdir命令来自于英文词组“remove directory”的缩写,其功能是用于删除空目录文件
rmdir ddir/
- rm:命令来自于英文单词remove的缩写,其功能是用于删除文件或目录,一次可以删除多个文件,或递归删除目录及其内的所有子文件
删除3.txt的文件
rm 3.txt
强制删除4.txt,无询问
rm -f 4.txt
强制删除B目录 ,慎重使用该命令参数
rm -rf bdir/
- 通配符
* 表示任意字符串
? 表示单个字符
[…] 表示指定范围
[!..] 表示指定范围外
touch 1.txt 2.txt 3.txt 4.txt 1.log 2.log 3.log 1 11 2 22 3 33
匹配以 .log 结尾的文件
ls *.log
匹配以 1. 开头的文件
ls 1.*
匹配当个字符名的文件
ls ?
匹配1或者3以.log结尾文件
ls [13].log
匹配1-9.log的文件
ls [1-9].log
匹配不包含1或者3以.log结尾文件
ls [!13].log
3.5、查看文件内容
- wc 统计 文本 的行数、字数(空白区域分割的连续的字符)、字节数
[root@localhost ~]# wc anaconda-ks.cfg
48 121 1245 anaconda-ks.cfg
- cat 查看内容较少的纯文本文件
cat anaconda-ks.cfg
- 查看文件,显示文件的行号
cat -n anaconda-ks.cfg
- more 从头到尾阅读长篇幅
more anaconda-ks.cfg
- less 通过上下方向键上下翻页查看长篇幅,按q键退出阅读
less anaconda-ks.cfg
- head 不带参数默认阅读前 10 行
[root@localhost ~]# head anaconda-ks.cfg
#version=DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512
# Use CDROM installation media
cdrom
# Use graphical install
graphical
# Run the Setup Agent on first boot
firstboot --enable
ignoredisk --only-use=sda
- head -n 行数查看20行数据
head -n 20 anaconda-ks.cfg
- tail 阅读后 10 行,主要用于查看日志
- 查看文件内容最后五行
tail -n 5 anaconda-ks.cfg
- 从第 5 行 看到 末尾
tail -n +5 anaconda-ks.cfg
- tail -f 实时滚动查看
tail -f /var/log/messages
注意tail滚动查看实时日志 按 Ctrl + C 退出
3.6、查找搜索操作命令
- grep 对于文件内容 基于关键字的搜索
在anaconda-ks.cfg 文件中查找 root 关键字,并显示行号
grep -n root anaconda-ks.cfg
在anaconda-ks.cfg 文件中查找 root 关键字,并显示行号,并显示关键字后面2行,关键字前3行
grep -n root anaconda-ks.cfg -A2 -B3
在anaconda-ks.cfg 文件中查找 root 关键字,并显示行号,并显示关键字前后各3行
grep -n root anaconda-ks.cfg -C3
- find命令的功能是根据给定的路径和条件查找相关文件或目录
在根目录中查找名字为httpd.conf的文件
find / -name 'httpd.conf'
在根目录中查找名字为httpd开头的文件
find / -name 'httpd*'
查找根目录中大小超过50M的文件
find / -size +50M
- which 查找命令的绝对路径
[root@localhost ~]# which cd
/usr/bin/cd
3.7、文件系统结构及链接
Linux文件系统结构
Linux的文件系统有三部分组成:文件名、inode、block
Linux的文件系统:ext2 、ext3、ext4、xfs
Windows的文件系统:FAT32、NTFSLinux查找文件的原理:
系统内部不使用文件名来查找,而是通过inode号码来识别文件
系统找文件对应的inode号码
然后通过inode号码获取inode信息
然后再找文件所在的block,读取数据inode的内容
inode包含文件的元信息(不包括文件名、文件内容)、
包括文件的字节数
文件所有者
文件所属组
文件的读写执行权限;block 块大小
block是真正存储数据的地方
block是文件系统中最小的存储单位
扇区是磁盘中最小的存储单位;
在Linux系统中是block
在windows系统中是簇
- 硬链接和软链接
硬链接
特点:
硬链接通过索引节点号来进行链接,inode号是可以读音多个文件名
硬链接的作用是允许多个文件名同时指向一个索引节点,
一个文件名也可以拥有多个有效路径名,可以防止误删除的功能
硬链接是不可以跨分区链接;
当文件真正被删除的情况就是所有的相同inode号的文件删除
删除源文件,链接文件依然可用
无法针对目录进行
创建硬链接语法ln 源文件 链接文件名
给anaconda-ks.cfg 文件创建一个名字为 abc的硬链接
ln anaconda-ks.cfg abc
软链接
特点:
软链接是可以跨分区的
软链接的权限是满权限;
相当于windows的快捷方式
删除源文件,链接文件不可用
链接文件可以链接目录
创建软连接语法 ln -s 源文件 链接文件名
给anaconda-ks.cfg 文件创建一个名字为 xyz的软链接
ln -s anaconda-ks.cfg xyz
显示root目录总计大小
[root@localhost ~]# du -sh /root
196M /root
3.8、打包压缩
- 相关的文件格式
.gz 压缩格式
.tar 打包格式
.tgz 打包压缩 等于.tar.gz
- gzip:功能是用于压缩和解压文件。gzip是一款使用广泛的压缩工具,文件经过压缩后一般会以.gz后缀结尾,与tar命令合用后即为.tar.gz后缀
压缩单个文件
gzip 1.log
- gunzip 用于解压提取文件内容。gunzip通常被用来解压那些被基于gzip格式压缩过的文件,也就是那些.gz结尾的压缩包
gunzip 1.log.gz
- tar 打包压缩
tar -zcvf boot.tgz /boot
解析:
-z 调用 gzip 指令
-c 建立新的打包文件
-f 指定文件名
-v 显示过程信息
- tar 解包解压
tar -zxvf boot.tgz
解析:
-x 解包
- 解包解压到指定目录
tar -zxvf boot.tgz -C /tmp
解析:
-C 指定目录解包
- 列出打包文件中的内容
tar -tvf boot.tgz
解析:
-t 列出打包文件中的内容
3.9、管道与重定向
- linux之管道符 ’ | ’
管道符主要用于多重命令处理,前面命令的打印结果作为后面命令的输入。简单点说就是,就像工厂的流水线一样,进行完一道工序后,继续传送给下一道工序处理
例子:查找文件内容找出root关键字
cat anaconda-ks.cfg |grep root
- 重定向
- 输入重定向:把文件导入到命令中
标准输出重定向
错误输出重定向- 输出重定向:把原来输出到屏幕的数据输出到指定文件中
符号 | 作用 |
---|---|
命令 < 文件 | 将文件作为命令的标准输入 |
命令 << 文件 | 从标准输入中读取,直到遇到分界符为止 |
命令 > 文件 | 将标准输出重定向到一个文件中(清空原有文件的数据) |
命令 >> 文件 | 将标准输出重定向到一个文件中(追加到原有文件的数据后面) |
命令 2> 文件 | 将错误输出重定向到一个文件中(清空原有文件的数据) |
命令 2>> 文件 | 将错误输出重定向到一个文件中(追加到原有文件的数据后面) |
命令 &>> 文件 | 将错误与标准输出重定向到一个文件中(追加到原有文件的数据后面) |
查询出bash命令,把输出内容重定向到readme.txt
man bash > readme.txt
把标准输出的‘你好’ 重定向到readme.txt文件里,如果已有文件
echo "你好" > readme.txt
把标准输出的‘你好’ 重定向追加到readme.txt文件里
echo "你好" >> readme.txt
- 错误重定向 文件被删除,ls 命令出错,错误信息重定向到1.log
rm -rf 123.txt
ls -l 123.txt > 1.log # 此时会报错需要 > 改为 2>
将错误输出重定向到一个文件中
ls -l 123.txt 2> 1.log
将错误与标准输出重定向到一个文件中
ls -l 123.txt &> 1.log
- 输入重定向使用
wc readme.txt
wc < readme.txt
- 重定向的混合使用,遇到EOF退出输入重定向
cat > 1.log <<EOF
123
456
789
EOF
3.10 、vi 命令操作
一般模式常用命令:
- 移动光标
操作(按键) | 结果表示 |
---|---|
j | 向下移动 |
k | 向上移动 |
h | 向左移动 |
l | 向右移动 |
6j | 从光标当前行向下移动 6 行 |
gg | 移动到文件首行首列 |
G | 移动到文件尾行首列 |
3G | 移动到第 3 行 |
- 复制粘贴
操作(按键) | 结果表示 |
---|---|
yy | 复制光标所在行 |
3yy | 光标向下复制 3 行 |
p | 光标所在行下面进行粘贴 |
3p | 光标所在行下面进行粘贴 3 次 |
- 删除
操作(按键) | 结果表示 |
---|---|
dd | 剪切光标所在行 |
4dd | 从光标所在行向下剪切 4 行 |
x | 剪切光标所在字符 |
- 替换
操作(按键) | 结果表示 |
---|---|
r | 替换光标所在当前字符 |
R | 连续替换光标所在当前字符,直到输入ESC |
- 选择
操作(按键) | 结果表示 |
---|---|
v | 进入选择状态,e选择单词,y复制 |
- 撤销
操作(按键) | 结果表示 |
---|---|
u | 撤销最后一个动作(你可以继续按 u 来撤销) |
U | 撤消对当前行的所有更改 |
Ctrl + r | 恢复上一步撤销 |
- 搜索
操作(按键) | 结果表示 |
---|---|
/ | 搜索的字符串 从光标位置向下搜索,n下一个 N上一个 |
? | 搜索的字符串 从光标位置向上搜索,n上一个 N下一个 |
- 进入编辑模式
操作(按键) | 结果表示 |
---|---|
i | 在光标前插入 |
o | 下一行新建一行 |
O | 上一行新建一行 |
a | 在光标后追加 |
- 末行指令模式
操作(按键) | 结果表示 |
---|---|
:set nu | 显示行号 |
:set nonu | 不显示行号 |
:w | 保存 |
:q | 退出 |
:wq | 先保存后退出 ZZ快捷键起到同样的效果 |
:q! | 强制退出 |
:n | 把光标移动到 n 行 |
四、用户与组
4.1、概念
- 用户
普通用户
超级用户
- 用户身份
管理员 UID:0
系统用户 UID:1-999 无法登录系统
普通用户 UID:1000+
- 组
私有组:创建用户时,未指定所属组,自动创建同名的私有组
标准组:包含多个用户的组
当一个用户属于多个组时,其登录后所属的组为 主组, 其他的组为 附属组
- 与帐号相关的目录
- cat /etc/passwd 账户信息
用户名:密码:用户标识号:组标识号:注释性描述:主目录:登录 Shell- cat /etc/shadow 密码信息
登录名:加密密码:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志- cat /etc/group 组信息
组名:口令:组标识号:组内用户列表
4.2、用户操作命令
- id 查看用户信息,id 跟上用户名,可以查看指定用户信息
[root@VM-16-13-centos ~]# id
uid=0(root) gid=0(root) groups=0(root)
- useradd 添加用户
useradd tom
useradd -g 主组 -G 附属组
useradd lisi -g tom
- passwd 修改密码
passwd tom
- 锁定密码
passwd -l tom
- 解除锁定密码
passwd -u tom
- usermod 修改用户的各项数值
usermod tom -l tom1
- 变更主组与附属组
usermod 用户名 -g 主组 -G 附属组
- userdel 删除账户
删除用户、保留用户家目录
userdel tom
删除用户、用户家目录
userdel -r tom
4.3、组的操作命令
- groupadd 创建组
groupadd li
- groupmod 修改组信息
groupmod li -n new_li
- groupdel 删除空组
groupdel new_li
- gpasswd 管理组
添加用户到组
gpasswd -a 用户 组
从组删除用户
gpasswd -d 用户 组
4.4、 切换用户
- su用于切换用户身份。管理员切换至任意用户身份而无需密码验证,而普通用户切换至任意用户身份均需密码验证。另外添加单个减号(-)参数为完全的身份变更,不保留任何之前用户的环境变量信息。
su # 切换到root用户
su li #切换到 li 用户
su - # 切换到 用户的同时切换用户环境
- sudo 在命令之前加 sudo ,使用root用户的身份与权限执行命令
4.5、权限
表达 | 英文 | 解释 | 代表数字 |
---|---|---|---|
r | read | 读取 | 4 |
w | write | 写 | 2 |
x | execute | 执行 | 1 |
权限 | 对文件的影响 | 对目录的影响 |
---|---|---|
r(读取) | 可读取文件内容 | 可列出目录内容 |
w(写入) | 可修改文件内容 | 可创建删除文件 |
x(执行) | 可作为命令执行 | 可访问目录内容 |
词汇 | 解释 |
---|---|
user | 所有者 |
group | 组 |
others | 其他 |
- 权限:R(读) W(写) X(执行)
- 所属对象:U(所有者) G(所属组) O(其它用户)
- chmod 修改权限
给 1.txt文件的所有者授予去掉 r(读取)的权限
chmod u-r 1.txt
给 1.txt文件的所有者去掉 r(读取)w(写)x(执行)的权限
chmod u-rwx 1.txt
给 1.txt文件的所有者增加 r(读取)x(执行)的权限
chmod u+rx 1.txt
给 1.txt文件的所有者和所属组,其它用户增加 r(读取)w(写)x(执行)的权限
chmod ugo=rwx 1.txt
通过数字来授权1.txt文件所有者r(读取)w(写)x(执行)的权限,所属组r(读取)x(执行),其它用户r(读取)权限
chmod 754 1.txt
- 如果修改的是目录,而且希望该目录下所有子文件、目录一并修改,添加 -R 参数
给A目录授予的所有者和所属组,其它用户r(读取)w(写)x(执行)的权限
chmod 777 A/
给A目录及其子目录或文件授予的所有者和所属组,其它用户r(读取)w(写)x(执行)的权限
chmod -R 777 A/
- chown 修改用户与组
touch a.txt #创建
useradd pan
chown pan a.txt 修改所有者
chown :pan a.txt 修改所有组
chown root:root a.txt 同时修改用户与组
# 如果修改目录 加 -R 递归修改
- chgrp 修改组
把 a.txt的文件的所属组授予给pan组
chgrp pan a.txt
- su切换用户
su #切换到root用户
su li # 却换到 li 用户
su - # 切换到 用户的同时切换用户环境
- sudo
在命令之前加 sudo ,使用root用户的身份与权限执行命令
五、系统管理
5.1、进程
- ps 查看系统中的进程状态
ps -aux #极为详细的显示进程信息
查看所有进程
ps -A
查找出ssh的进程
ps -A|grep ssh
- top 任务管理器
操作:
q 退出
? 帮助
- 演示杀掉进程
第一步:另外一个用户登录 运行 top
第二步:
ps -A |grep top
第三步: 杀掉进程
kill 进程pid #杀进程
- kill,通过pid结束进程
kill -l 查杀进程的信号代码
强制杀进程
kill -9 进程pid
- pkill通过进程名结束进程
pkill top # 杀 top 进程
- w命令用于显示已经登陆系统的用户列表,并显示用户正在执行的指令
- 演示踢出用户
pkill -9 -t TTY
pkill -9 -t pts/0
5.2、软件服务
- 源码包编译安装
- RPM 安装软件
rpm -qa #查询所有已经安装的软件包
rpm -q 软件包 名 #查询指定软件包
rpm -ivh 软件包.rpm #安装
rpm -Uvh 软件包.rpm #升级
rpm -e 软件包.rpm #卸载
- yum
yum list all #列出仓库中所有软件包
yum info 软件包名 #查看软件包信息
yum install 软件包名 #安装软件包
yum -y install 软件包名 #安装软件包,不询问
yum update 软件包名 #升级
yum remove 软件包名 #卸载
yum clean all #清理缓存目录下的所有软件包
Systemctl命令 | 作用 |
---|---|
systemctl start serviceName | 启动服务 |
systemctl restart serviceName | 重新启动服务 |
systemctl stop serviceName | 停止服务 |
systemctl reload serviceName | 重新加载服务配置文件 |
systemctl status serviceName | 查看服务状态 |
systemctl enable serviceName | 开机自动启动服务 |
systemctl disable serviceName | 开机不自动启动服务 |
systemctl is-enabled serviceName | 查看是否开机自动启动服务 |
- 示例 安装 httpd
yum list all | grep httpd
yum info httpd
yum install httpd
ps -A | grep httpd
systemctl status httpd
systemctl start httpd
5.3、下载与上传
- curl 下载
下载单个文件在终端输出
curl https://www.baidu.com
指定文件名下载
curl -o baidu.html https://www.baidu.com
使用服务器提供的命名
curl -O https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png
- 上传使用 XFtp工具
5.4、网络管理
- ifdown
ifdown ens34 #禁用网络接口
- ifup
ifup ens34 #启动网络接口
网络图形设置
nmtui 网络配置
- 网卡配置文件
/etc/sysconfig/network-scripts/
- DNS配置文件
/etc/resolv.conf
重启网络服务
systemctl restart network
- ping 测试网络的通断
ping 163.com
- ss 显示处于活动状态的套接字信息,查端口
1.所谓套接字(Socket),就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制
2.套接字Socket=(IP地址:端口号),套接字的表示方法是点分十进制的lP地址后面写上端口号,中间用冒号或逗号隔开。每一个传输层连接唯一地被通信两端的两个端点(即两个套接字)所确定。例如:如果IP地址是210.37.145.1,而端口号是23,那么得到套接字就是(210.37.145.1:23)
ss -pl #显示每个进程具体打开的 socket
ss -pl sport = :80 #列出 80 端口的进程
端口号 | 名称 | 注释 |
---|---|---|
21 | ftp | 文件传输协议端口 |
22 | ssh | 安全shell服务 |
80 | http | web服务器端口 |
443 | https | 安全超文本传输协议 |
3306 | MySQL | |
1521 | Oracle | |
1433 | Microsoft SQL Server |
5.6、系统信息
- df 查看磁盘空间信息
[root@localhost ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/cl-root 17G 4.0G 13G 24% /
devtmpfs 902M 0 902M 0% /dev
tmpfs 912M 435M 478M 48% /dev/shm
tmpfs 912M 8.6M 904M 1% /run
tmpfs 912M 0 912M 0% /sys/fs/cgroup
/dev/sda1 1014M 139M 876M 14% /boot
tmpfs 183M 0 183M 0% /run/user/1000
tmpfs 183M 0 183M 0% /run/user/0
- du 查看文件或目录的大小
[root@localhost ~]# du -h /root
0 /root/U/U1/U2
0 /root/U/U1
98M /root/U
0 /root/W
0 /root/jason/t1
0 /root/jason
0 /root/.pki/nssdb
0 /root/.pki
220K /root/.config/tencent-qq/app_data/log
8.0K /root/.config/tencent-qq/app_data/wtlogin
316K /root/.config/tencent-qq/app_data
316K /root/.config/tencent-qq
316K /root/.config
196M /root
指定目录的第一级层次
du -h --max-depth=1 /root
- uname查看系统内核和系统版本信息
uname -a
- free查看系统内存信息
free -h # 以易读的形式查看系统内存信息
END 课件结束!!!