Linux学习
韩顺平视频
1、基本目录结构
linux 的文件系统是采用级层式的树状目录结构, 在此结构中的最上层是根目录“/”,然后在此目录下再创建其他的目录。
2、Vim
1.正常模式:
以 vim 打开一个档案就直接进入一般模式了(这是默认的模式)。在这个模式中,你可以使用『上下左右』按键来移动光标,可以使用『删除字符』或『删除整行』来处理档案内容,也可以使用『复制、粘贴』来处理你的文件数据。
2.插入模式
按下 i, I, o, O, a, A, r, R 等任何一个字母之后才会进入编辑模式, 一般来说按 i 即可.可以写东西了。
3.命令行模式
在这个模式当中,可以提供你相关指令,完成读取、存盘、替换、离开 vim,显示行号等动作
3、系统实操
3.1:系统开关操作:
3.2:Linux系统运行级别:
0:关机
1:单用户【可以找回丢失密码】
2:多用户状态没有网络服务(一般不用,没网络)
3:多用户状态有网络服务
4:系统未使用保留给用户
5:图形界面
6:系统重启
常用运行级别是 3 和 5
切换运行级别命令:init 选0-6
指定默认运行级别:
CentOS7之前是在文件/etc/inittab文件中设置,CentOS7之后对设置进行了简化:
用 multi-user.target 代表3运行级别,用 graphical.target 代表5运行级别,7版本之后主要用3和5运行级别。
用命令:systemctl get-default 查看当前系统运行级别
用命令:systemctl set-default multi-user.target /graphical.target 设置默认运行级别
5、用户组:类似于角色,系统可以对有共性/有相同的权限的多个用户进行统一的管理
1.新增组:groupadd 组名 假如A用户和B用户有相同的权限,一个一个赋权限太麻烦了; 可以把A用户和B用户放在一个组里,然后给这个组赋权限,组里的用户有相同的权限。
2.修改用户的组:usermod -g 用户组 用户名、useradd -g wudang zwj
用户组相关文件:
(1)/etc/passwd 文件
每增加一个用户,就会把用户的信息保存到该文件。
用户(user)的配置文件,记录用户的各种信息
每行都是一个用户,每行的含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
主目录:用户所在的家目录
shell:命令解释程序
将发布的指令通过shell解析,再传给Linux内核
Linux是看不懂发布的指令的
shell有很多种,中国一般用的是bash
命令:viw /etc/passwd 可以查看该文件(还有其他命令)
(2)/etc/shadow 文件
口令的配置文件
每行的含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
(3)/etc/group 文件
组(group)的配置文件,记录 Linux 包含的组的信息每行含义:组名:口令:组标识号:组内用户列表
6、文件目录指令:
基本语法:pwd (print working directory)
功能:显示当前目录的绝对路径
---------------------------------------------------------------------
基本语法:ls [选项] [目录或是文件]
常用选项:
-a:显示当前目录所有的文件和目录,包括隐藏的。
-l:以列表的方式显示信息
---------------------------------------------------------------------
基本语法:cd [参数]
功能:切换到指定目录
cd ~ 或者 cd --->回到当前用户的家目录
cd .. --->回到当前目录的上一级目录
---------------------------------------------------------------------
基本语法:mkdir [选项] 要创建的目录路径
功能:创建目录
常用选项:
-p:创建多级目录
---------------------------------------------------------------------
基本语法:rmdir [选项] 要删除的空目录路径
功能:删除一个空目录
注意:
rmdir 删除的是空目录,如果目录下有内容是无法删除的。
如果需要删除非空目录,需要使用命令:rm -rf 要删除的目录
比如: 删除animal目录
rm -rf /home/animal
---------------------------------------------------------------------
基本语法:touch 文件名称
功能:创建空文件
案例::在/home 目录下,创建一个空文件 hello.txt
touch /home/hello.txt
或者当前目录是home:touch hello.text
---------------------------------------------------------------------
基本语法:cp [选项] 被拷贝的文件 拷贝到哪个地方
功能:拷贝文件到指定目录
常用选项:
-r:递归复制整个文件夹
案例1:将 /home/hello.txt 拷贝到 /home/bbb 目录下
若在根目录下操作:
先创建 bbb目录
mkdir /home/bbb
然后复制
cp /home/hello.txt /home/bbb
案例2:递归复制整个文件夹,比如将 /home/bbb 整个目录,拷贝到 /opt
cp -r /home/bbb /opt
注意:强制覆盖不提示的方法:\cp
\cp -r /home/bbb /opt
---------------------------------------------------------------------
基本语法:rm [选项] 要删除的文件或目录
功能:移除文件或目录
常用选项:
-r:递归删除整个文件夹
-f:强制删除不提示
案例1:将 /home/hello.txt 删除
rm /home/hello.txt
案例2:递归删除整个文件夹 /home/bbb ,并不提示
rm -rf /home/bbb
注意:强制删除不提示的方法:带上 -f 参数即可
---------------------------------------------------------------------
基本语法:mv [选项] 移动
功能:移动文件与目录或重命名
基本语法:
mv 原文件名 新文件名 (功能描述:重命名)
mv 被移动的文件 移动到哪 (功能描述:移动文件)
---------------------------------------------------------------------
查看:vim
cat也可以查看,cat只能查看不能修改,cat更安全。
基本语法:cat [选项] 要查看的文件
功能:查看文件内容
常用选项:
-n:显示行号
案例1:查看 /etc/profile 文件内容,并显示行号。
cat -n /etc/profile
注意:
cat 只能浏览文件,而不能修改文件;为了浏览方便再加上管道命令 | more
管道命令:把前面的结果再交给下一个指令进行处理。
语法:| 其他指令
cat -n /etc/profile | more
意思:先执行cat -n /etc/profile 然后,按回车键输出一行,按空格翻页等。
---------------------------------------------------------------------
基本语法:more 要查看的文件
功能:
more 指令是一个基于 VI 编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容。
more 指令中内置了若干快捷键(交互的指令),详见操作说明:
--------------------------------------------------------------------
基本语法:less 要查看的文件
功能:
less 指令用来分屏查看文件内容,它的功能与 more 指令类似,但是比 more 指令更加强大,支持各种显示终端。
less 指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率。
下面操作中:
想要找某个字或词
输入:/要找的字或词 然后按n向下找 按N向上找
操作说明:
--------------------------------------------------------------------
基本语法:echo [选项] [输出内容]
功能:输出内容到控制台
案例: 使用 echo 指令输出环境变量
比如输出 $PATH $HOSTNAME
输入:echo $HOSTNAME (环境变量一般加$)
---------------------------------------------------------------------
功能:head 用于显示文件的开头部分内容,默认情况下 head 指令显示文件的前 10 行内容。
基本语法:
head 文件 (功能描述:查看文件头 10 行内容)
head -n 5 文件 (功能描述:查看文件头 5 行内容,5 可以是任意行数)
---------------------------------------------------------------------
功能:tail 用于输出文件中尾部的内容,默认情况下 tail 指令显示文件的前 10 行内容。
基本语法:
tail 文件 (功能描述:查看文件尾 10 行内容)
tail -n 5 文件 (功能描述:查看文件尾 5 行内容,5 可以是任意行数)
tail -f 文件 (功能描述:实时追踪该文档的所有更新,只要该文件改动了什么内容就可实时看到)
---------------------------------------------------------------------
>指令和>>指令:
> 输出重定向(覆盖)
>> 追加
基本语法:
ls -l >文件1 (功能描述:将列表的内容写入文件1中(覆盖写))
ls -al >>文件1 (功能描述:将列表的内容追加到文件1的末尾)
cat 文件 1 > 文件 2 (功能描述:将文件 1 的内容覆盖到文件 2)
echo "内容">> 文件1 (将内容追加到文件1的末尾)
案例 1: 将 /home 目录下的文件列表 写入到 /home/info.txt 中,覆盖写入。
ls -l /home > /home/info.txt [如果 info.txt 没有,则会自动创建]
案例 2: 将当前日历信息 追加到 /home/mycal 文件中
cal >> /home/mycal
---------------------------------------------------------------------
ln功能:给原文件创建一个软链接
软链接也称为符号链接,类似于 windows 里的快捷方式,主要存放了链接其他文件的路径
基本语法:
ln -s [原文件或目录] [软链接名] (功能描述:给原文件创建一个软链接)
ln是link
案例1:在/home 目录下创建一个软连接 myroot,连接到 /root 目录
(这样 切换到myroot 其实就是切换到root)
ln -s /root /home/myroot
案例2: 删除软连接 myroot
rm /home/myroot
当我们使用 pwd 指令查看目录时,仍然看到的是软链接所在目录。
---------------------------------------------------------------------
history 功能:查看已经执行过历史命令,也可以执行历史指令
基本语法:
history (功能描述:查看已经执行过历史命令)
7、时间指令:
date指令:
1.显示当前日期
基本语法:
date (功能描述:显示当前时间)
date +%Y (功能描述:显示当前年份)
date +%m (功能描述:显示当前月份)
date +%d (功能描述:显示当前是哪一天)
date "+%Y-%m-%d %H:%M:%S"(功能描述:显示年月日时分秒)
---------------------------------------------------------------------
cal指令:
查看日历指令 cal
基本语法:
cal [选项] (功能描述:不加选项,显示本月日历)
8、搜索指令:
find 指令
从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端。
基本语法:
find [搜索范围] [选项]
---------------------------------------------------------------------
locate 指令
可以快速定位文件路径。利用事先建立的系统中所有文件名称及路径的 locate 数据库实现快速定位给定的文件。
Locate 指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新 locate 时刻
基本语法:
locate 搜索文件
注意:
由于 locate 指令基于数据库进行查询,
所以第一次运行前,必须使用 updatedb 指令创建 locate 数据库。
---------------------------------------------------------------------
which 指令
可以查看某个指令在哪个目录下
案例:ls 指令在哪个目录
which ls
---------------------------------------------------------------------
grep 指令和 管道符号 |
grep:过滤查找
管道符:“|”,表示将前一个命令的处理结果输出传递给后面的命令处理。
基本语法:
grep [选项] 查找内容 源文件
常用选项:
-n 显示匹配行及行号
-i 忽略字母大小写
9、解压指令:
gzip/gunzip 指令
gzip 用于压缩文件
gunzip 用于解压的
基本语法:
gzip 文件 (功能描述:压缩文件,只能将文件压缩为*.gz 文件)
gunzip 文件.gz (功能描述:解压缩文件命令)
---------------------------------------------------------------------
zip/unzip 指令
zip 用于压缩文件
unzip 用于解压的
基本语法:
zip [选项] XXX.zip 将要压缩的内容 (功能描述:压缩文件和目录的命令)
unzip [选项] XXX.zip (功能描述:解压文件)
zip 常用选项
-r:递归压缩,即压缩目录
unzip 的常用选项
-d<目录> :指定解压后文件的存放目录
---------------------------------------------------------------------
tar 指令
tar 指令是打包指令,最后打包后的文件是 .tar.gz 的文件。
tar指令可以压缩也可以解压。根据选项来 压缩还是解压。
基本语法:
tar [选项] XXX.tar.gz 打包的内容 (功能描述:打包目录,压缩后的文件格式.tar.gz)
选项说明:
10、组管理和权限管理:
在 linux 中的每个用户必须属于一个组,不能独立于组外。 在 linux 中每个文件都有所有者、所在组、其它组的概念。
1.查看文件/目录的所有者(在/home下才能看到)
指令:ls –ahl
-ahl是三个选项
-h human 让输出的结果方便人看(文件的大小容易看)
drwxr-xr-x. 6 root root 4.0K 2月 23 13:59 .
dr-xr-xr-x. 18 root root 4.0K 2月 20 16:45 ..
-rw-r--r--. 1 root root 24 2月 22 21:59 hello.txt
...
第三列:文件的所有者(谁创建了这个文件,就是这个文件的所有者)
第四列:文件的所在组(某个用户创建了一个文件,该文件所在组=该用户所在组)
---------------------------------------------------------------------
2.修改文件/目录所有者指令:chown 新所有者 文件名
案例:使用 root 创建一个文件 apple.txt ,然后将其所有者修改成 tom
chown tom apple.txt
--------------------------------------------------------------------
3.chgrp 修改文件/目录所在的组 指令: chgrp 组名 文件名
--------------------------------------------------------------------
4.权限
-rw-r--r--. 1 root root 24 2月 22 21:59 hello.txt
第一列为权限,一共10位
第 0 位确定文件类型(d, - , l , c , b)
d 是目录,相当于 windows 的文件夹
- 代表是普通文件(.txt)
l 是链接,相当于 windows 的快捷方式
c 是字符设备文件,比如鼠标,键盘 ---> /dev/目录下可以看到
b 是块设备,比如硬盘 ---> /dev/目录下可以看到
第 1-3 位确定 该文件的所有者 对该文件的 权限。---User
第 4-6 位确定 该文件所属的组和该组中的用户 对该文件的 权限。---Group
第 7-9 位确定 其他用户(不是所有者,也不是同一组的其他用户) 对该文件的权限 ---Other
权限有三种:
r 代表可读(read),w 代表可写(write),x 代表可执行(execute)
rwx 作用到文件:
r: 可以读取,查看
w: 可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是 对该文件所在的目录 有 写权限,才能删除该文件.
x: 可以被执行,前提是可执行文件
rwx 作用到目录:
r: 可以读取,可以用 ls 查看目录内容
w: 可以修改, 可以对目录进行 创建+删除+重命名目录
x: 可以进入该目录
--------------------------------------------------------------------
5.chmod修改权限
第一种方式:通过 + 、-、= 变更权限,+加权限,-减权限,=赋予权限
u:所有者
g:所在组(同一个组的其他用户)
o:其他人(不同一个组的其他用户)
a:所有人(所有用户)(u、g、o 的总和)
chmod u=rwx,g=rx,o=x 文件/目录名 (该文件/目录的u的权限是rwx,g的权限是rx,o的权限是x)
chmod o+w 文件/目录名 (该文件/目录的o的权限加上w)
chmod a-x 文件/目录名 (取消该文件/目录的a的x权限)
第二种方式:权限可以用数字代替:r=4 w=2 x=1
chmod u=rwx,g=rx,o=x 文件/目录名
相当于 chmod 751 文件/目录名
rwx=4+2+1=7
rx=4+1=5
x=1
11、任务调度:
1.crond任务调度
任务调度:是指系统在某个时间执行特定的命令或程序。 crond--->周期任务
任务调度分类: (1)系统工作:有些重要的工作必须周而复始地执行。如病毒扫描等 (2)个别用户工作:个别用户可能希望执行某些程序,比如对 mysql 数据库的备份。 示意图:
--------------------------------------------------------------------
2.crontab [选项] 功能:进行定时任务的设置
service crond restart:重启任务调度
在/etc/下有一个crontab文件,在这个文件中写入所有的定时任务
输入crontab -e 就会进入crontab文件
然后在文件中写入定时任务:*/1 * * * * ls –l /etc/ > /tmp/to.txt
意思说每小时的每分钟执行 ls –l /etc/ > /tmp/to.txt 命令
最后保存退出
--------------------------------------------------------------------
3.at定时任务基本介绍
(1) at 命令是一次性定时计划任务,at 的守护进程 atd 会以后台模式运行,检查作业队列来运行;
(2) 每个作业队列(任务队列)中都有作业(作业里是指令/脚本);
(3) 默认情况下,atd 守护进程每 60 秒检查作业队列;有作业时,会检查作业运行时间,如果时间与当前时间匹配,则运行此作业;运行完这个作业(任务)之后,这个作业就不会再被执行了;
(4) at 命令是一次性定时计划任务,执行完一个任务后不再执行此任务了,只执行一次,和crond的循环执行区别开
(5) 在使用 at 命令的时候,一定要保证 atd 进程的启动,可以使用相关指令来查看
ps -ef | grep atd //可以检测 atd 是否在运行
ps -ef ---> 查看所有的进程
总结:at命令就是对某个定时任务只执行一次
--------------------------------------------------------------------
4.at执行
at [选项] [时间]
然后输入两次:Ctrl + D (结束 at 命令的输入)
at 命令选项:
at 指定时间的方法:
(1) 接受在当天的 hh:mm(小时:分钟)式的时间指定。
假如该时间已过去,那么就放在第二天执行。 例如:04:00
(2) 使用 midnight(深夜),noon(中午),teatime(饮茶时间,一般是下午 4 点)等比较模糊的词语来指定时间。
(3) 采用 12 小时计时制,即在时间后面加上 AM(上午)或 PM(下午)来说明是上午还是下午。
(4) 指定命令执行的具体日期,指定格式为 month day(月 日)或 mm/dd/yy(月/日/年)或 dd.mm.yy(日.月.年),指定的日期必须跟在指定时间的后面。
例如:04:00 2021-03-1 (小的时间写前面,大的时间写后面)
(5) 使用相对计时法。
指定格式为:now + count time-units
now 就是当前时间,time-units 是时间单位,这里能够是 minutes(分钟)、hours(小时)、days(天)、weeks(星期)。
count 是时间的数量,几天,几小时。
例如:now + 5 minutes
(6) 直接使用 today(今天)、tomorrow(明天)来指定完成命令的时间。
12、Linux磁盘分区、挂载
(1) Linux 无论有几个分区,分给哪一目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构
Linux 中每个分区都是用来组成整个文件系统的一部分。
(2) Linux 采用了一种叫“载入/挂载”的处理方法,它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来。
这时要载入的一个分区将使它的存储空间在一个目录下获得。
(3)图解:
硬盘上的一个分区 通过挂载mount机制 与文件系统中的某个目录联系起来
即分区挂载到目录,访问这个目录即访问这个分区
硬盘说明:
(1) Linux 硬盘主要分为:
IDE 硬盘和 SCSI 硬盘
目前基本上是 SCSI 硬盘
(2) 对于 IDE 硬盘,驱动器标识符为“hdx~”
其中“hd”表明分区所在设备的类型,这里是指 IDE 硬盘
“x”为盘号
a 为基本盘 第一个硬盘
b 为基本从属盘 第二个硬盘
c 为辅助主盘 第三个硬盘
d 为辅助从属盘 第四个硬盘
“~”代表分区
前四个分区用数字 1 到 4 表示,它们是主分区或扩展分区,从 5 开始就是逻辑分区
(3) 对于 SCSI 硬盘则标识为“sdx~”
SCSI 硬盘是用“sd”来表示分区所在设备的类型的,其余则和 IDE 硬盘的表示方法一样
--------------------------------------------------------------------
查看分区挂载:lsblk 或者 lsblk -f(更详细内容)
第一列可以看到设备/硬盘分区情况
FSTYPE:文件系统类型
UUID:格式化之后,会给每一个分区分配一个 唯一的 不重复的 40位 的 字符串
MOUNTPOINT:挂载点
13、Linux网络配置
1.ifconfig指令查看Linux虚拟机的ip地址
2.手动指定linux的ip地址,使其不变化(非可视化)。
直接修改配置文件来指定 IP,并可以连接到外网(程序员推荐)
关于网络的配置文件在:/etc/sysconfig/network-scripts/ifcfg-ens33
输入指令:vim /etc/sysconfig/network-scripts/ifcfg-ens33
修改文件内容:
BOOTPROTO="static"
加上:
IPADDR=192.168.200.130 (IP地址,自己设定的)
GATEWAY=192.168.200.2 (网关,自己设定的)
DNS1=192.168.200.2 (域名解析器,自己设定的)
如果用虚拟机:vmnet8和Linux在同一网段上,要能够通信,也要修改相应的vmnet8
vmware--->编辑--->虚拟网络编辑器
打开虚拟编辑器,点击vmnet8,修改下面的子网ip为:192.168.200.0
然后点击NAT设置,将网关改为192.168.200.2
应用确定
输入指令:service network restart 或 reboot 使上述修改生效
13、Linux进程管理
1.基本介绍:
(1)在 LINUX 中,每个执行的程序都称为一个进程。每一个进程都分配一个 ID 号(pid,进程号)。
程序执行之后加载到内存中成为进程。程序是静态的,进程是动态的。
(2)每个进程都可能以两种方式存在:前台与后台
前台进程:是用户目前的屏幕上可以进行操作的。
后台进程:是实际在操作的,但屏幕上无法看到,通常使用后台方式执行。
(3)一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中,直到关机才结束。
--------------------------------------------------------------------
2.ps指令
基本介绍:ps命令是用来查看目前系统中,有哪些进程正在执行,以及它们执行的状况。可以不加任何参数。
ps [选项] Process Status
选项:
-a 显示当前终端的所有进程信息
-u 以用户的格式显示进程信息
-x 显示后台程序运行的参数
一般三个选项一起用:ps -aux
只想查找某一个进程:指令:ps –aux|grep xxx
ps -ef 是以全格式显示当前所有的进程。-e 显示所有进程。-f 全格式。
ps -ef 指令显示内容如下:
UID 用户ID
PID 进程ID
PPID 父进程ID
C CPU 用于计算执行优先级的因子。数值越大,表明进程是 CPU 密集型运算,执行优先级会降低;数值越小,表明进程是 I/O 密集型运算,执行优先级会提高
STIME 进程启动的时间
TTY 完整的终端名称
TIME CPU 使用时间
CMD 启动进程所用的命令和参数
--------------------------------------------------------------------
3.kill和killall指令
若是某个进程执行一半需要停止时,或是已经消耗了很大的系统资源时,此时可以考虑停止该进程。
使用 kill 命令来完成此项任务。
kill [选项] 进程号 (功能描述:通过进程号杀死/终止进程)
killall 进程名称 (使用killall,会将该进程的所有子进程也都删除/终止。)
常用选项:
-9 表示强制终止进程 (系统觉得某个程序重要,可能会屏蔽你的kill指令,这时使用选项-9强制终止进程)
--------------------------------------------------------------------
4.pstree进程树
pstree [选项]
功能:可以更加直观的来看进程信息(树的形式)
常用选项: -p :显示进程的 PID (父进程ID) -u :显示进程的所属用户
--------------------------------------------------------------------
5.服务(service) 本质就是进程,但是是运行在后台的, 通常都会监听某个端口,等待其它程序的请求,比如(mysqld , sshd防火墙等), 因此我们又称为守护进程
(1) service 服务名 [start | stop | restart | reload | status]
start 开启服务
stop 终止服务
restart 重启服务
reload 重载服务
status 查看服务的状态
(2) 在 CentOS7.0 后很多服务不再使用 service指令管理,而是使用 systemctl (后面专门讲)
(3) 还有一些在 /etc/init.d 下的服务仍使用 service 指令管理
请使用 service 指令,查看,关闭,启动 network
指令:
service network status
(4) 查看服务名 setup
(5) Linux 系统有 7 种运行级别(runlevel):常用的是级别 3 和 5,前面有说过
运行级别 0:系统停机状态,系统默认运行级别不能设为 0,否则不能正常启动
运行级别 1:单用户工作状态,root 权限,用于系统维护,禁止远程登陆
运行级别 2:多用户状态(没有 NFS),不支持网络
运行级别 3:完全的多用户状态(有 NFS),无界面,登陆后进入控制台命令行模式
运行级别 4:系统未使用,保留
运行级别 5:X11 控制台,登陆后进入图形 GUI 模式
运行级别 6:系统正常关闭并重启,默认运行级别不能设为 6,否则不能正常启动
开机的流程说明:
(6) chkconfig:
通过 chkconfig 命令可以给服务在 各个运行级别 设置开启自启动/关闭自启动, chkconfig 指令管理的服务在 /etc/init.d 查看
注意: Centos7.0 后,很多服务使用 systemctl 管理
chkconfig 基本语法:
查看服务和服务在各个级别是开启/关闭自启动 (有限,只能查看chkconfig管理下的服务)
chkconfig --list [| grep xxx] (若查找某一个服务使用grep过滤)
chkconfig 服务名 --list
chkconfig --level 5 服务名 on/off 给该服务在5运行级别开启/关闭自启动
chkconfig 重新设置服务后自启动或关闭,需要重启机器 reboot 生效.
(7) systemctl:
基本语法:systemctl [start | stop | restart | status] 服务名
systemctl 指令管理的服务在 /usr/lib/systemd/system 查看
systemctl list-unit-files [ | grep 服务名] (查看服务开机启动状态, grep 可以进行过滤)
systemctl enable 服务名 (设置服务开机自启动)
systemctl disable 服务名 (关闭服务开机自启动)
systemctl is-enabled 服务名 (查询某个服务是否是自启动的)
应用案例:
查看当前防火墙的状况,关闭防火墙和重启防火墙 firewalld.service
查看当前防火墙情况:systemctl status firewalld
关闭防火墙:systemctl stop firewalld
重启防火墙:systemctl start firewalld
注意:关闭或者启用防火墙后,立即生效。
但是 这种方式只是临时生效,当重启系统后,还是回归以前对服务的设置。
如果希望设置某个服务自启动或关闭永久生效
要使用 systemctl [enable|disable] 服务名
(8) firewallld: 防火墙
打开端口: firewall-cmd --permanent --add-port=端口号/协议
通过 netstat -anp | more 指令查看端口号的协议 (more 分页显示)
该指令输出的信息中:
Local Address下是 ip地址:端口号
Proto 是协议 (protocol 协议)
关闭端口: firewall-cmd --permanent --remove-port=端口号/协议
注意:无论是打开端口还是关闭端口,要重新载入才能生效
重新载入:firewall-cmd --reload
查询端口是否开放: firewall-cmd --query-port=端口/协议
(8) top: 动态监控
top 与 ps 命令很相似。 它们都用来显示正在执行的进程。 top 与 ps 最大的不同之处在于: top 在执行一段时间可以更新正在运行的的进程。
top [选项] 选项说明:
top后操作
(9) netstat: 监控网络
基本语法:netstat [选项]
选项说明:
-an 按一定顺序排列输出
-p 显示哪个进程在调用
输入netstat -an | more (more 分页展示)
14、rpm与yum
(1) RPM 是 Red-Hat Package Manager(红帽软件包管理器)的缩写
是一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中。它生成具有.RPM扩展名的文件。
(2) 查询已安装的 rpm软件包 列表:
rpm -qa (查询所安装的所有 rpm 软件包)
rpm -qa | more (分页显示more)
rpm -qa | grep X (过滤,比如 rpm -qa | grep firefox )
rpm -q 软件包名 (查询某个软件包是否安装)
rpm -qi 软件包名 (查询软件包的详细信息)
rpm -ql 软件包名 (查询软件包中的文件和该软件包在哪个文件下)
rpm -qf 文件全路径名 (查询某个文件所属在哪个软件包)
(3) 删除卸载
基本语法:rpm -e 包的名称 //-e erase擦去
注意:
如果其它软件包依赖于您要删除的软件包,删除时则会产生错误信息。
removing these packages would break dependencies:foo is needed by bar-1.0-1
foo软件包被 bar-1.0-1需要,删除foo对barr-1.0-1有影响
如果我们就是要删除 foo 这个 rpm 包,可以增加参数 --nodeps (nodeps 不检查依赖关系 no dependencies),就可以强制删除
(4) 安装
基本语法:rpm -ivh 包全路径名称
选项:
i=install 安装
v=verbose 提示
h=hash 进度条
(5) yum
Yum(全称为 Yellow dog Updater, Modified)是一个 Shell 前端软件包管理器。
基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包。
查询 yum 服务器是否有 需要安装的软件:yum list|grep 软件名
安装指定的软件:yum install 软件名
(6) rpm和yum
rpm 是从本地安装包下载
yum 是从yum服务器下载安装软件
(7) 安装并更改环境变量流程
如安装jdk:1、解压jdk到指定目录下;2、配置环境变量
配置环境变量:
vim /etc/profile
export XX = /usr/... 指定解压目录,别名
export PATH = $XX/bin:$PATH 重定义PATH,后续:$PATH是为了保证原来的指令不被覆盖
source /etc/profile 重载环境变量,使其生效
15、Shell
Shell 是一个命令行解释器,它为用户提供了一个向 Linux 内核发送请求以便运行程序的界面系统级程序,用户可以用 Shell 来启动、挂起、停止甚至是编写一些程序。
Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。是用户使用 Linux 的桥梁.
用户写了一个指令,该指令不能直接发给Linux内核去执行,而是由shell帮我们去执行,执行完之后再通过shell返回给我们结果。
在Linux中不止一种shell,我们常用的是bash。
1.脚本格式要求:
脚本以 #!/bin/bash 开头 --->确定shell的类型
脚本需要有可执行权限。shell脚本文件以.sh结尾,也可以不以.sh结尾
#!/bin/bash
echo "hello,world!" 输出hello world
3.shell脚本的常用执行方式
方式 1:
首先要给shell脚本加x执行权限:chomod u+x hello.sh,再输入该脚本的相对路径或绝对路径来执行该脚本
方式 2:
不用赋予脚本+x 权限,直接执行即可。(使用以下指令,即使没有执行权限也可以执行)
使用指令: sh shell脚本/shell脚本的绝对路径
比如 sh hello.sh
16、Linux日志管理
日志文件是重要的系统信息文件,其中记录了许多重要的系统事件,包括用户的登录信息、系统的启动信息、系统的安全信息、邮件相关信息、各种服务相关信息等。
日志对于安全来说也很重要,它记录了系统每天发生的各种事情,通过日志来检查错误发生的原因,或者受到攻击时攻击者留下的痕迹。
系统日志文件的保存位置:/var/log/ 目录下
系统常用日志:
日志管理服务
CentOS7.6 日志服务是 rsyslogd (rocket-fast system for log)
CentOS6.x 日志服务是 syslogd
rsyslogd 功能更强大,rsyslogd 的使用、日志文件的格式,和 syslogd 服务是兼容的
rsyslogd是一个后台程序(服务),来管理/记录/操作相关日志。
/etc/rsyslog.conf配置文件中记录了要管理哪些日志和将这些日志记录到哪个文件中。
关于日志:*.*
其中第一个*代表日志类型,第二个*代表日志级别
日志类型分为:
auth ##pam 产生的日志
authpriv ##ssh、ftp 等登录信息的验证信息
corn ##时间任务相关
kern ##内核
lpr ##打印
mail ##邮件
mark(syslog)-rsyslog ##服务内部的信息,时间标识
news ##新闻组
user ##用户程序产生的相关信息
uucp ##unix to nuix copy主机之间相关的通信
local 1-7 ##自定义的日志设备
日志级别分为:
debug ##有调试信息的,日志通信最多
info ##一般信息日志,最常用
notice ##最具有重要性的普通条件的信息
warning ##警告级别
err ##错误级别,阻止某个功能或者模块不能正常工作的信息
crit ##严重级别,阻止整个系统或者整个软件不能正常工作的信息
alert ##需要立刻修改的信息
emerg ##内核崩溃等重要信息
none ##什么都不记录
注意:从上到下,级别从低到高,记录信息越来越少
由日志服务 rsyslogd 记录的日志文件,日志文件的内容:每一行都代表一个事件,每一行有以下四个内容:
1) 事件产生的时间
2) 产生事件的服务器的主机名
3) 产生事件的服务名或程序名
4) 事件的具体信息
日志轮替(logrotate)就是当超过容量后,把旧的日志文件移动并改名,同时建立新的空日志文件。可以设置默认保存个数
日志轮替之所以可以在指定的时间备份日志,是依赖系统定时任务。
在 /etc/cron.daily/目录,就会发现这个目录中是有 logrotate 文件(可执行),logrotate 通过这个文件依赖定时任务执行的。
crond定时后台程序会定时执行cron.daily内的文件
内存日志:有一些日志是写到内存里的,还没有写到文件里,因为这些日志是实时变化的。重启之后内存日志会被清空
一些运维工具:webmin,宝塔等。本地管理linux用户,查看内存等操作
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具