linux自学笔记

感谢时光里的各位导师,也感谢互联网让我看到了未曾看到的风景,更感谢我自己的坚强,我将在这不惑之年开启新的征程。与君共勉(2023年11月14日 16:34:35)

一、基础准备

安装VM前确定虚拟化

1、

2、

虚拟机安装

VMware15.5.1软件下载地址:https://download3.vmware.com/software/wkst/file/VMware-workstation-full-15.5.1-15018445.exe

激活密匙:

YG5H2-ANZ0H-M8ERY-TXZZZ-YKRV8
UG5J2-0ME12-M89WY-NPWXX-WQH88
UA5DR-2ZD4H-089FY-6YQ5T-YPRX6

7.6下载地址http://mirror.nsc.liu.se/centos-store/7.6.1810/isos/x86_64/CentOS-7-x86_64-DVD-1810.iso

8.1下载地址

https://mirrors.aliyun.com/centos-vault/8.1.1911/isos/x86_64/CentOS-8.1.1911-x86_64-dvd1.iso?spm=a2c6h.25603864.0.0.59f9234euB4nws

安装步骤省略

网络连接的三种模式

二、系统实操

虚拟机快照

  理解为存档

共享文件夹

安装VMtools可以使windows和centos共享文件夹                                                                                                                                              操作流程操作的时候可用Tab智能填充,需要先输入文件的前几位让系统识别                                             示意图

LINUX目录结构

linux树状目录,linux的目录都是规划好的,每个文件都有固定的作用。linux会把硬件映射成一个文件来管理。

在Linux世界里一切皆文件(!!)    主体结构背下来(必)

远程登录Linux服务器

软件下载网址家庭/学校免费 - NetSarang Websiteicon-default.png?t=N7T8https://www.xshell.com/zh/free-for-home-school/傻瓜式安装

配置文件

出现乱码

vi和vim

vi和vim各个模式的切换图

快捷键

开机重启和用户登录注销

在su - root命令里-的前后都有空格  而且su的密令分很多情况

su 后面不加用户是默认切到 root,不改变当前变量(并没有切换登录用户

su - 是改变为切换到用户的变量

su只能获得root的执行权限,不能获得环境变量

su -是切换到root并获得root的环境变量及执行权限

用户管理

查看当前用户   

        

whomi/who am i

用户组

添加用户组   

       

groupadd 组名

删除用户组  

            

groupdel 组名

增加用户时直接加上组:useradd -g 用户组 用户名

更改用户的组

                    

usermod -g 用户组 用户名

用户

添加用户          

                       

useradd 用户名

在指定文件夹下添加用户

                     

useradd -d /home/文件名 用户名

指定用户密码  

passwd 用户名   回车进行下一步

删除用户

            

userdel 用户名

         

userdel -r 用户名

退回前一个用户             

 logout

当退出到初始登录的账户时候,再次输入logout会登出

ID查询         

                                   

id 用户名

切换用户        

                   

高权限切换低权限不用输入密码,低切高需要密码

三、指令

实用指令

指定运行级别

命令:init[0123456]

systemctl get-default      识别现在是什么界面

改变成级别3多用户有网络

本来系统是直接进入级别5(图形界面),更改设置重启以后会直接进入级别3(多用户有网络)

忘记root密码

详见文档操作,不同版本的操作方式不一样,文档适用于CentOS7以后的

帮助指令

文件目录指令

pwd指令

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

ls指令

基本语法:ls [选项] [目录或是文件]

常用选项

-a:显示当前目录所有的文件和目录,包括隐藏的。

-l:以列表的方式显示信息

-h:显示文件的大小时候带单位

                  文件名以点开头的是隐藏文件

cd指令

基本语法:cd [参数] (功能描述:切换到指定目录)

理解绝对路径和相对路径

cd ~ 或者cd :回到自己的家目录

cd..回到当前目录的上一级目录绝对路径和相对路径的理解示意图

mkdir指令

mkdir指令用于创建目录

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

常用选项

-p :创建多级目录

rmdir指令

rmdir指令删除空目录

touch指令

touch指令创建空文件

cp指令

                         覆盖的文件过多会每一项让你来确定,所以可以用强制覆盖不提醒的办法

rm指令

说明:rm指令移除文件或目录

基本语法:rm【选项】 要删除的文件或目录

常用选项

-r:递归删除整个文件夹

-f:强制删除不提示

mv指令

在同一个文件目录,由cat经过mv指令移动后变成pin,这种操作就叫做重命名(相对路径下)

不在同一文件目录下,所以用绝对路径(个人理解为剪切)

这个是移动并重命名

案例三:移动整个目录

不仅移动,还可以改名

cat指令

cat查看文件内容

 cat -n /etc/profile|more 回车是下一行,空格直接下一页

less指令

查看比较大的文件(内存2G文件4G的时候l)ess是看什么缓存什么,cant是全部缓存进来再看

echo指令

不是很明白,没搞懂,指令的作用是单纯的输出内容到控制台?

head指令

Ctrl+c退出监控模式

tail指令

>指令和>>指令

>输出重定向和>>追加,输出重定向的意思是把原文件里的内容覆盖(先删除再写入),追加是原文件不动,在末尾追加

date>>/home/mycal/ 把当前日期追加到文件末尾

ln指令

history指令

时间和日期

date指令

date指令-显示当前日期

基本语法

1)date                (功能描述:显示当前时间)

2)date +%Y         (功能描述:显示当前年份)

3)date +%m        (功能描述:显示当前月份)

4)date +%d         (功能描述:显示当前是哪一天)

4)date +“%Y-%m-%d%H:%M:%S”         (功能描述:显示年月日时分秒)

时间不对的时候更改时间的用法

cal指令

cal指令用来查看日历

cal带年份是显示全年日历,历年都可以看

搜索和查找类

find指令

locate指令

which指令

可以查看某个指令在哪个目录下,比如ls指令在哪个目录

grep指令

grep指令和管道符号|

找到home文件下hello.txt文件并显示行号,管道给grep找yes的文本在哪并显示

grep查找yes的文本并显示行号,在home目录下的hello.txt文件里查找

grep -r "(参数1)" 参数2

-r代表递归查找,大小写一样。参数1表示要查找的东西,参数二代表路径

grep -r "cat" /home

表示查/home下所有的文本文件内容包含有字符"cat"的文件名

压缩和解压类

gzip/gunzip指令

gzip用于压缩文件,gunzip用于解压

以上操作必须在目录下面,如果不再目录下面需要加上绝对路径

zip/unzip指令

zip用于压缩文件,unzip用于解压文件,这个在项目打包发布中很有用

zip指令-r选项(文件夹及下面的文件)压缩后的文件名是myhome.zip,压缩的文件名是home

unzip指令,解压myhome.zip文件 -d选项(指定存放位置,不写就在zip文件夹解压)写地址

老师的写法是先创建文件夹,语法是先指令后选项  再给需要解压到的路径,最后给需要解压的文件(绝对路径)

tar指令

带绝对引用目录的打包好以后里面是home文件夹,点开里面是两个文件,直接打包两个文件的情况下,点开直接就显示两个文件

先写解压文件(绝对引用),再写解压到的文件路径

C是大写,小写报错(好烦,纠结了十分钟搞不清楚哪错的)

四、组管理和权限管理

linux组基本介绍

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

1.所有者

2所在组

3其他组

4改变用户所在的组

文件/目录所有者

一般为文件的创建者,谁创建了该文件,就自然的成为该文件的所有者

查看文件的所有者

指令:ls -ahl

修改文件所有者

指令:chown 用户名 文件名

组的创建

基本指令:groupadd 组名   

     

我想太复杂了,还加了密码。可以再创建的时候就把fox用户放进组里

老师的写法,很精简

文件/目录 所在组

当某个用户创建了个文件后,这个文件的所在组就是该用户所在的组。
查看文件/目录所在组
基本指令:
Is -ahl
应用实例,使用fox来创建一个文件,看看该文件属于哪个组?
修改文件所在的组
基本指令
chgrp 组名 文件名
应用实例
使用root用户创建文件orange.txt ,看看当前这个文件属于哪个组,然后将这个文件所在组,修改到
fruit组。

其他组/改变用户所在组

除文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组
改变用户所在组
在添加用户时,可以指定将该用户添加到哪个组中,同样的用root的管理权限可以改变某个用户所在的组。
改变用户所在组
1.usermod -g 组名  用户名
2.usermod -d 目录名 用户名 改变该用户登陆的初始目录。特别说明:用户需要有进入到新目录的权限。
应用实例
将zwj这个用户从原来所在组,修改到wudang组。

                    将fox用户修改到武当

(/etc/group文件包含所有组
/etc/shadow/etc/passwd【红色用过,好使】系统存在的所有用户名)

权限的基本介绍

Is -| 中显示的内容如下:
r  w  x   r  w  -   r   -   -  1 root root 1213 Feb 2 09:39 abc                                                                0 1  2  3  4  5  6  7   8  9
0-9位说明
1.第0位确定文件类型(d,-,I,c, b)
    I是链接,相当于windows的快捷方式
    d是目录,相当于windows的文件夹
    c是符设备文件,鼠标,键盘
    b是块设备,比如硬盘
    -是文件
2.第1-3位确定所有者(该这件的所有者)拥有该文件的权限。--User
3.第4-6位确定所属组(同用户组的)拥有该文件的权限, ---Group
4.第7-9位确定其他用户拥有该文件的权限---Other

rwx权限详解

难点

●rwx作用到文件
1. [ r ]代表可读(read):可以读取,查看
2. [ w ]代表可写(write):可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件.
3. [ x ]代表可执行(execute):可以被执行
●rwx作用到目录
1. [ r ]代表可读(read):可以读取, Is查看目录内容
2. [ w ]代表可写(write):可以修改,对目录内创建+删除+重命名目录
3. [ x ]代表可执行(execute):可以进入该目录

文件及目录权限实际案例

●Is -|中显示的内容如下:
-  rwx  rw-  r-- 1 root root 1213 Feb 2 09:39 abc
10个字符确定不同用户能对文件干什么
第一个字符代表文件类型: -Idcb
其余字符每3个一组(rwx) 读(r)写(w)执行(x)
第一组rwx:文件拥有者的权限是读、写和执行
第二组rw- :与文件拥有者同一组的用户的权限是读、写但不能执行
第三组r--:不与文件拥有者同组的其他用户的权限是读不能写和执行
可用数字表示为: r=4,w= 2,x=1因此rwx=4+2+1=7
其它说明
1                                   文件:硬连接数或目录:子目录数
root                               用户
root                               组
1213                             文件大小(字节) ,如果是文件夹,显示4096字节
Feb 2 09:39                  最后修改日期
abc                                文件名

修改权限(chmod)

基本说明:
通过chmod指令,可以修改文件或者目录的权限。
第一种方式:+、-、=变更权限
u:所有者    g:所有组    o:其他人    a:所有人(u、g、o的总和)
1) chmod u=rwx,g=rx,o=x 文件/目录名
2) chmod o+w 文件/目录名
3) chmod a-x 文件/目录名 

案例演示
1)给abc文件的所有者读写执行的权限,给所在组读执行权限,给其它组读执行权限。

chmod u=rwx,g=rx,o=rx abc

2)给abc文件的所有者除去执行的权限,增加组写的权限

chmod u-x,g+w abc

3)给abc文件的所有用户添加读的权限

chmod a+r abc

文件名字变绿色表示被赋予了可执行的权限

第二种方式:通过数字变更权限

r=4 w=2 x= 1          rwx=4+2+1=7

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

相当于chmod 751 文件目录名

案例演示
要求:将/home/abc.txt文件的权限修改成rwxr-xr-x, 使用给数字的方式实现:

chmod 755 /home/abc.txt

修改文件所有者(chown)

●基本介绍
chown newowner(新的所有者) 文件/目录 改变所有者
chown newowner(新的所有者) :newgroup(新的组) 文件/目录 改变所有者和所在组
-R 如果是目录 则使其下所有子文件或目录递归生效

●案例演示
请将/home/abc.txt文件的所有者修改成tom

chown tom /home/abc.txt

请将/home/kkk目录下所有的文件和目录的所有者都修改成tom

chown -R tom /home/kkk

修改文件所在组- chgrp

●基本介绍
chgrp newgroup(新的组) 文件/目录 改变所有组
案例演示
请将/home/abc .txt文件的所在组修改成shaolin (少林)

chgrp shaolin /home/abc .txt

请将/home/kk目录下所有的文件和目录的所在组都修改成shaolin(少林)

chgrp -R shaolin /home/kk

最佳实践

一、警察和土匪游戏

police(警):bandit(匪)
jack, jerry:警察
xh, xq:土匪
1.创建组

groupadd police

groupadd bandit

2.创建用户

useradd -g police jack

useradd -g police jerry

useradd -g bandit xh

useradd -g bandit xq

3. jack 创建一个文件,自己可以读写,本组人可以读,其它组没人任何权限

passwd jack (给予密码)登录后touch创建jjj.txt文件(jack权限不够无法使用touch命令。vimd保存时报错E212)(这个时候创建的文件夹是root的家目录,当然没有权限,需要jack进入自己的家目录再创建文件)

chmod 640 /home/jjj.txt             权限更改完成(这里jack的权限可以更改)

4. jack 修改该文件,让其它组人可以读,本组人可以读写

chmod 664 /home/jjj.txt         权限更改完成

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

先切换root用户,usermod -g police  xh     xh更改用户组(普通用户没有权限更改用户组)

切换xh用户,cat /home/jjj.txt 可以看  vim /home/jjj.txt 可以写

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

二、课后练习(师徒四人)

练习文件权限管理[课堂练习],完成如下操作。
1.建立两个组(神仙(sx),妖怪(yg) )      root用户下

groupadd sx              groupadd yg

2.建立四个用户(唐僧悟空,八戒,沙僧)      root用户下

useradd -g sx 唐僧            useradd -g sx 沙僧

useradd -g yg 八戒            useradd -g yg 悟空

3.设置密码      root用户下

passwd指令指定四人密码

4.把悟空,八戒放入妖怪唐僧沙僧在神仙

第二步已完成

先创建帐号以后用usermod -g 组名 用户名一个个的改

5.用悟空建立- 个文件( monkey.java该文件要输出i am monkey )      悟空用户下

vim monkey.java     输出i am monkey

6.给八戒个可以r w的权限      悟空用户下

chmod 760 monkey.java

悟空创建的文件在自己的家目录,家目录的权限需要开放给同一组的人,所以需要切换至悟空用户把/home/下的家目录开放权限

7.八戒修改monkey.java 加入- -句话( i am pig)    八戒用户下

vim monkey.java 进入后添加 i am pig

或者使用   echo  "内容">>文件    追加

8.唐僧 沙僧对该文件没有权限

在6的时候给予其他组的权限是0

9.把沙僧放入妖怪组    root用户下

usermod -g yg 沙僧

10.让沙僧修改该文件monkey,加入一句话("我是沙僧,我是妖怪!");    沙僧用户下

vim monkey.java 进入后添加我是沙僧,我是妖怪

或者使用   echo  "内容">>文件    追加

11.对文件夹rwx的细节讨论和测试!!

有x(执行权限)                表示可以进入到该目录,比如cd

有r-x(读和执行权限)       表示可以s ,将目录的内容显示

有rwx(读写执行权限)     表示可以在该目录,删除或者创建文件

三、课后练习

1.用root登录 ,建立用户mycentos,自己设定密码

useradd mycentos         创建用户

passwd mycentos          给予密码

2.用mycentos登录 ,在主目录下建立目录test/t11/t1

cd /home/mycentos/

mkdir -p test/t11/t1

3.在t1中建立一个文本文件aa,用vi编辑其内容为Is -al

cd test/t11/t1  

vim aa.txt   回车后输入Is -al

4.改变aa的权限为可执行文件可以将当前日期追加到一个文件],运行该文件./aa

chmod 777 aa.txt 

date>>aa.txt

5.删除新建立的目录test/t11/t1

rm -r test

6.删除用户mycentos及其主目录中的内容

userdel -r mycentos

7.将linux设置成进入到图形界面的

init 5

8.重新启动linux或关机

shutdown -h now  关机      shutdown -r now  重启

五、定时任务调度

crond任务调度

crontab进行定时任务的设置

●概述
任务调度:是指系统在某个时间执行的特定的命令或程序。
任务调度分类: 1.系统工作:有些重要的工作必须周而复始地执行。如病毒扫描等
个别用户工作:个别用户可能希望执行某些程序,比如对mysq|数据库的备份。

●基本语法
crontab [选项]
常用选项
-e              编辑crontab定时任务
-l               查询crontab任务
-r               删除当前用户所有的crontab任务

设置任务调度文件: /etc/crontab
1、设置个人任务调度。执行crontab e命令。
2、接着输入任务到调度文件
如: */1 * * * * Is-I /etc/ > /tmp/to.txt
意思说每小时的每分钟执行ls -I /etc/ > /tmp/to.txt命令

参数细节说明
5个占位符的说明

应用实例

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

*/1 * * * * date >>/tmp/mydate

案例2 :每隔1分钟,将当前日期和日历都追加到/home/mycal文件中

1、先写脚本vim /home/my.sh 写入date>>/home/mycal和cal>>/home/mycal

2、给ym.sh增加执行权限,chmod u+x /home/my.sh(chmod 744 /home/my.sh)

3、crontab -e增加*/1 * * * * /home/my.sh

案例3:每天凌晨2:00将mysql数据库testdb,备份到文件中。提示:指令为
mysqldump -u root -p密码数据库>> /home/db.bak

1)crontab -e

2)0 2 * * * mysqldump -u root -proot  >>  /home/db.bakt (>>是追加>是覆盖,看情况使用)

crond相关指令
conrtab -r :终止任务调度
crontab - :列出当前有那些任务调度
service crond restart  [重启任务调度]

at定时任务

●基本介绍
1.at命令是一次性定时计划任务,at的守护进程atd会以后台模式运行,检查作业队列来运行。
2.默认情况下, atd守护进程每60秒检查作业队列,有作业时,会检查作业运行时间,如果时间与当前
时间匹配,则运行此作业。
3.at命令是一次性定时计划任务,执行完一个任务后不再执行此任务 了
4.在使用at命令的时候 ,一定要保证atd进程的启动,可以使用相关指令来查看

ps -ef(检测当前运行的进程有哪些)            grep(过滤)

ps -ef | grep atd  //可以检测atd是否在运行

●at命令格式
at [选项] [时间]
Ctrl + D结束at命令的输入   Ctrl + D需要按两次

●at命令选项

选项                                                   含义
-m                                    当指定的任务被完成后,将给用户发送邮件,即使没有标准输出
-I                                      atq的别名
-d                                     atrm的别名
-V                                     显示任务将被执行的时间
-c                                      打印任务的内容到标准输出
-V                                     显示版本信息
-q <队列>                        使用指定的队列
-f <文件>                         从指定文件读入任务而不是从标准输入读入
-t <时间参数>                  以时间参数的形式提交要运行的任务

●at时间定义
at指定时间的方法:
1.接受在当天的hh:mm (小时:分钟)式的时间指定。假如该时间已过去,那么就放在第二天执行。例如:04:00
2.使用midnight (深夜) , noon (中午) , teatime (饮茶时间,一般是下午4点)等比较模糊的词语来指
定时间。
3.采用12小时计时制,即在时间后面加上AM(上午)或PM(下午)来说明是上午还是下午。例如: 12pm
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 (明天)来指定完成命令的时间。

●应用实例
案例1 : 2天后的下午5点执行/bin/ls /home

at 5pm + 2days 回车后

/bin/ls /home  输入完按ctrl+D两次

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

案例3 :明天17点钟,输出时间到指定文件内比如/root/date100.log

at 5pm+1days (时间写法多种多样,老师是at 5pm tomorrow )

date > /root/date100.log

案例4 : 2分钟后,输出时间到指定文件内比如/root/date200.log

at now + 2 minutes

date >> /root/date200.log

案例5 :删除已经设置的任务, atrm编号

六、linux分区

分区的基本原理

●原理介绍
1. Linux来说无论有几个分区 ,分给哪目录使用 ,它归根结底就只有一 个根目录,一个独立且唯一的文件结构,Linux中每个分区都是用来组成整个文件系统的一部分。
2. Linux采用了一 种叫“载入”的处理方法,它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来。这时要载入的一个分区将使它的存储空间在一个目录下获得。
3.示意图

●硬盘说明
1. Linux硬盘分IDE硬盘和SCSI硬盘 ,目前基本上是SCSI硬盘
2.对于IDE硬盘 ,驱动器标识符为"hdx~" ,其中"hd"表明分区所在设备的类型,这里是指IDE硬盘了。“x"为盘号( a为基本盘, b为基本从属盘, c为辅助主盘, d为辅助从属盘),“~”代表分区,前四个分区用数字1到4表示,它们是主分区或扩展分区,从5开始就是逻辑分区。例, hda3表示为第一个IDE硬盘上的第三个主分区或扩展分区,hdb2表示为第二个IDE硬盘上的第:二个主分区或扩展分区。
3.对于SCSI硬盘 则标识为"sdx~" , SCSI硬盘是用"sd"来表示分区所在设备的类型的,其余则和IDE硬盘的表示方法一样。

●查看设备挂载情况

命令:lsblk 或者 lsblk -f

UUID:分区40位唯一标识符

挂载的经典案例

说明:
下面我们以增加一块硬盘为例来熟悉下磁盘的相关指令和深入理解磁盘分区、挂载、卸载的概念.

如何增加一块硬盘
1.虚拟机添加硬盘
2.分区
3.格式化
4.挂载
5.设置可以自动挂载

具体操作看另一篇文章

磁盘情况查询

●查询系统整体磁盘使用情况
基本语法
df -h
应用实例
查询系统整体磁盘使用情况

●查询指定目录的磁盘占用情况
基本语法
du -h /目录
查询指定目录的磁盘占用情况,默认为当前目录
-S指定目录占用大小汇总
-h带计量单位
-a含文件
- max-depth=1子目录深度
-C列出明细的同时,增加汇总值

应用实例
查询/opt目录的磁盘占用情况,深度为1

磁盘情况工作实用指令

第0位确定文件类型(d,-,I,c, b)
    I是链接,相当于windows的快捷方式
    d是目录,相当于windows的文件夹
    c是符设备文件,鼠标,键盘
    b是块设备,比如硬盘
    -是文件

1.统计/opt文件夹下文件的个数(正则表达式是个什么东西)

ll /opt | grep "^-" | wc -l

 2.统计/opt文件夹下目录的个数

ll /opt | grep "^d" | wc -l

3.统计/opt文件夹下文件的个数,包括子文件夹里的

ls -lR /opt | grep "^-" | wc -l

 ls -lR (用于递归列出该目录下的所有文件)

      -l 以列表的形式显示

      -R(全称:Recursive 表示递归),递归即逐层深入,在linux命令中-R选项都是递归作用

4.统计/opt文件夹下目录的个数,包括子文件夹里的

ls -lR /opt | grep "^d" | wc -l

5.以树状显示目录结构   

tree 目录

注意,如果没有tree,则实用yum install tree安装

七、网络配置

画出原理图,帮助理解

查看网络IP和网关

●查看虚拟网络编辑器和修改IP地址

查看网关

查看windows环境的中VMnet8网络配置(ipconfig指令)

查看linux的网络配置ifconfig

ping测近主机之间网络连通性
基本语法
ping 目的主机 (功能描述:测试当前服务器是否可以连接目的主机)
应用实例
测试当前服务器是否可以连接百度
ping www.baidu.com

长ping的关闭指令是Ctrl+c

linux网络环境配置

●第一种方法(自动获取) :
说明:登陆后,通过界面的来设置自动获取ip ,特点: linux启动后会自动获取IP,缺点是每次自动获取的
ip地址可能不一样。

●第二种方法(指定ip):
说明
直接修改配置文件来指定IP,并可以连接到外网(程序员推荐)
编辑 vim /etc/sysconfig/network-scripts/ifcfg-ens33
要求:将ip地址配置的静态的,比如: ip地址为192.168.200.130

ifcfg-ens33文件说明

DEVICE= eth0                                    #接口名(设备,网卡)
HWADDR-00:0C:2x:6x:0x:xx                 #MAC地址
TYPE= Ethernet                                 #网络类型(通常是Ethemet )
UUID-926a57ba-92c6-4231- bacb-f27e5e6a9f44 #随机id
#系统启动的时候网络接口是否有效( yes/no )
ONBOOTEyes
# IP的配置方法[none|static|bootp|dhcp] (引导时不使用协议|静态分配IP|BOOTP协议|DHCP协议)
BOOTPROTO=static
#IP地址
IPADDR=192.168.200.130
#网关
GATEWAY=192.168.200.2
#域名解析器
DNS1=192.168.200.2

重启网络服务或者重启系统生效
service network restart  、reboot

(网络这块听了两遍还是似懂非懂先放着)

设置主机名和hosts映射

设置主机名
1.为了方便记忆,可以给linux系统设主机名,也可以根据需要修改主机名
2. 指令hostname :查看主机名
3.修改文件在 /etc/hostname指定
4.修改后, 重启生效

修改主机名:vim /etc/hostname

设置hosts映射

思考:如何通过主机名能够找到(比如ping)某个linux系统?
windows
在C:\Windows\System32\drivers\etc\hosts文件指定即可
案例: 192.168.200.130 hspedu100

当我们在ping主机(hsp)他可以到hosts文件中找对应主机名对应的IP地址

linux
在/etc/hosts文件指定
案例: 192.168.200.1 ThinkPad-PC

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

●Hosts是什么
一个文本文件,用来记录IP和Hostname(主机名)的映射关系
DNS
1.DNS ,就是Domain Name System的缩写,翻译过来就是域名系统
2.是互联网上作为域名和IP地址相互映射的一个分布式数据库

●应用实例:用户在浏览器输入了www.baidu.com
1.浏览器先检查浏览器缓存中有没有该域名解析IP地址,有就先调用这个IP完成解析;如果没有,就检查DNS解析器缓存,如果有直接返回IP完成解析。这两个缓存,可以理解为本地解析器缓存
2.一般来说,当电脑第一次成功访问某一网站后,在一定时间内,浏览器或操作系统会缓存他的IP地址( DNS解析记录) .如在cmd窗口中输入
ipconfig /displaydns                     //DNS域名解析缓存
ipconfig /flushdns                        //手动清理dns缓存
3.如果本地解析器缓存没有找到对应映射,检查系统中hosts文件中有没有配置对应的域名IP映射,如果有,则完成解析并返回。
4.如果本地DNS解析器缓存和hosts文件中均没有找到对应的IP ,则到域名服务DNS进行解析域

八、进程管理(重点)

基本介绍
1.在LINUX中 ,每个执行的程都称为一个进程。每一个进程都分配个ID号(pid,进程号)。=>windows=>linux
2.每个进程都可能以两种方式存在的。 前台与后台,所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行。
3.一 般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才才结束。

显示系统执行的进程

ps命令

●基本介绍
ps命令是用来查看目前系统中,有哪些正在执行,以及它们执行的状况。可以不加任何参数.
ps显示的信息选项:
字段                                   说明
PID                             进程识别号
TTY                            终端机号
TIME                          此进程所消CPU时间
CMD                          正在执行的命令或进程名
ps-a:显示当前终端的所有进程信息
ps -u:以用户的格式显示进程信息
ps -X:显示后台进程运行的参数

ps详解

1. 指令:ps -aux | grep xxx,比如我看看有没有sshd服务

ps -aux | grep sshd

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

父子进程

要求:以全格式显示当前所有的进程,查看进程的父进程 。查看sshd的父进程信息
ps -ef是以全格式显示当前所有的进程
-e显示所有进程。-f全格式
ps -ef | grep sshd
是BSD风格
UID :用户ID
PID :进程ID
PPID : 父进程ID
C : CPU用于计算执行优先级的因子。数值越大,表明进程是CPU密集型运算,执行优先级会降低,数值越小,表明进程是I/O密集型运算,执行优先级会提高
STIME :进程启动的时间
TTY :完整的终端名称
TIME : CPU时间
CMD :启动进程所用的命令和参数

终止进程

终止进程kill和killall
介绍:
若是某个进程执行一半需要停止时 ,或是已消了很大的系统资源时,此时可以考虑停止该进程。使用kill命令来完成此项任务。
基本语法
kill [选项]进程号(功能描述:通过进程号杀死/终止进程)
killall进程名称( 功能描述:通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢
时很有用)
常用选项
-9 :表示强迫进程立即停止
最佳实践
案例1 :踢掉某个非法登录用户

先去查询用户的进程号,然后kill

案例2:终止远程登录服务sshd,在适当时候再次重启sshd服务

kill sshd对应的进程号;上面的图片已经显示了,是7790      kill 7790

重启sshd服务的指令:/bin/systemctl start sshd.service

案例3:终止多个gedit

使用指令:killall gedit     这个命令还支持通配符

案例4 :强制杀掉一个终端

ps -aux | grep bash 查看终端的进程号

kill -9 进程号                 强制执行,要明白在干什么

查看进程树

●基本语法
pstree [选项] ,可以更加直观的来看进程信息
常用选项
-p :显示进程的PID
-u :显示进程的所属用户
●应用实例:
案例1 :请你树状的形式显示进程的pid  pstree -p
案例2 :请你树状的形式进程的用户id    pstree -u

服务管理

●介绍:
服务(service)本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如(mysqld, sshd防火墙等),因此我们又称为守护进程,是Linux中非常重要的知识点。

[原理图]

service管理指令

1. service 服务名[start| stop | restart | reload | status]  启动|停止|重启|重载|查看状态
2.在CentOS7.0后很多服务不再使用service ,而是systemctl (后面专门讲)
3. service 指令管理的服务在/etc/init.d查看

service管理指令案例
请使用service指令, 查看,关闭,启动network [注意:在虚拟系统演示,因为网络连接会关闭

service network status

查看服务名

方式1 :使用setup ->系统服务就可以看到全部。

setup

方式2:/etc/init.d看到service指令管理的服务

ls -l /etc/init.d

服务的运行级别(runlevel):

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

开机的流程说明 :

●CentOS7后运行级别说明
在/etc/initab
进行了简化, 如下:
multi-user.target:                                       analogous to runlevel 3
graphical.target:                                        analogous to runlevel 5

# To view current default target, run:        systemctl get- default

                                                                    当前的运行级别是什么

# To set a default target,run:                     systemctl set-default TARGET.target

                                                                       运行TARGET级别

chkconfig指令

介绍
1.通过chkconfig命令可以给服务的各个运行级别设置自启动/关闭
2.chkconfig指令管理的服务在/etc/init.d查看
3.注意: Centos7.0后,很多服务使用systemctl管理(后面马上讲)

chkconfig基本语法
查看服务chkconfig --list [| grep xxx]
chkconfig 服务名 --list
chkconfig --level 5 服务名 on/off

案例演示:对network服务进行各种操作

使用细节
chkconfig重新设置服务后自启动或关闭,需要重启机器reboot生效.

systemctl管理指令

1.基本语法: systemctl [start | stop | restart| status] 服务名

                                    启动 |停止  |重启,重载|查看状态

2. systemctl指令 管理的服务在/usr/lib/systemd/system查看

ls -l /usr/lib/systemd/system | grep fire

=> firewalld.service

systemctl设置服务的自启动状态
1. systemctl list-unit-files [ | grep服务名] (查看服务开机启动状态,grep可以进行过滤)
2. systemctl enable服务名(设置服务开机启动)
3. systemctl disable服务名(关闭服务开机启动)
4. systemctl is-enabled服务名(查询某个服务是否是自启动的)
应用案例:
查看当前防火墙的状况,关闭防火墙和重启防火墙。
systemctl status firewalld; systemctl stop firewalld; systemctl start firewalld
细节讨论:
1.关闭或者启用防火墙后,立即生效。[telnet 测试某个端口即可]
2.这种方式只是临时生效,当重启系统后,还是回归以前对服务的设置。
3.如果希望设置某个服务自启动或关闭永久生效 ,要使用systemctl [enable|disable] 服务名

firewall指令

打开或者关闭指定端口

在真正的生产环境,往往需要将防火墙打开,但问题来了,如果我们把防火墙打开,那么外部请求数据包就不能跟服务器监听端通讯。这时,需要打开指定的端口。需要用到firewall指令

示意图

firewall指令

打开端口: firewall-cmd --permanent --add-port=端口号/协议
关闭端口: firewall-cmd --permanent --remove-port=端口号/协议
重新载入才能生效: firewall-cmd --reload
查询端口是否开放: firewall-cmd --query-port=端口/协议

netstat -anp |more  可以查询端口和协议(以上几条协议工作中用的比较多

应用案例:

1.启用防火墙,测试111端口是否能telnet

不行

2.开放111端口

firewall-cmd --permanent - add-port=111/tcp ;需要firewall-cmd --reload

3.再次关闭111端口

firewall-cmd --permanent --remove-port=111/tcp ;需要firewall-cmd --reload

(#添加使用 --permanent选项表示设置成永久生效,需要重新启动firewalld服务或执行firewall-cmd --reload命令。)

top指-令动态监控进程

介绍 :
top与ps命令很相似。它们都用来显示正在执行的进程。Top与ps最大的不同之处 ,在于top在执行一段时间可以更新正在运行的的进程。

基本语法

top [选项]

●选项说明:

选项                                          功能
-d秒数                         指定top命令每隔几秒更新。默认是3秒
-i                                  使top不显示任何闲置或者僵死进程。
-P                                通过指定监控进程ID来仅仅监控某个进程的状态。

top命令显示信息之谜 - 知乎Linux top命令用来显示系统的状态:cpu、内存、io、进程。 top - 22:04:37 up 13 days, 17:26, 2 users, load average: 0.45, 0.68, 1.06 Tasks: 85 total, 1 running, 83 sleeping, 0 stopped, 1 zombie %Cpu(s):…icon-default.png?t=N7T8https://zhuanlan.zhihu.com/p/91843204

交互操作说明:
操作                                功能
P                         以CPU使用率排序,默认就是此项
M                        以内存的使用率排序
N                        以PID排序
q                         退出top

应用实例
案例1.监视特定用户,比如我们监控tom用户
top :输入此命令,按回车键,查看执行的进程。
u:然后输入"u"回车,再输入用户名,即可,

案例2 :终止指定的进程,比如我们要结束tom登录
top :输入此命令,按回车键,查看执行的进程。
k:然后输入"k"回车,再输入要结束的进程ID号
案例3:指定系统状态更新的时间(每隔10秒自动更新),默认是3秒
top -d 10

监控网络状态

查看系统网络情况netstat

基本语法
netstat [选项]

选项说明
-an按定顺序排列输出
-p显示哪个进程在调用
应用案例
请查看服务名为sshd的服务的信息。

netstat -anp | grep sshd

检测主机连接命令ping :
是一种网络检测工具,它主要是用检测远程主机是否正常,或是两部主机间的网线或网卡故障。如: ping对方ip地址

九、rpm包的管理

介绍
rpm用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中。它生成具有.RPM扩展名的文件。RPM是RedHat Package Manager ( RedHat软件包管理工具)的缩写,类似windows的
setup.exe ,这一 文件格式名称虽然打上了RedHat的标志,但理念是通用的。

Linux的分发版本都有采用( suse,redhat, centos等等),可以算是公认的行业标准了。

rpm包的简单查询指令

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

rpm包名基本格式
一个rpm包名: firefox- 60.2.2-1.el7.centos.x86 64
名称:firefox
版本号: 60.2.2-1
适用操作系统: el7.centos.x86 64
表示centos7.x的64位系统
如果是i686、i386表示32位系统,noarch表示通用。

rpm包的其它查询指令:
rpm -qa :查询所安装的所有rpm软件包
rpm -qa | more
rpm -qa | grep X [rpm -qa | grep firefox ]

rpm -q软件包名:查询软件包是否安装
案例: rpm -q firefox

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


rpm -qI 软件包名:查询软件包中的文件
比如: rpm -ql firefox

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


rpm -qf /root/instal.log

卸载rpm包:
基本语法
rpm -e RPM包的名称 //erase
应用案例
删除firefox软件包,
rpm -e firefox
细节讨论
1.如果其它软件包依赖于您要卸载的软件包 ,卸载时则会产生错误信息。
如:$ rpm-e foo
removing these packages would break dependencies:foo is needed by bar 1.0-1
1.如果我们就是要删除 foo这个rpm包,可以增加参数--nodeps ,就可以强制删除,但是一般不推荐这样做,因为依赖于该软件包的程序可能无法运行
如: $ rpm -e --nodeps foo

安装rpm包
基本语法
rpm -ivh RPM包全路径名称
参数说明
i=install                 安装
v=verbose            提示
h=hash                 进度条
应用实例
演示卸载和安装firefox浏览器

yum

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

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

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

yum应用实例:
案例:请使用yum的方式来安装firefox

到此为止基础篇已经看完,剩余的视频会进行了解,太过深奥的会对新手不太友好

  • 28
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux学习笔记是关于学习Linux操作系统的记录和总结。在学习Linux时,你可能会遇到以下几个方面的内容。 首先,Linux是一个面向网络服务的操作系统,因此你可以随意更换桌面系统。Linux有多种不同的桌面系统供你选择。这意味着你可以根据自己的喜好和需求,选择适合自己的桌面环境。 其次,在Ubuntu中,root用户默认是被锁定的,因此你无法直接使用root权限进行操作。但是,你可以使用sudo命令来提升权限,以执行需要root权限的操作。通过sudo命令,普通用户可以在需要时暂时获得root权限,以便进行需要的操作。 此外,如果你需要修改内核为bash,可以使用vim编辑器打开/etc/passwd文件进行修改。在Linux系统中,vim是一种常用的文本编辑器,类似于Windows的记事本。通过编辑/etc/passwd文件,你可以修改用户的登录shell为bash。 总结起来,Linux学习笔记记录了学习Linux操作系统的过程和经验,包括选择适合自己的桌面环境、使用sudo提升权限以及通过vim编辑器修改/etc/passwd文件等。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Linux学习笔记](https://blog.csdn.net/m0_65379736/article/details/125700177)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值