Linux学习(01 基础篇)

Linux发行版

  • Red Hat
    • Red Hat Enterprise Linux(RHEL)
    • fedora
    • CentOS
  • debian
    • ubuntu
      • linux mint
  • SUSE
    • openSUSE
  • archlinux
    • manjaro
  • gentoo linux
版本名称 网 址 特 点 软件包管理器
Debian Linux www.debian.org 开放的开发模式,且易于进行软件包升级 apt
Fedora Core www.redhat.com 拥有数量庞人的用户,优秀的社区技术支持. 并且有许多创新 up2date(rpm),yum (rpm)
CentOS www.centos.org CentOS 是一种对 RHEL(Red Hat Enterprise Linux)源代码再编译的产物,由于 Linux 是开发源代码的操作系统,并不排斥样基于源代码的再分发,CentOS 就是将商业的 Linux 操作系统 RHEL 进行源代码再编译后分发,并在 RHEL 的基础上修正了不少已知的漏洞 rpm
SUSE Linux www.suse.com 专业的操作系统,易用的 YaST 软件包管理系统 YaST(rpm),第三方 apt (rpm)软件库(repository)
Mandriva www.mandriva.com 操作界面友好,使用图形配置工具,有庞大的社区进行技术支持,支持 NTFS 分区的大小变更 rpm
KNOPPIX www.knoppix.com 可以直接在 CD 上运行,具有优秀的硬件检测和适配能力,可作为系统的急救盘使用 apt
Gentoo Linux www.gentoo.org 高度的可定制性,使用手册完整 portage
Ubuntu www.ubuntu.com 优秀已用的桌面环境,基于 Debian 构建 apt

CentOS安装

查看Linux版本

查看 Linux 发行版版本信息

cat /etc/os-release

如果系统支持 lsb_release,可以使用该命令来查看详细的发行版信息

lsb_release -a

查看 Linux 内核版本

uname -r

在 CentOS 系统上,可以使用该命令查看具体的 CentOS 版本。

cat /etc/centos-release

对于 RHEL 或基于 RHEL 的发行版,可以使用这个命令查看版本信息。

cat /etc/redhat-release

Linux文件与目录结构

Linux文件

Linux系统中一切皆文件

Linux目录结构

├─/ 根目录
│  ├─bin -> /usr/bin Binary的缩写,这个目录存放着最经常使用的命令
│  ├─boot 这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件
│  ├─dev Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的
│  ├─etc Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录。
│  ├─home 用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的
│  ├─lib -> /usr/lib Library(库) 的缩写这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库
│  ├─lib64 -> /usr/lib64
│  ├─media linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下。
│  ├─mnt 系统提供该目录是为了让用户临时挂载别的文件系统的
│  ├─opt optional(可选) 的缩写,这是给主机额外安装软件所摆放的目录。
│  ├─proc Processes(进程) 的缩写,/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息
│  ├─root 该目录为系统管理员,也称作超级权限者的用户主目录。
│  ├─run 是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run
│  ├─sbin -> /usr/sbin s是system的意思,这里存放的是系统管理员使用的系统管理程序
│  ├─srv 该目录存放一些服务启动之后需要提取的数据
│  ├─sys System的缩写,存放系统硬件信息的相关文件
│  ├─tmp temporary(临时) 的缩写这个目录是用来存放一些临时文件的
│  ├─usr usr 是 unix shared resources(共享资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录
│  └─var variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。

VI/VIM编辑器

vi/vim是什么

VI是Unix操作系统和类Unix操作系统中最通用的文本编辑器 VIM编辑器是从VI发展出来的一个性能更强大的文本编辑器。可以主动的以字体颜色辨别语法的正确性,方便程序设计。VIM与VI编辑器完全兼容。

一般模式

以vi打开一个档案就直接进入一般模式类(这是默认的模式)。在这个模式中,你可以使用【上下左右】按键来移动光标,你可以使用【删除字符】或【删除整行】来处理档案内容,也可以使用【复制、粘贴】来处理你的文件数据

常用语法

语法 功能描述
yy 复制光标当前一行
数字yy/y数字y 复制一段(从光标当前行到后n行)
y$(shift+4) 从当前光标复制到行尾
y^(shift+6) 从当前光标复制到行头
p 箭头移动到目的行粘贴
数字p 粘贴多行
u 撤销上一步
dd 删除光标当前行
数字dd/d数字d 删除光标(含)后多少行
x 剪切一个字符(当前光标),相当于del
X 剪切一个字符(当前光标的前一个),相当于Backspace
yw 复制一个词
dw 删除一个词
shift+4($) 移动到行尾
shift+6(^) 移动到行头
w 移动到下一个词(词头位置)
e 移动到当前词尾
b 移动到上一个词(词头位置)
gg 移动到页头
G 移动到页尾
数字+G 移动到目标行
r 替换字符

列编辑/块编辑

选择一段文字

语法 功能描述
v 字符模式(Character mode):和按住鼠标移动光标效果一样,底部会出现-- VISUAL --的字样
V 行模式(Line mode):随着光标上下移动会选择所经过的所有整行,底部会出现-- VISUAL LINE --的字样
ctrl + v 块模式(Block mode):随着光标上下移动会选择每行光标经过的所有连续单个字符,底部会出现-- VISUAL BLOCK --的字样

插入模式

在一般模式中可以进行删除、复制、粘贴等动作,但是却无法编辑文件内容的。要等你按下【i,I,o,O,a,A】等任何一个字母之后才会进入编辑模式。

通常在Linux中,按下这些按键时,在画面的左下方会出现【INSERT或REPLACE】的字样,此时才可以进行编辑。而如果要回到一般模式时,则必须要按下【ESC】这个按键即可退出编辑模式。

进入编辑模式

常用语法

按键 功能描述
i 当前光标前
a 当前光标后
o 当前光标行的下一行
I 光标所在行最前
A 光标所在行最后
O 当前光标行的上一行

指令模式

在一般模式当中,输入【:/?】3个中的任何一个按钮,就可以将光标移动到最底下那一行。

在这个模式当中,可以提供【搜寻资料】的动作,而读取、存盘、大量取代字符、离开vi、显示行好等动作是在此模式中达成的

基本语法

命令 功能
:w 保存
:q 退出
:wq 保存并推出
:q! 不保存强制退出
/要查询的词 n查找下一个,N往上查找
:noh 取消高亮显示
:set nu 显示行号
:set nonu 关闭行号
:s/old/new 替换当前行匹配到的第一个old为new
:s/old/new/g 替换当前行匹配到的所有old为new
:%s/old/new 替换文档中每一行匹配到的第一个old为new
:%s/old/new/g 替换文档中匹配到的所有old为new

网络配置和系统管理操作

查看网络IP和网关

ifconfig

VMware提供了三种网络连接模式

  • 桥接模式
    • 虚拟机直接连接外部物理网络的模式,主机起到了网桥的作用。这种模式下,虚拟机可以直接访问外部网络,并且对外部网络是可见的
  • NAT模式
    • 虚拟机和主机构建一个专用网络,并通过虚拟网络地址转换(NAT)设备对IP进行转换。虚拟机通过共享主机IP可以访问外部网络,但外部网络无法访问虚拟机
  • 仅主机模式
    • 虚拟机只与主机共享一个专用网络,与外部网络无法通信

系统管理

Linux中的进程和服务

计算机中,一个正在执行的程序或命令,被叫做“进程”(process)
启动之后一直存在、常驻内存的进程,一般被称作“服务”(service)

service服务管理(CentOS6版本-了解)

基本语法

service 服务名 start|stop|restart|status

经验技巧

查看服务的方法:/etc/init.d/服务名,发现只有两个服务保留在service

案例实操

  • 查看网络服务的状态
    • service network status
      
  • 停止网络服务
    • service network stop
      
  • 启动网络服务
    • service network start
      
  • 重启网络服务
    • service network restart
      

chkconfig设置后台服务的自启配置(CentOS 6版本)

基本语法

  • chkconfig(功能描述:查看所有服务器的自启配置)
  • chkconfig 服务名 off(功能描述:关掉制定服务的自动启动)
  • chkconfig 服务名 on(功能描述:开启指定服务的自动启动)
  • chkconfig 服务名 –list(功能描述:查看服务开机启动状态)

案例实操

  • 开启/关闭 network(网络)服务的自动启动
    • chkconfig network on
      
    • chkconfig network off
      
  • 开启/关闭 network服务指定级别的自动启动
    • chkconfig --level 指定级别 network on
      
    • chkconfig --level 指定级别 network off
      

systemctl(CentOS 7版本)

基本语法

systemctl start|stop|restart|status 服务名

经验技巧

查看服务的方法:/usr/lib/systemd/system

案例实操

  • 查看防火墙服务的状态
    • systemctl status firewalld
      
  • 停止防火墙服务
    • systemctl stop firewalld
      
  • 启动防火墙服务
    • systemctl start firewalld
      
  • 重启防火墙服务
    • systemctl restart firewalld
      

systemctl 设置后台服务的自启配置

基本语法

  • systemctl list-unit-files(功能描述:查看服务开机启动状态)
  • systemctl disable service_name(功能描述:关掉指定服务的自动启动)
  • systemctl enable service_name(功能描述:开启指定服务的自动启动)

案例实操

开启/关闭iptables(防火墙)服务的自动启动

  •   systemctl enable firewalld.service
    
  • systemctl disable firewalld.service
    

系统运行级别

Linux运行级别(CentOS 6)

开机 ➡️ BIOS ➡️ /boot ➡️ init进程 ➡️ 运行级别 ➡️ 运行级别对应的服务

查看默认级别:vi /etc/inittab

Linux系统有7种运行级别(runlevel):常用的是级别3和5

  • 运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
  • 运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登录
  • 运行级别2:多用户状态(没有NFS - Network File System),不支持网络
  • 运行级别3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式
  • 运行级别4:系统未使用,保留
  • 运行级别5:X11控制台,登陆后进入图形GUI模式
  • 运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动

CentOS7的运行级别简化为:

  • multi-user.target等价于原运行级别3(多用户有网,无图形界面)
  • graphical.target等价于原运行级别5(多用户有网,有图形界面)

查看当前运行级别

systemctl get-default

修改当前运行级别

systemctl set-default TARGET.target(这里TARGET取multi-user或者graphical)

切换运行级别

init level_number

关闭防火墙

临时关闭防火墙

  • 查看防火墙状态
    • systemctl status firewalld
      
  • 临时关闭防火墙
    • systemctl stop firewalld
      

开机启动时关闭防火墙

  • 查看防火墙开机启动状态
    • systemctl status firewalld.service
      
  • 设置开机时关闭防火墙
    • systemctl disable firewalld.service
      

开放和关闭端口

查看端口占用

netstat -tunlp | grep 80
lsof -i:80

开放指定端口

firewall-cmd --zone=public --add-port=80/tcp --permanent
  • –zone:作用域
  • –add-port=80/tcp:添加端口,格式为:端口/通讯协议
  • –permanent:永久生效,没有此参数重启后失效

重启防火墙

firewall-cmd --reload

查询端口是否开启

firewall-cmd --query-port=80/tcp

移除端口

firewall-cmd --permanent --remove-port=80/tcp

关机重启命令

在linux领域内大多用在服务去上,很少遇到关机的操作。毕竟服务去上跑一个服务是永无止境的,除非特殊情况下,不得已才会关机。

基本语法

  • sync(功能描述:将数据由内存同步到硬盘汇总)
  • halt(功能描述:停机,关闭系统,但不断电)
  • poweroff(功能描述:关机,断电)
  • reboot(功能描述:重启,等同于shutdown -r now)
  • shutdown [选项] 时间
    • -c:取消关机
    • -H:相当于 –halt,停机
    • -r:-r=reboot 重启
    • now:立刻关机
    • 时间:等于多久后关机(时间单位是分钟)

经验技巧

Linux 系统中为了提高磁盘的读写效率,对磁盘采取了 “预读迟写”操作方式。当用户保存文件时,Linux 核心并不一定立即将保存数据写入物理磁盘中,而是将数据保存在缓冲区中,等缓冲区满时再写入磁盘,这种方式可以极大的提高磁盘写入数据的效率。但是,也带来了安全隐患,如果数据还未写入磁盘时,系统掉电或者其他严重问题出现,则将导致数据丢失。使用 sync 指令可以立即将缓冲区的数据写入磁盘。

案例实操

  • 将数据由内存同步到硬盘中
    • sync
      
  • 重启
    • reboot
      
  • 停机(不断电)
    • halt
      
  • 计算机将在1分钟后关机,并且会显示在登陆用户的当前屏幕中
    • shutdown -h 1 'This server will shutdown after 1 mins'
      
  • 立马关机(等同于poweroff)
    • shutdown -h now
      
  • 系统立马重启(等同于reboot)
    • shutdown -r now
      

常用基本命令

Shell可以看作是一个命令解释器,为我们提供了交互式的文本控制台界面。我们可以通过终端控制器来输入命令,由shell进行解释并最终交给内核执行。

帮助命令

man(manual)获得帮助信息

基本语法

man [命令或配置文件](功能描述:获得帮助信息)

显示说明
  • NAME:命令的名称和单行描述
  • SYNOPSIS:怎样使用命令
  • DESCRIPTION:命令功能的深入讨论
  • EXAMPLES:怎样使用命令的例子
  • SEE ALSO:相关主题(通常是手册页)
案例实操

查看ls命令的帮助信息

man ls
查看内嵌命令帮助信息
man -f cd

help获得shell内置命令的帮助信息

一部分基础功能的系统命令是直接内嵌在 shell 中的,系统加载启动之后会随着 shell 一起加载,常驻系统内存中。这部分命令被称为“内置(built-in)命令”;相应的其它命令被称为“外部命令”。

基本语法

help命令(功能描述:获得shell内置命令的帮助信息)

案例实操

查看cd命令的帮助信息

help cd

type命令查看类型

type cd

常用快捷键

常用快捷键 功能
ctrl + c 停止进程
ctrl + l 清屏,等同于clear:彻底清屏是:reset
tab 提示(更重要的是可以防止敲错)
上下键 查找执行过的命令

文件目录类

pwd显示当前工作目录的绝对路径

pwd:print working directory 打印工作目录

基本语法

pwd(功能描述:显示当前工作目录的绝对路径)

ls列出目录的内容

ls:list列出目录内容

基本语法
ls [选项] [目录或是文件]
选项说明
选项 功能
-a 全部的文件,连同隐藏档(开头为.的文件)一起列出来(常用)
-l 长数据串列出,包含文件的属性与权限等等数据;(常用)等价于“ll”
-i 查看文件索引
显示说明

每行列出的信息依次是:
文件类型与权限 链接数 文件属主 文件属组 文件大小用byte来表示 建立或最近修改的时间 名字

查看当前目录的所有内容信息
ls -al
文件类型
  • -:文件
  • d:目录
  • l:链接
  • b:块设备
  • c:字符设备
  • p:管道文件
  • s:套接字文件

cd切换目录

cd:Change Directory 切换路径

基本语法
cd [参数]
参数说明
参数 功能
cd 绝对路径 切换路径
cd 相对路径 切换路径
cd ~或cd home目录
cd - 回到上一次所在目录
cd .. 回到当前目录的上一级目录
cd -P 跳转到实际物理路径,而非快捷方式路径

alias查看别名

alias

mkdir创建一个新的目录

mkdir:Make Directory 建立目录

基本语法
mkdir [选项] 要创建的目录
选项说明
选项 功能
-p 创建多层目录

rmdir删除一个空的目录

rmdir:Remove Directory 移除目录

基本语法
rmdir 要删除的空目录

touch创建空文件

基本语法
touch 文件名称

cp复制文件或目录

基本语法
cp [选项] source dest (功能描述:复制source文件到dest)
快速备份
cp 文件名称{,.bak} (默认当前文件同级路径)
选项说明
选项 功能
-r 递归复制整个文件夹
参数说明
参数 功能
source 源文件
dest 目标文件
经验技巧

强制覆盖不提示的方法:\cp

rm删除文件或目录

基本语法
rm [选项] deleteFile (功能描述:递归删除目录中所有内容)
选项说明
选项 功能
-r 递归删除目录中所有内容
-f 强制执行删除操作,而不提示用于进行确认
-v 显示指令的详细执行过程

mv移动文件与目录或重命名

基本语法
  • 重命名
    • mv oldNameFile newNameFile
      
  • 移动文件
    • mv /temp/moveFile /targetFolder
      

cat查看文件内容

查看文件内容,从第一行开始显示

基本语法
cat [选项] 要查看的文件
选项说明
选项 功能描述
-n 显示所有行的行号,包括空行

more文件内容分屏查看器

more 指令是一个基于 VI 编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容。

基本语法
more 要查看的文件
操作说明
操作 功能说明
空白键 代表向下翻一页
Enter 代表向下翻一行
q 代表立刻离开more,不再显示该文件内容
ctrl + F 向下滚动一屏
ctrl + B 返回上一屏
= 输出当前行的行号
:f 输出文件名和当前行的行号

less分屏显示文件内容

less 指令用来分屏查看文件内容,它的功能与 more 指令类似,但是比 more 指令更加强大,支持各种显示终端。less 指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率。

基本语法
less 要查看的文件
操作说明
操作 功能说明
空白键 向下翻动一页
[pagedown] 向下翻动一页
[pageup] 向上翻动一页
/字符串 向下搜寻[字符串]的功能;n向下查找;N:向上查找
?字符串 向上搜寻[字符串]的功能;n:向上查找;N:向下查找
q 离开less程序

echo

echo输出内容到控制台

基本语法
echo [选项] [输出内容]

选项

  • -e:支持反斜线控制的字符转换
控制字符 作用
\\ 输出\本身
\n 换行符
\t 制表符,Tab键

head显示文件头部内容

head用于显示文件的开头部分内容,默认情况下head指令显示文件的前10行内容

基本语法
head 文件(功能描述:查看文件头10行内容)
选项说明
选项 功能
-n <行数> 指定显示头部内容的行数

tail输出文件尾部内容

tail 用于输出文件中尾部的内容,默认情况下 tail 指令显示文件的后 10 行内容。

基本语法
tail 文件(功能描述:查看文件尾部10行内容)
tail -n 5 文件(功能描述:查看文件尾部5行内容,5可以是任意行数)
tail -f 文件(功能描述:实时追踪该文档的所有更新)
选项说明
选项 功能
-n <行数> 输出文件尾部n行内容
-f 显示文件最新追加的内容,监视文件变化
快捷键
  • ctrl + s:暂停监控
  • ctrl + q:继续监控

> 输出重定向和 » 追加

基本语法
ls -l > 文件(功能描述:列表的内容写入文件中【覆盖写】)
ls -al >> 文件(功能描述:列表的内容追加到文件的末尾)
cat 文件1 > 文件2(功能描述:将文件1的内容覆盖到文件2)
echi "内容" >> 文件(将内容追加到文件末尾)

ln软链接

软链接也称为符号链接,类似于 windows 里的快捷方式,有自己的数据块,主要存放了链接其他文件的路径

基本语法
ln -s [原文件或目录] [软链接名](功能描述:给原文件创建一个软链接)
经验技巧

删除软链接:rm -rf 软链接名,而不是rm -rf 软链接名/
如果使用rm -rf 软链接名/ 删除,会把软链接对应的真实目录下内容删掉
查询:通过ll就可以查看,列表属性第1位是1,尾部会有位置指向

案例实操
  • 创建软链接
    • ln -s ~/a.txt /tmp/link
      
  • 删除软链接
    • rm -rf /tmp/link
      
  • 进入软链接实际物理路径
    • cd -P /tmp/link
      

history查看已经执行过历史命令

基本语法
history(功能描述:查看已经执行过历史命令)
  • -c:清空历史命令

时间日期类

基本语法

date [OPTION] [+FORMAT]

选项说明

选项 功能
-d <时间字符串> 显示指定的“时间字符串”表示的时间,而非当前时间
-s<日期时间> 设置系统日期时间

参数说明

参数 功能
<+日期时间格式> 指定显示时使用的日期时间格式

date显示当前时间

基本语法
date(功能描述:显示当前时间)
date +%Y(功能描述:显示当前年份)
date +%m(功能描述:显示当前月份)
date +%d(功能描述:显示当前是哪一天)
date "+%Y-%m-%d %H:%M:%S"(功能描述:显示年月日时分秒)

date显示非当前时间

基本语法
date -d '1 days ago'(功能描述:显示前一天时间)
date -d '-1 days ago'(功能描述:显示明天时间)

date设置系统时间

基本语法
date -s 字符串时间
案例实操

设置系统当前时间

date -s "2099-01-01 00:00:00"

cal查看日历

基本语法
cal [选项](功能描述:不加选项,显示本月日历)
选项说明
选项 功能
具体某一年 显示这一年的日历
-1, –one 只显示当前月份(默认)
-3, –three 显示上个月、当月和下个月
-s, –sunday 周日作为一周第一天
-m 周一用为一周第一天
-j, –julian 输出儒略日
-y, –year 输出整年
-V, –version 显示版本信息并退出

用户管理命令

useradd添加新用户

基本语法
useradd 用户名(功能描述:添加新用户)
useradd -g 组名 用户名(功能描述:添加新用户到某个组)
useradd -d /home/admin administrator(添加新用户并且制定目录名称)

passwd设置用户密码

基本语法
passwd 用户名(功能描述:设置用户密码)

id查看用户是否存在

基本语法
id 用户名

cat /etc/passwd查看创建了哪些用户

cat /etc/passwd

su切换用户

su:swith user 切换用户

基本语法
su 用户名称(功能描述:切换用户,只能获得用户的执行权限,不能获得环境变量)
su - 用户名称(功能描述:切换到用户并获得该用户的环境变量及执行权限)

userdel删除用户

基本语法
userdel 用户名(功能描述:删除用户但保存用户主目录)
userdel -r 用户名(功能描述:用户和用户主目录都删除)
选项说明
选项 功能
-r 删除用户的同时,删除与用户相关的所有文件

who查看登陆用户信息

基本语法
whoami(功能描述:显示自身用户名称)
who am i(功能描述:显示登陆用户的用户名以及登陆时间)

sudu设置普通用户具有root权限

添加admin用户,并设置密码
useradd admin
passwd admin
修改配置文件
vi /etc/sudoers

修改/etc/sudoers文件,找到下面一行,在root下面添加一行

## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
admin    ALL=(ALL)       ALL

或者配置成采用sudo命令时,不需要输入密码

## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
admin    ALL=(ALL)       NOPASSWD:ALL

修改完毕,使用命令sudo,即可获取root权限进行操作

usermod修改用户

基本语法
usermod -g 用户组 用户名
选项说明
选项 功能
-g 修改用户的初始登陆组,给定的组必须存在。默认组id是1

用户组管理命令

每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux 系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。

groupadd新增组

基本语法
groupadd 组名

groupdel删除组

基本语法
groupdel 组名

groupmod修改组

基本语法
groupmod -n 新组名 老组名
选项说明
选项 功能描述
-n <新组名> 制定工作组的新组名

cat /etc/group 查看创建了哪些组

cat /etc/group

文件权限类

文件属性

Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。在Linux中我们可以使用ll或者ls -l命令来显示一个文件的属性以及文件所属的用户和组。

文件属性
文件类型[0] 属主权限[123] 属组权限[456] 其他用户权限[789]
d目录文件 rwx读写执行 r-x读写执行 r-x读写执行

如果没有权限,就会出现减号[-],从左至右用0-9这些数字来表示

  • 0首位表示类型:在Linux中第一个字符代表这个文件是目录、文件或链接文件,-代表文件,d代表目录,l链接文档(link file)
  • 第1-3位确定属主(该文件的所有者)拥有该文件的权限。——User
  • 第4-6位确定属组(所有者的同组用户)拥有该文件的权限。——Group
  • 第7-9位确定其他用户拥有该文件的权限——Other
rwx作用文件和目录的不同解释
  • 作用到文件
    • 【r】代表可读(read):可以读取,查看
    • 【w】代表可写(write):可以修改 ,但是不代表可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件
    • 【x】代表可执行(execute):可以被系统执行
  • 作用到目录
    • 【r】代表可读(read):可以读取,ls查看目录内容
    • 【w】代表可写(write):可以修改,目录内创建+删除+重命名目录
    • 【x】代表可执行(execute):可以进入该目录
  • ls -l属性
    • -rw-------. 1 root root       922 11月 20 16:23 anaconda-ks.cfg
      -rw-r--r--. 1 root root  74494089 12月 26 15:39 jdk-8u333-linux-aarch64.tar.gz
      -rw-r--r--. 1 root root 104065199 12月 26 15:46 nacos-server-2.2.0.tar.gz
      drwxr-xr-x. 7 root root        69 2月  12 17:05 static
      
    • 从左到右:文件类型与权限、链接数、文件属主、文件属组、文件大小、建立或最近修改时间、文件名称
  • 链接数区别
    • 如果是文件:链接数指的是硬链接个数
    • 如果是文件家:链接数指到是子文件夹个数

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

案例实操

修改文件使其所属主用户具有执行权限

chmod u+x file.txt

修改文件使其所属组用户具有执行权限

chmod g+x file.txt

修改文件所属主用户执行权限,并使其他用户具有执行权限

chmod u-x,o+x file.txt

数字方式,设置文件所有者、所属组、其他用户都具有可读可写可执行权限

chmod 777 file.txt

修改整个文件夹里面的所有文件的所有者、所属组、其他用户都具有可读可写可执行权限

chmod -R 777 folder

chown 改变所有者

基本语法
chown [选项] [最终用户] [文件或目录](功能描述:改变文件或者目录的所有者)
选项说明
选项 功能
-R 递归操作
案例实操

修改文件所有者

chown admin file.txt

递归改变文件所有者和所有组

chown -R admin:admin folder

chgrp 改变所属组

基本语法
chgrp [最终用户组] [文件或目录](功能描述:改变文件或者目录的所属组)

搜索查找类

find查找文件或目录

find 指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件显示在终端

基本语法
find [搜索范围] [选项]
选项说明
选项 功能
-name <查询方式> 按照制定的文件名查找模式查询文件
-user <用户名> 查找属于指定用户名所有文件
-size <文件大小> 按照制定的文件大小查找文件,单位为:
b——块(512字节)
c——字节
w——字(2字节)
k——千字节
M——兆字节
G——吉字节
案例实操

按文件名:根据名称查找/目录下的.txt文件

find / -name *.txt

按拥有者:查找/opt目录下,用户名称为-user的文件

find /opt -user root

按文件大小:在~目录下查找大于200m的文件(+n大于 -n小于 n等于)

find ~ -size +204800

locate 快速定位文件路径

locate 指令利用事先建立的系统中所有文件名称及路径的 locate 数据库实现快速定位给定的文件。Locate 指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新 locate 时刻

基本语法
locate 搜索文件
经验技巧

由于 locate 指令基于数据库进行查询,所以第一次运行前,必须使用 updatedb 指令创建 locate 数据库

grep过滤查询及 “|”管道符

管道符“ ”,表示将前一个命令的处理结果输出传递给后面的命令处理
基本语法
grep 选项 查找内容 源文件
选项说明
选项 功能
-n 显示匹配行及行号
-i 忽略大小写
-m 最大数
案例实操

查找某文件在当前目录下第几行

ls | grep -n test

压缩和解压类

gzip/gunzip压缩

基本语法
gzip 文件(功能描述:压缩文件,只能将文件压缩为*.gz文件)
gunzip 文件.gz(功能描述:解压缩文件命令)
经验技巧
  • 只能压缩文件不能压缩目录
  • 不保留原来的文件
  • 同时多个文件会产生多个压缩包

zip/unzip压缩

基本语法
zip [选项] xxx.zip 将要压缩的内容(功能描述:压缩文件和目录的命令)
unzip [选项] xxx.zip(功能描述:解压缩文件)
选项说明
zip选项 功能
-r 压缩目录
unzip选项 功能
-d <目录> 指定解压后文件的存放目录
案例实操

压缩file.txt和hello.txt,压缩后的名称为mypackage.zip

zip mypackage.zip file.txt hello.txt

解压mypackage.zip

unzip mypackage.zip

解压mypackage.zip到指定目录-d

unzip mypackage.zip -d /opt

tar打包

基本语法
tar [选项] xxx.tar.gz 将要打包进去的内容(功能描述:打包目录,压缩后的文件格式.tar.gz)
选项说明
选项 功能
-c 产生.tar打包文件
-v 显示详细信息
-f 指定压缩后的文件名
-z 打包同时压缩
-x 解包.tar文件
-C 解压到指定目录
案例实操

压缩多个文件

tar -zcvf file.tar.gz file1.txt file2.txt

压缩目录

tar -zcvf folder.tar.gz folder/

解压到当前目录

tar -zxvf file.tar.gz

解压到指定目录

tar -zxvf folder.tar.gz -C /opt

磁盘查看和分区类

du查看文件和目录占用的磁盘空间

du:disk usage磁盘占用情况

基本语法
du 目录/文件(功能描述:显示目录下每个子目录的磁盘使用情况)
选项说明
选项 功能
-h 以人们较易阅读的GBytes,MBytes,KBytes等格式自行显示
-a 不仅查看子目录大小,还要包括文件
-c 显示所有的文件和子目录大小后,显示总和
-s 只显示总和
–max-depth=n 指定统计子目录的深度为第n层

df查看磁盘空间使用情况

df:disk free 空余磁盘

基本语法
df 选项(功能描述:列出文件系统的整体磁盘使用量,检查文件系统的磁盘空间占用情况)
选项说明
选项 功能
-h 以人们较易阅读的GBytes,MBytes,KBytes等格式自行显示

lsblk查看设备挂载情况

基本语法
lsblk(功能描述:查看设备挂载情况)
选项说明
选项 功能
-f 查看详细的设备挂载情况,显示文件系统信息

mount/umount挂载/卸载

对于Linux用户来讲,不论有几个分区,分别分给哪一个目录使用,它总归就是一个根目录、一个独立且唯一的文件结构。

Linux中每个分区都是用来组成整个文件系统的一部分,它在用一种叫做“挂载”的处理方法,它整个文件系统中包含了一整套的文件和目录,并将一个分区和一个目录联系起来,要载入的那个分区将使它的存储空间在这个目录下获得

基本语法
mount [-t vfstype] [-o options] device dir(功能描述:挂载设备)
umount 设备文件名或挂载点(功能描述:卸载设备)
参数说明
参数 功能
-t vfstype 指定文件系统的类型,通常不必指定。mount会自动选择正确的类型。
常用类型有:
光盘或光盘镜像:iso9660
DOS fat16文件系统:msdos
Windows 9x fat32文件系统:vfat
Windows NT ntfs文件系统:ntfs
Mount Windows文件网络共享:smbfs
UNIX(LINUX)文件网络共享:nfs
-o options 主要用来描述设备或档案的挂载方式。
常用的参数有:
loop:用来把一个文件当成硬盘分区挂接上系统
ro:采用只读方式挂接设备
rw:采用读写方式挂接设备
iocharset:指定访问文件系统所用字符集
device 要挂接(mount)的设备
dir 设备在系统上的挂接点(mount point)
案例实操

挂载光盘镜像文件

mkdir /mnt/cdrom/
mount -t iso9660 /dev/cdrom /mnt/cdrom/ 建立挂载点设备/dev/cdrom 挂载到挂载点:/mnt/cdrom中

卸载光盘镜像文件

umount /mnt/cdrom

设置开机自动挂载

vi /etc/fstab
#
# /etc/fstab
# Created by anaconda on Sun Nov 20 08:21:17 2022
#
# Accessible filesystems, by reference, are maintained under '/dev/disk/'.
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
/dev/mapper/cl_fedora-root /                       xfs     defaults        0 0
UUID=03099c9f-975b-4a1e-9205-7aec74c51fa2 /boot                   xfs     defaults        0 0
UUID=3768-2A54          /boot/efi               vfat    umask=0077,shortname=winnt 0 2
/dev/mapper/cl_fedora-home /home                   xfs     defaults        0 0
/dev/mapper/cl_fedora-swap none                    swap    defaults        0 0
#添加如下内容保存退出
/dev/cdrom						/mnt/cdrom										iso9660 defaults 				0 0

fdisk分区

基本语法
fdisk -l(功能描述:查看磁盘分区详情)
fdisk 硬盘设备名(功能描述:对新增硬盘进行分区操作)
选项说明
选项 功能
-l 显示所有硬盘的分区列表
功能说明
  • Linux分区
    • Device:分区序列
    • Boot:引导
    • Start:从X磁柱开始
    • End:到Y磁柱结束
    • Blocks:容量
    • Id:分区类型ID
    • System:分区类型
  • 分区操作按键说明
    • m:显示命令列表
    • p:显示当前磁盘分区
    • n:新增分区
    • w:写入分区信息并退出
    • q:不保存分区信息直接退出
案例实操

查看系统分区情况

fdisk -l

磁盘分区

fdisk /dev/sdb
输入n选择主分区
输入w保存

输入lsblk -f查看磁盘文件系统信息

格式化磁盘

mkfs -t xfs /dev/sdb1

挂载磁盘分区

mount /dev/sdb1 /root

进程管理类

进程是正在执行的一个程序或命令,每一个进程都是一个运行的实体,都有自己的地址空间,并占用一定的系统资源

ps查看当前系统进程状态

ps:process status进程状态

基本语法
ps aux | grep xxx(功能描述:查看系统中所有进程)
ps -ef | grep xxx(功能描述:可以查看子父进程之间的关系)
选项说明
选项 功能
a 列出带有终端的所有用户的进程
x 列出当前用户的所有进程,包括没有终端的进程
u 面向用户友好的显示风格
-e 列出所有进程
-u 列出某个用户关联的所有进程
-f 显示完整格式的进程列表
功能说明
  • ps aux显示信息说明
    • USER:该进程是由哪个用户产生
    • PID:进程的ID号
    • %CPU:该进程占用CPU资源的百分比,占用越高,进程越耗费资源
    • %MEM:该进程占用物理内存的百分比,占用越高,进程越耗费资源;
    • VSZ:该进程占用虚拟内存的大小,单位 KB;
    • RSS:该进程占用实际物理内存的大小,单位 KB;
    • TTY:该进程是在哪个终端中运行的。对于 CentOS 来说,tty1 是图形化终端,
    • tty2-tty6 是本地的字符界面终端。pts/0-255 代表虚拟终端。
    • STAT:进程状态。常见的状态有:R:运行状态、S:睡眠状态、T:暂停状态、
    • Z:僵尸状态、s:包含子进程、l:多线程、+:前台显示
    • START:该进程的启动时间
    • TIME:该进程占用 CPU 的运算时间,注意不是系统时间
    • COMMAND:产生此进程的命令名
  • ps -ef显示信息说明
    • UID:用户 ID
    • PID:进程 ID
    • PPID:父进程 ID
    • C:CPU 用于计算执行优先级的因子。数值越大,表明进程是 CPU 密集型运算,
    • 执行优先级会降低;数值越小,表明进程是 I/O 密集型运算,执行优先级会提高
    • STIME:进程启动的时间
    • TTY:完整的终端名称
    • TIME:CPU 时间
    • CMD:启动进程所用的命令和参数
经验技巧

如果想查看进程的CPU占用率和内存占用率,可以使用aux
如果想查看进程的父进程ID可以使用ef

kill终止进程

基本语法
kill [选项] 进程号(功能描述:通过进程号杀死进程)
killall 进程名称(功能描述:通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用)
选项说明
选项 功能
-9 表示强迫进程立即停止
-l 查看信号

pstree查看进程树

基本语法
pstree [选项]
选项说明
选项 功能
-p 显示进程的PID
-u 显示进程的所属用户

top实时监控系统进程状态

基本命令
top [选项]
选项说明
选项 功能
-d 秒数 指定top命令每隔几秒更新。默认是3秒在top命令的交互模式当中可以执行的命令
-i 使top不显示任何闲置或者僵死进程
-p 通过指定监控进程ID来仅仅监控某个进程的状态
操作说明
操作 功能
P 以CPU使用率排序,默认就是此项
M 以内存的使用率排序
N 以PID排序
q 退出top
u 按用户筛选
k 输入pid杀死进程
查询结果字段解释
top - 03:23:23 up 1 day, 16:46,  1 user,  load average: 0.27, 0.33, 0.35
Tasks: 207 total,   1 running, 122 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.4 us,  0.2 sy,  0.0 ni, 99.4 id,  0.0 wa,  0.0 hi,  0.1 si,  0.0 st
KiB Mem :  3481456 total,   125272 free,  2352296 used,  1003888 buff/cache
KiB Swap:  4132860 total,  4131564 free,     1296 used.   932112 avail Mem

第一行信息为任务队列信息

内容 说明
03:23:23 系统当前时间
up 1 day, 16:46 系统的运行时间,运行一天16小时46分钟
1 user 当前登陆了一个用户
load average: 0.27, 0.33, 0.35 系统在之前1分钟,5分钟,15分钟的平均负载。一般认为小于1时,负载较小。如果大于1.系统已经超出负荷

第二行为进程信息

内容 说明
Tasks: 207 total 系统中的进程总数
1 running 正在运行的进程数
122 sleeping 睡眠的进程
0 stopped 正在停止的进程
0 zombie 僵尸进程。如果不是0,需要手工检查僵尸进程

第三行为CPU信息

内容 说明
%Cpu(s): 0.4 us 用户模式占用的 CPU 百分比
0.2 sy 系统模式占用的 CPU 百分比
0.0 ni 改变过优先级的用户进程占用的 CPU 百分比
99.4 id 空闲 CPU 的 CPU 百分比
0.0 wa 等待输入/输出的进程的占用 CPU 百分比
0.0 hi 硬中断请求服务占用的 CPU 百分比
0.1 si 软中断请求服务占用的 CPU 百分比
0.0 st st(Steal time)虚拟时间百分比。就是当有虚拟
机时,虚拟CPU等待实际CPU的时间百分比

第四行为物理内容信息

内容 说明
KiB Mem : 3481456 total 物理内存的总量,单位KB
125272 free 空闲的物理内存数量
2352296 used 已经使用的物理内存数量
1003888 buff/cache 作为缓冲的内存数量,cpu读写硬盘数据时,为了提速在内存中开辟的缓冲(buffer针对写)或缓存区域(cache针对读)

第五行为交换分区(swap)信息

内容 说明
KiB Swap: 4132860 total 交换分区(虚拟内存)的总大小
4131564 free 空闲交换分区的大小
1296 used 已经使用的交互分区的大小
932112 avail Mem 创建新进程时,在不使用swap分区的情况下,能够分配的内存大小。这个大小可能比当前的free还大,这是因为buff/cache中的内存在创建进程时,若需要,也是可以抢占过来的

netstat显示网络状态和端口占用信息

安装
yum search netstat
yum -y install net-tools
基本语法
netstat -anp | grep 进程号(功能描述:查看该进程网络信息)
netstat -nlp | grep 端口号(功能描述:查看网络端口号占用情况)
选项说明
选项 功能
-a 显示所有正在监听(listen)和未监听的套接字(socket)
-n 拒绝显示别名,能显示数字的全部转化成数字
-l 仅列出在监听的服务状态
-p 表示显示哪个进程在调用
-t 显示tcp相关选项
-u 显示udp相关选项
案例实操

通过进程号查看sshd进程的网络信息

netstat -anp | grep sshd

查看端口号是否被占用

netstat -nltp | grep 22

corntab系统定时任务

crontab服务管理

重新启动crond服务

systemctl restart crond
crontab定时任务设置
基本语法
crontab [选项]
选项说明
选项 功能
-e 编辑crontab定时任务
-l 查询crontab任务
-r 删除当前用户所有的crontab任务
参数说明

进入crontab编辑界面,会打开vim编辑你的工作

crontab -e

* * * * *执行的任务

项目 含义 范围
第一个“*” 一小时当中的第几分钟 0-59
第二个“*” 一天当中的第几小时 0-23
第三个“*” 一个月当中的第几天 1-31
第四个“*” 一年当中的第几月 1-12
第五个“*” 一周当中的星期几 0-7(0和7都代表星期日)

特殊符号

特殊符号 含义
* 代表任何时间。比如第一个“*”就代表一小时中每分钟都执行一次的意思。
代表不连续的时间。比如“0 8,12,16 * * * 命令”,就代表在每天的 8 点 0 分,12 点 0 分,16 点 0 分都执行一次命令
- 代表连续的时间范围。比如“0 5 * * 1-6 命令”,代表在周一到周六的凌晨 5 点 0 分执行命令
*/n 代表每隔多久执行一次。比如“*/10 * * * * 命令”,代表每隔 10 分钟就执行一遍命令

特定时间执行命令

时间 含义
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 分都会执行命令。注意:星期几和几号最好不要同时出现,因为他们定义的都是天。非常容易让管理员混乱。
案例实操

每隔1分钟,向/root/file.txt文件中添加一个11的数字

*/1 * * * * /bin/echo "11" >> /root/file.txt

软件包管理

RPM

RPM(RedHat Package Manager),RedHat软件包管理工具,类似windows里面的setup.exe

是Linux这系列操作系统里面的打包安装工具,它虽然是RedHat的标志,但理念是通用的。

RPM包的名称格式Apache-1.3.23-11.i386.rpm

  • “apache” 软件名称
  • “1.3.23-11”软件的版本号,主版本和此版本
  • “i386”是软件所运行的硬件平台,Intel 32位处理器的统称
  • “rpm”文件扩展名,代表RPM包

RPM查询命令(rpm -qa)

基本语法
rpm -qa(功能描述:查询所安装的rpm软件包)
rpm -qi 软件包(查询软件包详细信息)
rpm -ql 软件包(查询软件包的文件列表)
rpm -qR 软件包(查询软件包的依赖关系)
经验技巧

由于软件包比较多,一般都会采取过滤。

rpm -qa | grep rpm软件包

RPM卸载命令(rpm -e)

基本语法
rpm -e RPM软件包
rpm -e --nodeps 软件包
选项说明
选项 功能
-e 卸载软件包
–nodeps 卸载软件时,不检查依赖。这样的话,那些使用该软件包的软件在此之后可能就不能正常工作了

RPM安装命令(rpm -ivh)

基本语法
rpm -ivh RPM包全名
选项说明
选项 功能
-i install,安装
-v –verbose,显示详细信息
-h –hash,进度条
–nodeps 安装前不检查依赖
–force 强制安装

YUM仓库配置

YUM概述

YUM(全称为 Yellow dog Updater, Modified)是一个在 Fedora 和 RedHat 以及 CentOS中的 Shell 前端软件包管理器。基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装

YUM的常用命令

基本语法
yum [选项] [参数]
选项说明
选项 功能
-y 对所有提问都回答“yes”
参数说明
参数 功能
install 安装rpm软件包
update 更新rpm软件包
check-update 检查是否有可用的更新rpm软件包
remove 删除指定的rpm软件包
list 显示软件包信息
clean 清理yum过期的缓存
deplist 显示yum软件包的所有依赖关系

修改网络YUM源

默认的系统 YUM 源,需要连接国外 apache 网站,网速比较慢,可以修改关联的网络YUM 源为国内镜像的网站,比如网易 163,aliyun 等

安装wget,wget用来从指定的URL下载文件
yum install wget
在/etc/yum.repos.d/目录下,备份默认的repos文件
cd /etc/yum.repos.d/
cp CentOS-Base.repo CentOS-Base.repo.backup
下载网易163或者是aliyun的repos文件
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo // 网易163
wget http://mirrors.aliyun.com/repo/Centos-7.repo // 阿里云
使用下载好的repos文件替换默认的repos文件
mv Centos-7.repo CentOS-Base.repo
清理旧缓存数据,缓存新数据
yum clean all
yum makecache // 把服务器的包信息下载到本地缓存起来
测试
yum list | grep firefox

参考教程

版权声明:
作者:lhylwl
链接:http://ye-w.cn/index.php/2024/11/01/24.html
来源:泠耀博客-我的技术记录
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
打赏
< <上一篇
下一篇>>