Linux学习笔记

1 Linux入门

1.1 概述

Linux内核最初只是芬兰人Linux Torvalds在赫尔辛基大学上学时处于个人爱好而编写的。

Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。Linux能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承 了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

目前市面上较出名的发行版有:Ubunta、RedHat、CentOS,Debain、Fedora、SuSE、OpenSUSE。

1.2 Linux和Windows区别

1.3 CentOs下载地址

网易镜像:https://mirrors.163.com/centos/7/isos/

搜狐镜像:https://mirrors.sohu.com/centos/7/isos/

或者从官网下载镜像:Index of /

例如:网易镜像下载CentOS7.9版本的镜像(该路径下一般会更新为该系列版本的最高版):Index of /centos/7/isos/x86_64/

例如:官网下载CentOS7.6版本的镜像:Index of /7.6.1810/isos/x86_64

2 在VM中安装Linux系统

2.1 Linux 系统安装过程

选自定义:

选稍后安装

选择Linux 和对应的版本

为虚拟机命名并新建一个文件夹用于存放Liunx系统实例:

查看任务管理器中本机的CPU核数,选择适当的个数:

查看本机内存,为虚拟机选择合适的内存:

这里一定选择使用桥接网络,后面可以设置固定IP地址(服务器最后是可以IP地址固定):

这里选择合适的磁盘大小:

新建个文件夹作为该Linux实例的磁盘文件:

完成

完成后,相当于基于VMware软件,模拟了一套上面配置情况的硬件,接下来基于这些虚拟的硬件的机器上,要通过CD加载ISO镜像文件来安装Linux系统(镜像文件就是前面下载好的CentOS-7.9):

加点并安装配置CentOS

很不幸,加点开启虚拟机后,我的非正版win10系统出现了蓝屏,网上试了几种建议都无效,看来是因为我的破解的VMware 16 汉化版虚拟机和本机win10系统不兼容,接下来重装其他版本的VMware试试。

重新从官网下载最新版本的VMware workstation 17:VMware - Delivering a Digital Foundation For Businesses

百度激活码激活后打开VMware,发现自动识别了之前安装的CentOS-0304虚拟机,然后加点安装如下:

磁盘分区:

(1)主分区 /

(2)boot

(3)swap 交换分区

配置网络和主机名

配置好上面的配置后,点击安装开始安装:

安装过程中,可以设置Root的密码:

重启后,要输入root的密码继续:

问题来了,由于前面的软件选择没有选择桌面,所以Liunx系统没有安装可视化桌面程序:

接下来尝试再安装一个带桌面的Linux系统,过程同上,不同点如下:

这次终于有界面了:

接受许可证,先不创建用户。

这里输入密码“roots589985”一定要记得

成功:

查看发现,VMware Tools 工具已经一起安装好了,低版本的需要手动安装VMware Tools 工具。

2.2 本机与Linux系统共享文件

(1)Window本机新建一个共享文件夹,用于存放要共享的文件

(2)在VM中设置

然后在Linux中的我的电脑中:

在路径 mnt/hgfs/0305/* 下可以找到window共享文件夹下共享的文件:

2.3 安装secureCRT

安装准备好后,双击scrt8.1.3文件运行安装:

默认第一个(所有用户)即可,也可以选择当前用户

自定义安装

安装完成后,用注册机破解:

2.4 安装FinalShell

(1)官网下载: SSH工具 SSH客户端

(2)下载完后正常安装,过程中要求安装依赖软件,按说明安装就可以

(3)更改下载路径

(4)远程连接Linux服务器

双击打开

(5)从Linux系统下载文件到本机

(6)从win本机上传文件到Linux

3 Linux启动和加载顺序

3.1 有问题我问谁

(1)man 你不会用的命令

enter 键查看下一行

空格键翻页看

按“q”退出

(2)man pages手册页数字说明:

  1. 用户在shell环境中可以操作的命令或可执行的命令
  2. 系统内核(kernel)可以调用的函数
  3. 常用的函数或函数库
  4. 设备配置文件
  5. 配置文件的格式
  6. 游戏相关
  7. Linux 网络协议和文件系统
  8. 系统管理员可以用的命令
  9. 跟内核有关系的文件

(3)具体命令 --help

(4)info 具体命令

注:不常用

3.2 6个终端

Ctrl + Alt + F1/F2 ....../F6 切换到命令行界面

Ctrl + Alt + F7 回到图形化界面

who 命令查看有几个tty连接着

注:不同的系统版本,用上面的快捷键切换的启动级别可能不同。

如本机:

Ctrl + Alt + F2

Ctrl + Alt + F3

Ctrl + Alt + F4

Ctrl + Alt + F5

Ctrl + Alt + F6

Ctrl + Alt + F1 切换回图形化界面

查看当前连接情况:

注:输入“exit”退出命令行界面:

退出后状态:

运用实务:如果图形化界面卡死后,就可以切换到命令行界面杀掉相应的进程,再切换到图形化界面工作。

例如:在图形化界面编辑一个文本,突然卡死了;

然后Ctrl + Alt + F2/F3/......F6 切换到命令行界面,kill掉相应的程序;

然后 Ctrl + Alt + F1 切换回图形化界面,发现卡机的进程被杀掉了,系统可以继续操作了:

3.3 Linux的七个启动级别

3.3.1 系统启动流程

  • 计算机加电
  • 开机自检(BIOS)
  • MBR主引导记录
  • Grub菜单
  • 加载内核

在加载内核这一步会读取操作系统的运行级别

centos7系统表面是有”运行级别“这个概念,实际上是为了兼容以前的系统 每个所谓的”运行级别“都有对应的软连接指向,默认的启动级别是/etc/systemd/system/default.target 根据他的指向可以知道系统要进入哪个模式

3.3.2 systemd 与 init 简介

(1)init

init 进程是系统启动的第一个进程, PID号为 1.

init进程的从它开始启动,到下一个程序开始,都是以一个进程结束再进行另一个进程的方式(串行)

这样做的显而易见的缺点就是执行速度慢,没有一整套的系统来管理

并且/ect/目录下的随便一个脚本简直长的发指

关机过程差不多是相反的过程,首先init停止所有服务,最后阶段会卸载文件系统。

(2)于是systemd诞生了

  • systemd是有Redhat的一个员工首先提出来

(3)systemd

centos7启动的第一个程序systemd, PID号为0

Systemd 系统管理守护进程

systemd几乎完全兼容传统的SysV init 系统

作用: 减少系统引导时间与计算开销

Systemd引入了并行启动的概念

它在内核启动后,服务器什么的全部被systemd接管, 内核只是用来管理硬件资源,相当于内核被架空了

3.3.3 系统启动级别

⛅运行级别 0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动

⛅运行级别 1:单用户工作状态,root权限,用于系统维护,禁止远程登陆

⛅运行级别 2:多用户状态(没有NFS)

⛅运行级别 3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式

⛅运行级别 4:系统未使用,保留

⛅运行级别 5: X11控制台,登陆后进入图形GUI模式

⛅运行级别 6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动

3.3.4 如何设置默认启动级别

  • 现在很多Linux系统都默认启动等级为5。如果我们想切换系统等级,可使用init命令。

(注:切换成功后也相当于重启过)

(1)从启动级别5切换到级别3

注:5 3 :表示从启动级别5切换到启动级别3

(2)从启动级别3切换到级别5

直接回车切换到图形化界面

  • 这样就可以切换到多用户状态且带有网络文件系统了, 这种方式对于CentOS7也适用
  • 但想修改默认启动级别,Centos 7同其他Linux稍显不同了。

centos6是通过修改 /etc/inittab来修改默认运行级别的

在centos7下运行cat /etc/inittab 结果如下:


注:可以看到,里面除了注释,什么也没有,并没有centos6中设置默认运行级别的方式。但注释告诉了我们 启动级别 3(多用户) 和 启动级别 5(图形化操作界面) 的使用。以及用 targets 替代 runlevels, 即Centos 7采用加载targets的方式替代之前的启动级别。

3.3.5 Centos 7 启动级别文件及文件路径

  • 在命令行输入 ls /usr/lib/systemd/system/

3.3.6 启动级别设置命令

  • 查看当前默认启动的 target

  • 设置默认启动的 target

# systemctl set-default multi-user.target #设置多用户状态

注:输入用户密码,认证两遍,然后确定后如下

#systemctl set-default graphical.target #修改为图形界面状态

注:用用户密码,认证两遍,非root密码

3.3.7 运行级别对应表

init级别

target

0

shutdown.target

1

emergency.target

2

rescure.target

3

multi-user.target

4

系统未,使用保留

5

graphical.target

6

reboot.target

3.4 Linux 系统启动过程

  1. 内核引导

接通电源BIOS自检,按照BIOS中设置的启动设备(通常是硬盘)来启动,操作系统接管硬件以后,首先读入 /root 目录下的内核文件。

  1. 运行init(runlevel)

init进程是所有进程的起点,有它唤起其它进程工作,init 进程首先是需要读取配置文件/etc/inittab

  1. 系统初始化

在init的配置文件中有这么一行:si:sysinit:/etc/rc.d/rc.sysinit 它调用执行了/etc/rc.d/rc.sysinit, 而rc.sysinit 是一个bash shell的脚步,它主要是完成一些系统的初始化的工作,rc.sysinit 是每个运行级别都要首先运行的重要脚本。它主要完成的工作有: 激活交换分区,检查磁盘,加载硬件模块已经其它一些需要优先执行的任务。

  1. 建立终端

6 个终端

  1. 用户登录系统

一般来说,用户登陆方式有三种:

(1)命令行登录

(2)ssh登录

(3)图形界面登录

3.5 关机

正确的关机流程:sync --> shutdown --> reboot -->halt

(1)关机前,执行sync 将数据有内存同步到硬盘中

(2)关机与重启

shutdown -h 10 计算机将在10分钟后关机,会显示到登录用户的当前屏幕中。

注:要使用root用户才可以执行此关机命令,其它一般关机命令不需要

shutdown -h now 立马关机

shutdown -r now 系统立马重启

reboot 重启,等同于 shutdown -r now

halt 关闭系统, 等同于 shutdown -h now 和 poweroff

注:不管是关机还是重启,首先要运行sync将数据写到磁盘中。

3.6 重置和修改密码

(1)没有忘记自己的密码,进行修改

1、修改root密码

执行:passwd root, 按照提示输入新的密码两次。

2、以root身份修改一般用户的密码

执行:passwd username, 按照提示输入新的密码两次。(username是要更改密码的用户名)

(2)忘记root用户密码,重置root密码

进入CentOS7 紧急模式恢复root密码

1、开机之后,三秒内,在内核上按↑↓键,选择第一项按下 e键,然后编辑选项

2、按↑↓键找到ro,将红框内的内容改成 :rw init=/sysroot/bin/sh

3、改完之后,按下 Ctrl+X 进入紧急求援模式,依次输入以下的命令

注:两个空红线那里是输入新密码的地方,新密码输入两次。

命令说明:

# chroot /sysroot //进入系统的根目录

# passwd //重置密码

# touch /.autorelabel //创建文件,让系统重新启动时能够识别修改

# exit //退出chroot模式

# reboot //重启系统

重启之后,就ok,我这里selinux是关闭的。

注意:执行passwd命令修改密码,如果系统的selinux开启着,则需要执行命令:touch /.autorelabel 以

更新系统信息,否则重启之后密码修改不会生效。如果没有开启,则不需要执行 touch命令。

4 Vim 编辑器

4.1 是什么

VI是Unix操作系统和类Unix操作系统中最通用的文本编辑器。

VIM编辑器是从V1从发展出来的一个性能更强大的文本编辑器。可以主动的以文字颜色辨别语法的正确性,方便程序设计。VIM与VI编辑器完全兼容。目前使用比较多的是vim编辑器.

vim可以说是程序开发者的一项很好用的工具。连vim的官方网站(https://www.vim.org)自己也说vim是一个程序开发工具而不是文字处理软件。

4.2 三种模式

(1)一般模式(默认)

键盘上下左右 移动光标

yy 复制光标当前一行

y数字y 复制一段(从第几行到第几行)

y (shift + $) 复制当前光标到结尾的字符串

p 箭头移动到目的行粘贴(粘贴到光标之后)

u 撤销上一步

dd 删除光标当前行

d数字d 删除光标(含)后多少行

x 剪切一个字母,相当于del (光标所在字母)

X 剪切一个字母,相当于Backspace (光标前面字母)

yw 复制一个词(复制从光标及后面的字母,所以一般放在单词首字母)

dw 删除一个词(删除从光标及后面的字母,所以一般放在单词首字母)

shift+^ 移动到行头

shift+$ 移动到行尾

gg 移动到页头

shift+g 移动到页尾

数字+shift+g 移动到目标行

(2)编辑模式

i/I 在当前光标前插入(进入编辑模式)

a/A 在当前光标后插入(进入编辑模式)

o/O 新起下一行插入(进入编辑模式)

esc 退出编辑模式到一般模式

(3)指令模式

在一般默认中,输入【: / ?】 3个中的任何一个按钮,就可以进入指令模式,光标会移动到最底下那一行。在命令模式下,可以查询、读取、存盘、大量取代字符、离开vi、显示行号等动作。

:w

保存

:q

退出

:wq

保存并退出

:q!

不保存强制退出

:wq! 保存编辑并退出 (w 表示写入,q 表示退出, !表示强制执行)

:%s/old/new/g 替换 (old是原来内容,new表示新内容)

/被查找的词 查找 (回车查找后,n是查找下一个, shift + n 是查找上一个)

?被查找的词 查找(回车查找后,n是查找下上一个, shift + n 是查找下一个)

相关命令:

  1. 一般模式下查看文件:vim + 文件名
  2. 显示文件行号: 一般模式下输入“:set nu”
  3. 不显示行号:一般模式下输入“:set nonu”

5 用户与用户组

5.1 用户

新增用户:useradd 用户名

对用户设置密码:passwd 新建用户名

用户存在否:id 用户名

查看当前用户:whoami/who am i

查看所有连接的用户终端:who

切换用户:su - 用户名

删除用户:userdel

修改用户:usermod

例如:

问题:当切换回root用户后尝试删除li4 用户,发现不能删除, 提示该用户正在被别的进程使用。

分析:

1、linux是多用户系统,root用户具有最高权限,只有root用户才能创建和删除用户,其他用户无此权限。

2、普通用户之间可以使用su随意进行切换(无需输入密码),但是普通用户向root用户切换时,需要输入root的登陆密码。

3、当我们想删除某个用户的时候,出现 user xxx is currently used by process xxx,可能的原因是你创建用户li4 之后,使用su命令切换到 li4 用户下,之后又想删除 li4 用户,使用su root切换到root用户下,使用userdel li4 。出现上述情况的根本原因在于切换回root用户之后,li4 还被某个进程占用。

解决方案一:ctrl+d(退出当前用户)

第一次使用ctrl+d退出root用户,回到 li4 用户;第二次使用ctrl+d退出 li4 用户,此时会返回到root用户(再按ctrl+d退出登陆连接),此时使用userdel li4 正常删除。

解决方案二:把对应的进程杀了再删。

解决方案三:加入“-f”选项强制删除, 使用命令“userdel -f li4”

思考:如果使用“userdel li4”命令删除用户后,其实只是删除了该用户,但相关的文件档案没有一并删除,用“man userdel”命令可以查看包括那些档案。也可以查看 /home 目录,发现 li4 用户的文件夹仍然存在:

如果需要将用户的相关文件档案一并删除,需要加入“-r”选项,使用“userdel -r li4”命令:

5.2 用户组

新建组:groupadd 组名

删除组:groupdel 组名

修改组名(涉及的东西比较多,一般不建议使用):groupmod -n 新组名 旧组名

5.3 新建与修改用户

修改用户:usermod -g 用户组 用户名

注:删除用户组之前一定要先删除组中的用户,否则用户组无法删除

新建用户并加入组:useradd -g 用户组 用户名

5.4 与用户账号有关的系统文件

完成用户管理的工作有许多中方法,但是每一种方法实际上都是对有关的系统文件进行修改。与用户和用户组相关的信息都存放在一些系统文件中。执行“man userdel”命令可以看到一些文件, 这些文件包括:

/etc/passwd

/etc/shadow

/etc/group

(1) /etc/passwd

分析:“li4:x:1001:1003::/home/li4:/bin/bash

以“:”作为分隔符,从左到右依次表示:

  1. 用户名:li4 (一般不超8个字符,大小写字母或数字组成,不能有(:)冒号、(.)字符、(-)号,(+)号)
  2. 密码(口令):x (许多Linux系统都使用了shadow技术,把加密后的口令放到了/etc/shadow文件中,这里用x或*表示)
  3. 用户标识号: 1001 (范围是0-65535,0是超级用户root的标识号,1-99由系统保留,作为管理账号,普通用户从100开始)
  4. 组标识号:1003 (对应着/etc/group文件中的一条记录)
  5. 注释性描述:(这里为空)
  6. 主目录:/home/li4
  7. 登录Shell:/bin/bash

(2)/etc/shadow

格式:

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

(3)/etc/group

格式:

组名:口令:组标识号:组内用户列表

可以用如下命令查看组中的用户:

6 常用操作命令

6.1 时间日期类

6.1.1 时间基本语法

date [option] + [format]

date -s 日期时间 设置日期时间

date + “日期时间格式” 指定显示时使用的日期

时间常用命令:

date (显示当前时间)

date +%F (2023-03-16)

date +%Y (年)

date +%m (月)

date +%d (日)

date +%H (时)

date +%M (分)

date +%S (秒)

date “+%Y-%m-%d %H:%m:%S”

date +%Y-%m-%d' '%H:%M:%S

date +%s 查看时间戳

date -d “-1 hours ago” 一个小时后的时间

例如:

ntpdate -u ntp1.aliyun.com 同步时间

date -s "2022-06-19 20:52:22" 设置系统当前时间

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值