目录
- Linux基础篇
- 1、安装VMware和Linux系统
- 2、网络连接的三种方式
- 3、虚拟机克隆
- 4、虚拟机快照
- 5、虚拟机的迁移和删除
- 6、Linux目录结构
- 7、远程登录以及文件传输
- 8、Vi和Vim编辑器
- 9、开机、重启、用户登录注销
- 10、用户管理
- 11、实用指令
- (1)指定运行级别
- (2)找回root密码
- (3)帮助指令
- (4)文件目录类
- 1、pwd指令---显示当前工作目录的绝对路径
- 2、ls指令---显示当前目录的文件
- 3、cd指令---切换到指定目录
- 4、mkdir指令---创建目录
- 5、rmdir指令---删除空目录
- 6、touch指令---创建空文件
- 7、cp指令---拷贝文件到指定目录
- 8、rm指令---移除文件或目录
- 9、mv指令---移动文件和目录,重命名
- 10、cat指令---查看文件内容
- 11、more指令
- 12、less指令
- 13、echo指令---输出内容到控制台
- 14、head指令---显示文件到开头部分内容
- 15、tail指令---输出文件尾部的内容
- 16、>指令和>>指令---输出重定向和追加
- 17、ln指令---软链接(符号链接)
- 18、history指令---查看已经执行过的历史命令,也可以执行历史指令
- (5)时间日期类
- (6)搜索查找类
- (7)压缩和解压类
- 12、组管理和权限管理
- 13、定时任务调度
- 14、Linux磁盘分区、挂载
- 15、网络配置
- 16、进程管理
- 17、RPM与YUM
Linux基础篇
1、安装VMware和Linux系统
博主所用系统为MacOS,这里提供的均为MacOS的安装方式。
这里直接提供VMware和CentOS8的安装包,供各位小伙伴使用:
百度网盘:https://pan.baidu.com/s/1Qshb_EVDCGd0Nkb1hhKX1Q, 提取码: 8ffv
具体安装可以参考网上其他的文章,博主这里不做详细说明了。
2、网络连接的三种方式
桥接模式:虚拟系统可以和外部系统通讯,但容易造成IP冲突;
NAT模式:网络地址转换模式,虚拟系统可以和外部系统通讯,但不会造成IP冲突;
主机模式:独立的系统。
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)快捷键
- 拷贝当前行:【yy】;拷贝当前行向下的5行:5yy;粘贴:输入【p】
- 删除当前行:【dd】;删除当前行向下的5行:5dd
- 在文件中查找某个单词:命令行下:/关键字,回车进行查找,输入n就是查找下一个
- 设置文件的行号,取消文件的行号:命令行下:【set nu】和【set nonu】
- 编辑文件,在一般模式下,使用快捷键到该文档的最末行【G】和最首行【gg】
- 撤销某个动作,在一般模式下:【u】
- 定位光标到某一行,在一般模式下,输入某一行,在输入【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)用户组
类似于角色,系统可以对有共性/权限的多个用户进行统一管理。
-
新增组
指令:groupadd 组名
示例:groupadd groupA
-
删除组
指令:groupdel 组名
示例:groupdel groupA
-
修改用户的组
指令:usermod -g 用户组 用户名
示例:usermod -g groupA jerry
案例:
-
添加用户时直接加上组
useradd -g groupA tom
(8)用户和组相关文件
-
/etc/passwd文件
用户的配置文件,记录用户的各种信息。
每行的含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
-
/etc/shadow文件
口令的配置文件。
每行的含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
-
/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密码
步骤:
- 首先,启动系统,进入开机界面,在界面中按“e”进入编辑界面;
- 进入编辑界面,使用键盘上的上下键把光标往下移动,找到以““Linux16”开头内容所在的行数”,在行的最后面输入:init=/bin/sh;
- 接着,输入完成后,直接按快捷键:Ctrl+x进入单用户模式;
- 接着,在光标闪烁的位置中输入:mount -o remount,rw /(注意:各个单词间有空格),完成后按键盘的回车键(Enter);
- 在新的一行最后面输入:passwd,完成后按键盘的回车键(Enter)。输入密码,然后再次确认密码即可,密码修改成功后,会显示passwd…的样式,说明密码修改成功;
- 接着,在鼠标闪烁的位置中(最后一行中)输入:touch /.autorelabel(注意:touch与/后面有一个空格),完成后按键盘的回车键(Enter);
- 继续在光标闪烁的位置中,输入:exec /sbin/init(注意:exec与/后面有一个空格),完成后按键盘的回车键(Enter),等待系统自动修改密码,完成后,系统会自动重启,新的密码生效了。
(3)帮助指令
-
man 获得帮助信息
语法:man [命令或配置文件]
示例:man ls
在Linux下,隐藏文件以.开头
选项可以组合使用,比如ls -al;ls -al /root
-
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 要查看的文件
示例:
查看文件:more /etc/profile
12、less指令
less指令用来分屏查看文件内容,功能与more指令类似,但更强大,支持各种显示终端。less指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率。
语法:less 要查看的文件
示例:
查看文件: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 [搜索范围] [选项]
示例:
按文件名查找文件: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 [选项] 查找内容 源文件
示例:
在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 打包的内容
示例:
压缩多个文件,将/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、作用到文件
- r表示可读:可以读取,查看;
- w表示可写:可以修改,但不代表可以删除,删除一个文件的前提条件是对该文件所在的目录有写的权限;
- x表示可执行:可以被执行。
2、作用到目录
- r表示可读:可以读取,ls查看目录内容;
- w表示可写:可以修改,对目录内创建+删除+重命名目录;
- 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
-
创建组
groupadd police
groupadd bandit -
创建用户
useradd -g police jack
useradd -g police jerry
useradd -g bandit xh
useradd -g bandit xq -
jack创建一个文件,自己可以读写,组用户可以读,其他用户无权限
jack登录
touch jack.txt
chmod u=rw,g=r jack.txt -
jack修改该文件,让其他组人可以读,组用户可以读写
chmod 664 jack
chmod 664 jack.txt
-
xh投靠警察,看是否可以读写
usermod -g police xh
如果要对目录内的文件进行操作,需要有对该目录的相应权限!
13、定时任务调度
(1)crond任务调度
利用crontab进行定时任务的设置。
1、概述
任务调度:是指系统在某个时间执行的特定的命令或程序。
任务调度分类:
- 系统工作:有些重要的工作必须周而复始地执行,比如病毒扫描;
- 个别用户工作:个别用户希望执行某些程序,比如对数据库的备份。
2、基本语法
crontab [选项]
常用选项:
3、快速入门
设置任务调度文件:/etc/crontab
设置个人任务调度。执行crontab -e命令;
输入任务到调度文件。如:*/1**** ls -l /etc/ > /tmp/to.txt
意思是每分钟执行一次ls -l /etc/ > /tmp/to.txt命令。
- 参数说明
- 特殊符号说明
- 执行案例
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
2、at命令格式
at [选项] [时间]
Ctrl+D:结束at命令的输入,输入两次
选项:
3、at时间定义
at指定时间的方式:
- 接受在当天的hh:mm(小时:分钟)式的时间指定。假设该时间已过,那么就放在第二天执行。例如:04:00
- 使用midnight(深夜),noon(中午),teatime(一般为下午四点)等比较模糊的词语来指定时间
- 采用12小时计时制,即在时间后面加上AM或PM来说明是上午还是下午。例如:11PM
- 指定命令执行的具体日期,指定格式为month day或mm/dd/yy(月/日/年)或dd.mm.yy(日.月.年),指定的日期必须跟在指定时间的后面。例如:04:00 2022-06-1
- 使用相对计时法。指定格式为:now+count time-units,now为当前时间,time-units是时间单位,这里能够是minutes、hours、days、weeks,count是时间的数量。例如:now+ 5 minutes
- 直接使用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采用“载入”的处理方式,它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来。这时要载入的一个分区将使它的存储空间在一个目录下获得。
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)网络配置原理图
(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进行解析,有就返回。
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 [选项]
交互操作说明:
示例:
监视特定用户: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 firefox
;yum install firefox