Linux基础知识

目录

Linux基础篇

1、安装VMware和Linux系统

博主所用系统为MacOS,这里提供的均为MacOS的安装方式。

这里直接提供VMware和CentOS8的安装包,供各位小伙伴使用:

百度网盘:https://pan.baidu.com/s/1Qshb_EVDCGd0Nkb1hhKX1Q, 提取码: 8ffv

具体安装可以参考网上其他的文章,博主这里不做详细说明了。


2、网络连接的三种方式

桥接模式:虚拟系统可以和外部系统通讯,但容易造成IP冲突;

NAT模式:网络地址转换模式,虚拟系统可以和外部系统通讯,但不会造成IP冲突;

主机模式:独立的系统。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Uqo5R2BM-1654174105946)(/Users/minh/Documents/MyMarkDown/Linux/Linux.assets/网络连接.jpeg)]


3、虚拟机克隆

已经安装好了一台linux系统,但还想要再安装一个或多个。

方式1:直接拷贝一份安装好的虚拟机文件

方式2:使用vmware的克隆操作,此时需要先关闭linux系统


4、虚拟机快照

如果在使用虚拟机系统的时候,想回到原先的某个状态,可以使用虚拟机快照管理。

例如:在创建好虚拟机时,拍摄一个快照A;之后经过一系列操作,这时再拍摄一个快照B;再经过一系列操作,拍摄快照C,这时可以回到A或者B,在A或B的状态也可以再操作,拍摄一个快照D,如此继续。


5、虚拟机的迁移和删除

迁移:把装好的虚拟系统这个文件夹整体进行拷贝,粘贴到另外位置。

删除:直接用vmware删除或手动删除该虚拟系统对应的文件夹。


6、Linux目录结构

Linux的文件系统是采用层级式的树状目录结构,在此结构中的最上层是跟目录“/”,然后在此目录下再创建其他的目录。

在Linux中,一切皆文件!

  • /bin(/usr/bin、/usr/local/bin)【常用】

    是Binary的缩写,这个目录存放着最常用的命令;

  • /sbin(/usr/sbin、/usr/local/sbin)

    s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序;

  • /home【常用】

    存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般该目录是以用户的账号命名;

  • /root【常用】

    该目录为系统管理员,也称作超级权限者的用户主目录;

  • /lib

    系统开机所需要最基本的动态链接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库;

  • /lost+found

    这个目录一般情况下是空的,当系统非法关机后,这里九存放了一些文件;

  • /etc【常用】

    所有的系统管理所需要的配置文件和子目录,比如安装mysql数据库my.conf;

  • /usr【常用】

    这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下, 类似于windows下的program files目录;

  • /boot【常用】

    存放的是启动Linux时使用的一些核心文件,包括一些链接文件以及镜像文件;

  • /proc【不能动】

    这个目录是一个虚拟的目录,它是系统内存的映射,访问这个目录来获取系统信息;

  • /srv【不能动】

    service的缩写,该目录存放一些服务启动之后需要提取的数据;

  • /sys【不能动】

    该目录下安装了Linux2.6内核中新出现的一个文件系统sysfs;

  • /tmp

    这个目录是用来存放一些临时文件的;

  • /dev

    类似于windows的设备管理器,把所有的硬件用文件的形式存储;

  • /media【常用】

    Linux系统会自动识别一些设备,例如U盘、光驱等,当识别后,Linux会把识别等设备挂在到这个目录下;

  • /mnt【常用】

    系统提供该目录是为了让用户临时挂在别的文件系统的,我们可以将外部的存储挂载在/mnt/下,然后进入该目录就可以查看里面的内容;

  • /opt

    这是给主机额外安装软件所存放的目录。默认为空;

  • /usr/local【常用】

    这是另一个给主机额外安装软件所安装的目录。一般是通过编译源码方法安装的程序;

  • /var【常用】

    这个目录中存放着不断扩充着的东西,习惯将经常被修改的目录放在这个目录下。包括各种日志文件;

  • /selinux(security-enhanced linux)

    SELinux是一种安全子系统,它能控制程序只能访问特定文件,有三种工作模式,可以自行设置。


7、远程登录以及文件传输

(1)远程登录

Mac用户可以直接通过电脑自带的终端远程登录Linux。

指令:ssh root@ip地址 -p 端口号

若没有指定端口号就是默认端口,然后输入密码即可登录Linux系统。

注:Mac也可使用iTerm2软件实现远程登录。

补充:

Windows用户可以使用Xshell、Xftp6等工具实现远程登录。具体操作演示可查阅网上其他资料。

远程登录工具提供:
百度网盘 :https://pan.baidu.com/s/1A8uU4aaM0nMCYmAfjD1B3g
提取码: 2hm4


(2)远程文件传输

Mac用户可以使用SSH进行文件的传输。

  • 从远程下载文件

    指令:scp username@servername:/path/filename /var/www/local_dir(本地目录)

    例如:scp root@172.168.183.128:/var/1.txt 将172.168.183.128上的/var/1.txt文件下载到/var/www/local_dir中

  • 上传本地文件到服务器

    指令:scp /path/filename username@servername:/path

    例如:scp /Users/minh/Desktop/ssm.png root@172.168.183.128:/opt 将本机/Users/minh/Desktop/下的/ssm.png文件上传到172.168.183.128:/opt目录中

其他也可参阅博客:mac下传输文件到远程服务器centos下

注:Mac也可使用FileZilla工具进行文件传输。

补充:

Windows用户可以使用FileZilla、Xftp等工具实现文件传输。软件安装包提供如上述网盘链接中。


8、Vi和Vim编辑器

Linux系统会内置Vi文本编辑器。

Vim具有程序编辑的能力,可以看成是Vi的增强版本,方便程序设计。

(1)Vi和Vim常用的三种模式

  • 正常模式

    以vim打开一个文档就直接进入正常模式。这个模式下可以使用上下左右移动光标,可以使用删除,复制,粘贴等处理文件数据。

  • 插入模式

    一般按i进入插入/编辑模式。

  • 命令行模式

    按下esc按键,在输入“:wq”等指令完成读取、存盘、离开、显示行号等操作。


(2)基本使用

例:编写一个Hello.java程序。


(3)各模式的切换

,


(4)快捷键

  1. 拷贝当前行:【yy】;拷贝当前行向下的5行:5yy;粘贴:输入【p】
  2. 删除当前行:【dd】;删除当前行向下的5行:5dd
  3. 在文件中查找某个单词:命令行下:/关键字,回车进行查找,输入n就是查找下一个
  4. 设置文件的行号,取消文件的行号:命令行下:【set nu】和【set nonu】
  5. 编辑文件,在一般模式下,使用快捷键到该文档的最末行【G】和最首行【gg】
  6. 撤销某个动作,在一般模式下:【u】
  7. 定位光标到某一行,在一般模式下,输入某一行,在输入【G】

9、开机、重启、用户登录注销

(1)关机和重启命令

  • shutdown -h now 立刻进行关机
  • shutdown -h 1 一分钟后关机
  • shutdown -r now 现在重启计算机
  • halt 关机
  • reboot 重启计算机
  • sync 把内存的数据同步到磁盘

注: 不管是重启还是关闭系统,都应该先运行sync命令,把内存中的数据写到磁盘中,虽然目前这些命令都会自动执行sync。


(2)用户登录和注销

登录时一般使用普通用户登录,而不会使用root账号。

在普通用户登录后,可以使用su - root命令切换成系统管理员身份。

在提示符下输入logout即可注销用户。但该命令在图形运行级别无效,在运行级别3下才有效。


10、用户管理

Linux系统是一个恶多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。

(1)添加用户

语法:useradd 用户名

示例:useradd tom

说明:

  • 当创建用户成功后,会自动创建和用户同名的家目录;
  • 也可通过useradd -d 指定目录 新用户名,给新创建的用户指定家目录。

(2)指定/修改密码

语法:passwd 用户名

示例:passwd tom

补充: 显示当前用户所在的目录:pwd


(3)删除用户

语法:userdel 用户名

示例:

  • userdel tom:删除用户tom但保留家目录;
  • userdel -r tom:删除用户以及用户主目录。

一般建议保留家目录!


(4)查询用户信息指令

语法:id 用户名

示例:id root

当用户不存在时,返回无此用户。


(5)切换用户

语法:su - 切换用户名

示例:su - root

说明:

  • 从权限高的用户切换到权限低的用户,不需要输入密码,反之需要;
  • 当需要返回到原来用户时,使用exit/logout指令。

(6)查看当前用户/登录用户

语法:whoami/ who am I

显示的是第一次登录到该系统的用户,中途切换用户不影响。


(7)用户组

类似于角色,系统可以对有共性/权限的多个用户进行统一管理。

  1. 新增组

    指令:groupadd 组名

    示例:groupadd groupA

  2. 删除组

    指令:groupdel 组名

    示例:groupdel groupA

  3. 修改用户的组

    指令:usermod -g 用户组 用户名

    示例:usermod -g groupA jerry

案例:

  1. 添加用户时直接加上组

    useradd -g groupA tom


(8)用户和组相关文件

  1. /etc/passwd文件

    用户的配置文件,记录用户的各种信息。

    每行的含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell

  2. /etc/shadow文件

    口令的配置文件。

    每行的含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志

  3. /etc/group文件

    组的配置文件,记录Linux包含的组的信息。

    每行的含义:组名:口令:组标识号:组内用户列表


11、实用指令

(1)指定运行级别

  • 0:关机
  • 1:单用户(找回丢失密码)
  • 2:多用户状态没有网络服务
  • 3:多用户状态有网络服务
  • 4:系统未使用保留给用户
  • 5:图形界面
  • 系统重启

示例:init 1

说明:

multi-user.target:相当于级别3

graphical.target:相当于级别5

查看当前运行级别:systemctl get-default

设置一个默认的运行级别:systemctl set- default multi-user.target


(2)找回root密码

步骤:

  1. 首先,启动系统,进入开机界面,在界面中按“e”进入编辑界面;
  2. 进入编辑界面,使用键盘上的上下键把光标往下移动,找到以““Linux16”开头内容所在的行数”,在行的最后面输入:init=/bin/sh;
  3. 接着,输入完成后,直接按快捷键:Ctrl+x进入单用户模式;
  4. 接着,在光标闪烁的位置中输入:mount -o remount,rw /(注意:各个单词间有空格),完成后按键盘的回车键(Enter);
  5. 在新的一行最后面输入:passwd,完成后按键盘的回车键(Enter)。输入密码,然后再次确认密码即可,密码修改成功后,会显示passwd…的样式,说明密码修改成功;
  6. 接着,在鼠标闪烁的位置中(最后一行中)输入:touch /.autorelabel(注意:touch与/后面有一个空格),完成后按键盘的回车键(Enter);
  7. 继续在光标闪烁的位置中,输入:exec /sbin/init(注意:exec与/后面有一个空格),完成后按键盘的回车键(Enter),等待系统自动修改密码,完成后,系统会自动重启,新的密码生效了。

(3)帮助指令

  1. man 获得帮助信息

    语法:man [命令或配置文件]

    示例:man ls

    在Linux下,隐藏文件以.开头

    选项可以组合使用,比如ls -al;ls -al /root

  2. help指令

    语法:help 命令

    示例:help cd


(4)文件目录类

1、pwd指令—显示当前工作目录的绝对路径

语法:pwd

2、ls指令—显示当前目录的文件

语法:ls

3、cd指令—切换到指定目录

语法:cd [参数]

示例:

cd ~或cd:回到家目录

cd…:回到上一级目录

4、mkdir指令—创建目录

语法:mkdir [选项] 要创建的目录

常用选项:-p:创建多级目录

示例:

创建一个目录:mkdir /home/jerry

创建多级目录:mkdir -p /home/people/mom

5、rmdir指令—删除空目录

语法:rmdir [选项] 要删除的空目录

若要删除非空目录,使用:rm -rf 要删除的目录

6、touch指令—创建空文件

语法:touch 文件名称

示例:touch /home/a.txt

7、cp指令—拷贝文件到指定目录

语法:cp [选项] source dest

常用选项:-r:递归复制整个文件夹

示例:

将/home/a.txt拷贝到/home/temp目录下:cp a.txt /home/temp

将/home/temp整个目录拷贝到/opt下:cp -r /home/temp /opt

补充: 强制覆盖不提示:\cp 、 \cp -r /home/temp /opt

8、rm指令—移除文件或目录

语法:rm [选项] 要删除的文件或目录

常用选项:-r:递归删除整个文件夹;-r:强制删除不提示

示例:

将/home/a.txt删除:rm /home/a.txt

将/home/temp整个文件夹删除:rm -rf /home/temp

9、mv指令—移动文件和目录,重命名

语法:

重命名:mv oldName newName

移动文件:mv /temp/file /newFolder

示例:

将/home/a.txt文件重命名为b.txt:mv a.txt b.txt

将/home/a.txt移动到/home/temp目录下:mv /home/a.txt /home/temp

将/home/temp整个目录移动到/opt目录下:mv /home/temp /opt

10、cat指令—查看文件内容

语法:cat [选项] 要查看的文件

常用选项:-n:显示行号

示例:

显示/etc/profile文件内容,并显示行号:cat -n /etc/profile

补充: cat只能浏览文件,而不能进行修改,为了浏览方便,一般会带上一个管道命令:|more

cat -n /etc/profile |more [进行交互]

11、more指令

more指令是一个基于Vi编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容。more指令中内置了若干快捷键。

语法:more 要查看的文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4QR7zWHS-1654174105947)(/Users/minh/Documents/MyMarkDown/Linux/Linux.assets/image-20220531115406727.png)]

示例:

查看文件:more /etc/profile

12、less指令

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

语法:less 要查看的文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gFqL6qCK-1654174105947)(/Users/minh/Documents/MyMarkDown/Linux/Linux.assets/image-20220531115741917.png)]

示例:

查看文件:less /temp/a.txt

13、echo指令—输出内容到控制台

语法:echo [选项] [输出内容]

示例:

使用echo指令输出环境变量:echo $PATH

使用echo指令输出hello,world!:echo “hello,world!”

14、head指令—显示文件到开头部分内容

默认显示前10行内容。

语法:

查看文件头10行内容:head 文件

查看文件头5行内容:head -n 5 文件

示例:

查看/etc/profile前5行内容:head -n 5 /etc/profile

15、tail指令—输出文件尾部的内容

默认显示后10行内容

语法:

查看文件后10行内容:tail 文件

查看文件后5行内容:tail -n 5 文件

实时追踪该文档的所有更新:tail -f 文件

示例:

查看/etc/profile后5行内容:tail -n 5 /etc/profile

实时监控a.txt看是否有变化:tail -f /home/a.txt

16、>指令和>>指令—输出重定向和追加

语法:

列表的内容写入文件中:ls -l > 文件

列表的内容追加到文件的末尾:ls -al >> 文件

将文件1的内容覆盖到文件2:cat 文件1 > 文件2

追加:echo “内容” >> 文件

示例:

将/home目录下的文件列表写入到/home/info.txt中:ls -l /home > /home/info.txt【如果info.txt没有,则会创建】

将当前日历信息追加到/home/mycal文件中:cal >> /home/mycal

17、ln指令—软链接(符号链接)

类似于Windows里的快捷方式,主要存放了链接其他文件的路径。

语法:

给原文件创建一个软链接:ln -s [原文件或目录] [软链接名]

示例:

在/home目录下创建一个软链接myroot,链接到/root目录:ln -s /root /home/myroot

删除软链接myroot:rm /home/myroot

说明: 当使用pwd指令查看目录时,仍看到的是软链接所在目录。

18、history指令—查看已经执行过的历史命令,也可以执行历史指令

语法:history

示例:

显示所有的历史命令:history

显示最近使用过的10个指令:history 10

执行历史编号为5的指令:!5


(5)时间日期类

1、date指令—显示当前日期

语法:

显示当前时间:date

显示当前年份:date+%Y

显示当前月份:date+%m

显示当前是哪一天:date+%d

显示年月日时分秒:date"+%Y-%m-%d%H:%M:%S"

2、date指令—设置日期

语法:date -s 字符串时间

示例:

设置系统当前时间:date -s “2022-6-1 6:06:06”

3、cal指令—查看日历

语法:cal [选项]

不加选项就只显示本月日历

示例:

显示当前日历:cal

显示2022年日历:cal 2022


(6)搜索查找类

1、find指令

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

语法:find [搜索范围] [选项]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y5FK3Qwl-1654174105948)(/Users/minh/Documents/MyMarkDown/Linux/Linux.assets/image-20220531152155700.png)]

示例:

按文件名查找文件:find /home -name a.txt

按拥有者查找文件:find /opt -user nobody

查找整个Linux系统中大于200M的文件(+n:大于;-n:小于;n:等于;单位有k,M,G):find / -size +200M

2、locate指令

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

语法:locate 搜索文件

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

示例:

快速定位a.txt文件所在的目录:locate a.txt

补充: which指令

用以查看某个指令在哪个目录下,例如ls指令在哪个目录下:which ls

3、grep指令和管道符号|

grep指令:过滤查找

管道符|:表示将前一个命令的处理结果输出传递给后面的命令处理。

语法:grep [选项] 查找内容 源文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VhDSLrTd-1654174105948)(/Users/minh/Documents/MyMarkDown/Linux/Linux.assets/image-20220531153759883.png)]

示例:

在a.txt文件中查找“yes”所在行,并显示行号:

写法1:cat /home/a.txt | grep -n “yes”

写法2:grep -n “yes” /home/a.txt


(7)压缩和解压类

1、gzip/gunzip指令

gzip:压缩文件;gunzip:解压文件

语法:

压缩文件(只能将文件压缩为*.gz):gzip 文件

解压缩文件:gunzip 文件.gz

示例:

将/home下的a.txt进行压缩:gzip /home/a.txt

将/home下的a.txt.gz文件进行解压:gunzip /home/a.txt.gz

2、zip和unzip指令

zip:压缩文件;unzip:解压文件

语法:

压缩文件和目录:zip [选项] xxx.zip 将要压缩的内容

解压缩文件:unzip [选项] xxx.zip

zip常用选项:-r:递归压缩,即压缩目录

unzip常用选项:-d<目录>:指定解压后文件的存放目录

示例:

将/home及其下的所有文件和文件夹压缩成myhome.zip:zip -r my home.zip /home

将myhome.zip解压到/ope/tmp目录下:unzip -d /opt/tmp /home/myhome.zip

3、tar指令

tar是打包指令,最后打包的文件时.tar.gz的文件。

语法:

tar [选项] xxx.tar.gz 打包的内容

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-36Yk5tkQ-1654174105948)(/Users/minh/Documents/MyMarkDown/Linux/Linux.assets/image-20220531160108456.png)]

示例:

压缩多个文件,将/home/a.txt和/home/b.txt压缩成all.tar.gz:tar -zcvf all.tar.gz /home/a.txt /home/b.txt

将/home的文件夹压缩成myhome.tar.gz:tar -zcvf myhome.tar.gz /home

将all.tar.gz解压到当前目录:tar -zxvf all.tar.gz

将myhome.tar.gz解压到/opt/tmp目录下:tar -zxvf /home/myhome.tar.gz -C /opt/tmp


12、组管理和权限管理

(1)基本介绍

在Linux中,每个用户必须属于一个组,不能独立于组之外。在Linux中每个文件有所有者、所在组、其他组的概念。


(2)文件/目录的所有者

一般为文件的创建者。

1、查看文件的所有者

指令:ls -ahl

2、修改文件所有者

chown 用户名 文件名

示例:

使用root创建一个文件a.txt,将其所有者修改为user:chown user a.txt


(3)组的创建

这部分内容在之前已经讲过,这里不再赘述。

可参考:(7)用户组


(4)文件/目录的所在组

当某个用户创建了一个文件后,这个文件的所在组就是该用户所在的组。

1、查看文件/目录所在组

指令:ls -ahl

2、修改文件/目录所在组

chgrp 组名 文件名

示例:

root用户创建文件a.txt,然后将此文件所在组修改到people组:

grouped people

touch a.txt

chgrp people a.txt


(5)其他组

除文件的所有者和所在组的用户外,系统的其他用户都是该文件的其他组。


(6)改变用户所在的组

在添加用户时,可以指定将用户添加到哪个组,用root管理权限也可以改变某个用户所在的组。

usermod -g 新组名 用户名

usermod -d 目录名 用户名 改变该用户登录的初始目录

示例:usermod -d /opt jerry /home


(7)权限的基本介绍

以此文件为例:drwx------. 15 minh minh 4096 5月 30 13:50 minh

  • 第0位确定文件类型

    d:目录,相当于windows的文件夹;

    l:链接,相当于windows的快捷方式;

    c:字符设备文件,鼠标,键盘;

    b:块设备,比如硬盘;

    -:普通文件

  • 1-3位:所有者拥有的权限–User

  • 4-6位:组用户拥有的权限–Group

  • 7-9位:其他用户拥有的权限–Other


(8)rwx权限详解

1、作用到文件
  1. r表示可读:可以读取,查看;
  2. w表示可写:可以修改,但不代表可以删除,删除一个文件的前提条件是对该文件所在的目录有写的权限;
  3. x表示可执行:可以被执行。
2、作用到目录
  1. r表示可读:可以读取,ls查看目录内容;
  2. w表示可写:可以修改,对目录内创建+删除+重命名目录;
  3. x表示可执行:可以进入该目录。

(9)文件及目录权限实际案例

以此文件为例:-rwxrw-r-- root root 4096 5月 30 13:50 file1

这代表是一个普通文件;

所有者拥有读写和执行权限;组用户拥有读写但不能执行;其他用户只能读,不能写和执行。

也可以用三个一位的二进制值表示,上述即为764


(10)修改权限指令—chmod

可以通过chmod指令,对文件或目录的权限进行修改。

u:所有者;g:组用户;o:其他用户;a:所有人

1、第一种:+、-、=变更权限
  • chmod u=rwx,g=rx,o=x 文件/目录名
  • chmod o+w 文件/目录名
  • chmod a-x 文件/目录名
2、第二种:数字变更权限

chmod u=rwx,g=rx,o=x 文件/目录名

就相当于 chmod 751 文件/目录名


(11)修改文件所有者—chown

语法:

chown newowner 文件/目录 改变所有者

chown newowner:newgroup 文件/目录 改变所有者和所在组

-R 如果是目录,则使其所有子文件或目录递归生效

示例:

将/home/a.txt文件的所有者修改为tom:chown tom /home/a.txt

将/home/test目录下的所有文件和目录的所有者修改为tom:chown -R tom /home/test


(12)修改文件/目录所在组—chgrp

同上文:2、修改文件/目录所在组


(13)实践示例

group:police、bandit

owner:jack、jerry:police

owner:xh、xq:bandit

  1. 创建组

    groupadd police
    groupadd bandit

  2. 创建用户

    useradd -g police jack
    useradd -g police jerry
    useradd -g bandit xh
    useradd -g bandit xq

  3. jack创建一个文件,自己可以读写,组用户可以读,其他用户无权限

    jack登录
    touch jack.txt
    chmod u=rw,g=r jack.txt

  4. jack修改该文件,让其他组人可以读,组用户可以读写

    chmod 664 jack

    chmod 664 jack.txt

  5. xh投靠警察,看是否可以读写

    usermod -g police xh

如果要对目录内的文件进行操作,需要有对该目录的相应权限!


13、定时任务调度

(1)crond任务调度

利用crontab进行定时任务的设置。

1、概述

任务调度:是指系统在某个时间执行的特定的命令或程序。

任务调度分类:

  • 系统工作:有些重要的工作必须周而复始地执行,比如病毒扫描;
  • 个别用户工作:个别用户希望执行某些程序,比如对数据库的备份。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7DtNQL5p-1654174105948)(/Users/minh/Documents/MyMarkDown/Linux/Linux.assets/image-20220601171043672.png)]

2、基本语法

crontab [选项]

常用选项:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rjcwE86V-1654174105948)(/Users/minh/Documents/MyMarkDown/Linux/Linux.assets/image-20220601171126418.png)]

3、快速入门

设置任务调度文件:/etc/crontab

设置个人任务调度。执行crontab -e命令;

输入任务到调度文件。如:*/1**** ls -l /etc/ > /tmp/to.txt

意思是每分钟执行一次ls -l /etc/ > /tmp/to.txt命令。

  • 参数说明

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GUlm4ivH-1654174105949)(/Users/minh/Documents/MyMarkDown/Linux/Linux.assets/image-20220601172013868.png)]

  • 特殊符号说明

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mNHYe9cQ-1654174105949)(/Users/minh/Documents/MyMarkDown/Linux/Linux.assets/image-20220601172040173.png)]

  • 执行案例

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NuctQ4eQ-1654174105949)(/Users/minh/Documents/MyMarkDown/Linux/Linux.assets/image-20220601172328281.png)]

4、应用实例

每隔1分钟就将当前的日期信息追加到/tmp/mydate文件中:*/1 **** date >> /tmp/mydate

每隔1分钟,将当前日期和日历都追加到/home/mycal文件中:可以编写一个shell脚本,crontab定时调用这个脚本

  • vim /home/my.sh 写入内容 date >> /home/mycal和cal >> /home/mycal
  • 给my.sh增加执行权限:chmod u+x my.sh
  • crontab -e
  • 增加*/1**** /home/my.sh

每天凌晨两点将mysql数据库testdb备份到文件中:指令为:mysqldump -u root -p 密码 数据库 > /home/db.bak

  • crontab -e
  • 0 2 *** mysqldump -u root -p root testdb > /home/db.bak
5、crond相关指令
  • crontab -r:终止任务调度
  • crontab -l:列出当前有哪些任务调度
  • service crowd restart:重启任务调度

(2)at定时任务

1、基本介绍

at命令是一次性定时计划任务,at的守护进程atd会以后台模式运行,检查作业队列来运行。

默认情况下,atd守护进程每60秒检查作业队列,有作业时,会检查作业运行时间,如果时间与当前时间匹配,则运行此作业。

在使用at命令时,一定要保证atd进程的启动,可以使用相关指令来查看:ps -ef | grep atd

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4d9WUQxs-1654174105949)(/Users/minh/Documents/MyMarkDown/Linux/Linux.assets/image-20220601175436935.png)]

2、at命令格式

at [选项] [时间]

Ctrl+D:结束at命令的输入,输入两次

选项:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6JS7wA2K-1654174105949)(/Users/minh/Documents/MyMarkDown/Linux/Linux.assets/image-20220601174836196.png)]

3、at时间定义

at指定时间的方式:

  1. 接受在当天的hh:mm(小时:分钟)式的时间指定。假设该时间已过,那么就放在第二天执行。例如:04:00
  2. 使用midnight(深夜),noon(中午),teatime(一般为下午四点)等比较模糊的词语来指定时间
  3. 采用12小时计时制,即在时间后面加上AM或PM来说明是上午还是下午。例如:11PM
  4. 指定命令执行的具体日期,指定格式为month day或mm/dd/yy(月/日/年)或dd.mm.yy(日.月.年),指定的日期必须跟在指定时间的后面。例如:04:00 2022-06-1
  5. 使用相对计时法。指定格式为:now+count time-units,now为当前时间,time-units是时间单位,这里能够是minutes、hours、days、weeks,count是时间的数量。例如:now+ 5 minutes
  6. 直接使用today、tomorrow来指定完成命令的时间
4、应用实例

2天后的下午五点执行/bin/ls /home:

at 5pm + 2days

at> /bin/ls /home

atq命令查看系统中没有执行的工作任务:atq

明天17点输出时间到指定文件/root/date1.log内:

at 17:00 tomorrow

at> date > /root/date1.log

2分钟后,输出时间到指定文件/root/date2.log内:

at now + 2 minutes

at> date > /root/date2.log

删除已经设置的任务:atrm 编号


14、Linux磁盘分区、挂载

(1)Linux分区

1、原理

Linux无论有几个分区,分给哪一目录使用,归根到底就只有一个跟目录,一个独立且唯一的文件结构,Linux中每个分区都是用来组成整个文件系统的一部分。

Linux采用“载入”的处理方式,它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来。这时要载入的一个分区将使它的存储空间在一个目录下获得。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MqbN862g-1654174105949)(/Users/minh/Documents/MyMarkDown/Linux/Linux.assets/image-20220601182910143.png)]

2、硬盘

Linux硬盘分为IDE硬盘和SCSI硬盘,目前基本使用SCSI硬盘。

  • IDE硬盘:驱动器标识符为“hda~”,其中“hd”表明分区所在设备的类型,这里是指IDE硬盘。“a”为盘号(a:基本盘,b:基本从属盘,c:辅助主盘,d:辅助从属盘),“~”代表分区,前四个分区用数字1到4表示,他们是主分区或扩展分区,从5开始就是逻辑分区。例如:hda3表示为第一个IDE硬盘上的第三个主分区或扩展分区,hdb2表示为第二个IDE硬盘上的第二个主分区或扩展分区。
  • SCSI硬盘:标识为“sda~”,SCSI硬盘是用“sd”表明分区所在设备的类型,其余和IDE硬盘表示方法一致。
3、查看所有设备挂载情况

命令:lsblk [-f]


(2)挂载的经典案例

以增加一块硬盘为例熟悉磁盘的相关指令和深入理解磁盘分区、挂载、卸载的概念。

步骤1:增加一块硬盘

在虚拟机设置中选择添加一块硬盘,并重启系统。

步骤2:磁盘分区

命令:fdisk /dev/sdb

分区命令:

  • m:显示命令列表
  • p:显示磁盘分区
  • n:新增分区
  • d:删除分区
  • w:写入并退出

开始分区后输入n,新增分区,然后选择p,分区类型为主分区。两次回车默认剩余全部空间。最后输入w写入分区并退出,若不保存退出则输入q。

步骤3:磁盘格式化

命令:mkfs -t ext4 /dev/sdb1

ext4是分区类型。

步骤4:挂载

将分区与目录联系起来。

命令:

挂载:mount 设备名称 挂载目录

卸载:umount 设备名称/挂载目录

示例:

mount /dev/sdb1 /newdisk

umount /dev/sdb1

步骤5:永久挂载

命令:

修改fstab文件,添加对应内容:vim /etc/fstab

生效:mount -a


(3)磁盘情况查询

1、查询系统整体磁盘使用情况

语法:df -h

2、查询指定目录的磁盘占用情况

语法:du -h 目录

默认为当前目录

  • -s:指定目录占用大小汇总
  • -h:带计量单位
  • -a:含文件
  • –max-depth=1:子目录深度
  • -c:列出明细的同时,增加汇总值

示例:

查询/opt目录的磁盘占用情况,深度为1:du -hac --max-depth=1 /opt


(4)工作实用指令

  • 统计/opt文件夹下文件的个数:ls -l /opt | grep "^-" | wc -l
  • 统计/opt文件夹下目录的个数:ls -l /opt | grep "^d" | wc -l
  • 统计/opt文件夹下文件的个数,包括子文件夹中的:ls -lR /opt | grep "^-" | wc -l
  • 统计/opt文件夹下目录的个数,包括子文件夹中的:ls -lR /opt | grep "^d" | wc -l
  • 以树状显示目录结构tree目录,注意:如果没有tree,需要使用yum install tree安装:tree /home

15、网络配置

(1)网络配置原理图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TtlqXi8v-1654174105949)(/Users/minh/Documents/MyMarkDown/Linux/Linux.assets/image-20220602120413131.png)]


(2)查看网络IP和网关

打开虚拟机网络适配器可以进行查看并修改对应的IP。


(3)查看网络配置

命令:ifconfig


(4)ping命令—测试是否可以连通目的主机

示例:ping www.baidu.com


(5)Linux网络环境配置

1、自动获取

登录后,通过界面来设置自动获取IP。特点是:Linux启动后会自动获取IP,但每次自动获取的ip地址可能不一样。

2、指定IP(推荐)

直接修改配置文件来指定IP,并可以连接到外网。

命令:vim /etc/sysconfig/network-scripts/ifcfg-ens160

ifcfg-ens33文件说明:

DEVICE=ens160 #接口名(设备,网卡)

TYPE=Ethernet #网络类型(通常是Ethernet)

UUID #随机id

ONBOOT=yes #系统启动时网络接口是否有效

BOOTPROTO=static/dhcp #IP的配置方法

修改配置:

  • BOOYPROTO修改为static
  • 添加IPADDR=192.168.200.130
  • 添加网关GATEWAY=192.168.200.2
  • 添加域名解析器DNS1=192.168.200.2

最后重启网络服务或重启系统:service network restart、reboot


(6)设置主机名和hosts映射

1、设置主机名

命令:hostname

修改主机名:vim /etc/hostname

修改后,重启即生效。

2、设置hosts映射
  • windows

    在C:\Windows\System32\drivers\etc\hosts文件进行指定

    例如:192.168.200.130 minh111

  • Linux

    在/etc/hosts文件中进行指定

    例如:192.168.200.130 minh222

3、主机名解析分析过程(Hosts、DNS)

I、Hosts:一个记录IP和主机名的映射关系的文件

II、DNS:域名系统

III、应用实例:在浏览器中输入一个网址后浏览器所做工作

1、浏览器先检查浏览器缓存中是否有该域名解析IP地址,有就调用;没有就检查DNS解析器缓存,有就返回。这两个缓存都是本地解析器缓存

2、若本地解析器缓存没有找到对应映射,就会检查系统的hosts文件是否有配置对应的域名IP映射,有就返回。

3、若上述两种都没有找到对应的IP,则到域名服务器DNS进行解析,有就返回。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fJhHcFL3-1654174105950)(/Users/minh/Documents/MyMarkDown/Linux/Linux.assets/image-20220602160951950.png)]


16、进程管理

(1)显示系统执行的进程

命令:ps [选项]

查看某一详细进程:ps -aux | grep 进程名

选项:

  • -a:显示当前终端的所有进程信息
  • -u:以用户的格式显示进程信息
  • -x:显示后台进程运行的参数

ps显示的信息字段详解

  • System V:展示风格
  • USER:用户名称
  • PID:进程识别号
  • %CPU:进程占用CPU的百分比
  • %MEM:进程占用物理内存的百分比
  • VSZ:进程占用的虚拟内存的大小(单位:KB)
  • RSS:进程占用物理内存大小(单位:KB)
  • TTY:终端机号
  • STAT:进程状态,S:睡眠;s:表示该进程是会话的先导进程;N:表示进程拥有比普通优先级更低的优先级,R:正在运行,D:短期等待,Z:僵尸进程;T:被跟踪或被停止
  • STARTED:进程的启动时间
  • TIME:此进程所消耗CPU时间
  • COMMAND:启动进程所用的命令和参数,如果过长会被截断显示

示例:

ps -ef:以全格式显示当前所有的进程

查看sshd 的父进程:ps -ef | grep sshd

  • PPID:父进程ID
  • C:CPU用于计算执行优先级的因子。数值越大,表明进程的优先级越低。

(2)终止进程—kill和killall

语法:

通过进程号终止进程:kill [选项] 进程号

通过进程名称终止进程:killall 进程名称

选项:

  • -9:表示强迫进程立即停止

示例:

强制踢出某个非法登录用户:kill 进程号

终止多个gedit:killall gedit

强制终止一个终端:kill -9 bash 进程号


(3)查看进程树—pstree

语法:pstree [选项]

选项:

  • -p:显示进程的PID
  • -u:显示进程的所属用户

示例:

以树状的形式显示进程的PID:pstree -p

以树状的形式显示进程的用户:pstree -u


(4)服务(Service)管理

1、介绍

服务本质就是进程,通常用于监听某个端口,等待其他程序的请求(例如:mysqld),因此又称为守护进程。

2、service指令

service 服务名 [start/stop/restart/reload/status]

指令管理的服务在/etc/init.d中查看:ls -l /etc/init.d

3、示例

查看、关闭、启动network:service network status/stop/start

4、服务的运行级别(runlevel)

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

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

操作可查看:(1)指定运行级别

5、chkconfig指令

该指令可以给服务的各个运行级别设置自启动/关闭。

语法:

chkconfig --list

chkconfig 服务名 --list

chkconfig —level 5 服务名 on/off

示例:

把network在3运行级别,关闭自启动:chkconfig --level 3 network off

6、systemctl指令(重要)

语法:systemctl [start/stop/restart/status] 服务名

设置自启动状态

  • 查看服务开机启动状态,grep进行过滤:systemctl list-unit-files [| grep 服务名]
  • 设置服务开机启动:systemctl enable 服务名
  • 关闭服务开机启动:systemctl disable 服务名
  • 查询某个服务是否是自启动:systemctl is-enabled 服务名

示例:

查看防火墙的状况:systemctl status firewalld

关闭防火墙:systemctl stop firewalld

重启防火墙:systemctl start firewalld

说明

  • 这种方式只是临时生效,当重启系统后,还是回归之前的设置
  • 若希望永久生效,要使用systemctl [enable|disable] 服务名
7、打开/关闭指定端口

在真正的生产环境,往往需要将防火墙打开,但此时外部请求数据包就不能跟服务器监听端口通讯。这时就需要打开指定的端口。

指令:

打开端口:firewall-cmd --permanent --add-port=端口号/协议

关闭端口:firewall-cmd --permanent --remove-port=端口号/协议

重新载入(才能生效):firewall-cmd --reload

查询端口是否开放:firewall-cmd --query-port=端口号/协议

示例:

开启防火墙并测试111端口是否能telnet:systemctl start firewalld;telnet IP地址 端口号

开放111端口:firewall-cmd --permanent --add-port=111/tcp;firewall-cmd --reload

关闭111端口:firewall-cmd --permanent --remove-port=111/tcp;firewall-cmd --reload


(5)动态监控进程—top命令

top命令类似于ps指令,两者都用来显示正在执行的进程,但top在执行一段时间可以更新正在运行的进程。

语法:top [选项]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KhXNbITS-1654174105950)(/Users/minh/Documents/MyMarkDown/Linux/Linux.assets/image-20220602184953222.png)]

交互操作说明

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yIBwCoeV-1654174105950)(/Users/minh/Documents/MyMarkDown/Linux/Linux.assets/image-20220602185535470.png)]

示例:

监视特定用户:top查看执行的进程;输入u,再输入用户名

终止特定的进程:top;输入k,再输入要结束的PID

指定系统状态更新的时间,每隔10秒自动更新:top -d 10


(6)监控网络状态

语法:netstat [选项]

选项:

  • -an:按一定顺序排列输出
  • -p:显示哪个进程在调用

示例:

查看服务名为sshd的服务信息:netstat -anp | grep sshd


17、RPM与YUM

(1)rpm包的管理

rpm用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中,生成具有.rpm扩展名的文件。

1、查询指令

查询已安装的rpm列表:rpm -qa | grep xxx

查询所安装的所有rpm软件包:rpm -qa

查询软件包是否安装:rpm -q

查询软件包信息:rpm -qi 软件包名

查询软件包中的文件:rpm -ql 软件包名

查询文件所属的软件包:rpm -qf 文件全路径名

2、卸载rpm包

语法:rpm -e RPM包的名称

示例:

删除Firefox软件包:rpm -e firefox

补充

  • 若其他软件包依赖于要卸载的软件包,则卸载时会报错;
  • 若要强制删除可以增加参数--nodeps,但不推荐。
3、安装rpm包

语法:rpm -ivh RPM包全路径名称

参数说明:

  • i=install:安装
  • v=vervose:提示
  • h=hash:进度条

示例:

卸载firefox:rpm -ivh firefox


(2)yum

yum是一个Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包。

指令:

查询yum服务器是否有需要安装的软件:yum list | grep xx软件列表

下载安装指定的yum包:yum install xxx

示例:

安装firefox:yum list | grep firefoxyum install firefox


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值