linux学习
一.介绍
1.概述
linux的读法不下10种
linux是一个开源的操作系统,操作系统包括mac、windows、安卓等
linux的开发版:Ubuntu(乌班图)、RedHat(红帽)、CentOS
linux的应用:linux在服务器领域的应用是最强的,其它还有嵌入式
2.linux和Unix
unix是B语言写的
linux是在unix的基础上用C写的
3.安装vmware
基本说明:学习linux需要一个环境,我们需要创建一个虚拟机,然后在虚拟机上安装一个Centos系统来学习
vm官网:https://www.vmware.com/cn.html
安装需要:去BIOS里修改设置开启虚拟化设备支持(重启然后按f2、f12、DEL、ESC等键)
4.安装centos
步骤:
- 创建虚拟机
- 开始安装系统
手动分区可以分三个:/boot(1GB)、swap(交换分区,2GB)、根分区(17GB)
5.三种网络连接方式
①桥接模式:和外界的同一个网段的可以连接,容易造成IP冲突(网段:IP的前7位,如192.168.0)
②NAT模式(网络地址转换):不造成IP冲突
③主机模式:独立的系统,不能外部连接
二、虚拟机的功能
1.虚拟机克隆
如果你已经安装了一个linux操作系统,且想要更多的,就可以克隆虚拟机
方式一:拷贝虚拟机文件到另一地址,在用VMware创建一个虚拟机
方式二:用VMware克隆功能,使用前要关闭linux系统(创建完整克隆就是拷贝文件)
2.虚拟机快照
VMware提供了快照管理的功能(右键虚拟机系统可以看到),可以在系统出现问题时回到之前的状态
实例:
- 安装系统后,先做一个快照A
- 到系统后,创建一个文件夹,再做一个快照B
- 回到快照A
- 回到快照B
3.虚拟机的迁移与删除
虚拟系统本质就是文件
要迁移虚拟机就只需将文件剪切或拷贝到其它地址
删除可以先用VMware移除,再在电脑中将文件删除就可以了,或者直接在电脑中删掉
4.vmtools
介绍:
- vmtools安装后,可以让我们在windows下更好的管理vm虚拟机
- 可以设置windows和centos的共享文件夹
安装:
- 进入centos
- 点击vm的菜单的->install vmware tools
- centos会出现一个vm的安装包,xx.tar.gz
- 拷贝到/opt
- 使用解压命令tar,得到一个安装文件(在终端中使用cd /opt进入opt目录,使用tar -zxvf xx.tar.gz命令解压)
- 安装:./vmware-install.pl
- 全部使用默认设置即可
- 注意:安装vmtools需要有gcc(gcc -v显示gcc版本)
共享文件夹的方式:
三、linux的目录结构
1.结构介绍
基本介绍:
- linux的文件系统是采用树状目录结构的,在此结构中的最上层是根目录"/",然后在此目录下再创建其他的目录
- 在linux的世界里,一切皆文件
2.目录详解
/bin[常用]:是binary的缩写,这个目录存放着最经常使用的命令
/sbin:s是Super User的意思,这里存放的是系统管理员使用的系统管理程序
/home[常用]:存放普通用户的目录,在linux中每个用户都有一个自己的目录,一般该目录名是用户的账号名
/root[常用]:该目录为系统管理员,也称为超级权限者的用户主目录
/lib:系统开机所需要的最基本的动态连接共享库,其作用类似于Windows里的DLL文件,几乎所有的应用程序都需要用到这些共享库
/lost+found:这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件
/etc[常用]:所有的系统管理所需要的配置文件和子目录
/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):是一个安全字系统,它能控制系统只能访问特定文件,有三种工作模式,可以自行设置
四.linux实操
1.远程登录
linux服务器是开发小组共享的,正式上线的项目是运行在公网
linux-Xshell6是最好的远程登录到linux操作的软件
Xshell还是一个强大的安全终端模拟软件
2.远程文件传输
Xftp是一个基于Windows平台的功能强大的SFTP、FTP文件传输软件
Windows用户能安全地在linux和Windows之间传输文件
3.vi和vim
linux系统内置vi文本编辑器
Vim具有程序编辑的能力,可以看做是vi的增强版本
vi和vim常用的三种模式
①一般模式:以vim打开一个档案就可以进入一般模式
②插入模式:按下i,o,a,r等任何一个字母后才会进入编辑模式,一般来说按i
③命令行模式:输入esc+":"切换到命令行模式,在这个模式中,可以提供你相关指令,完成读取、存盘、替换、离开vim等操作
各种模式的相互切换:
4.vim快捷键
拷贝当前行(一般模式):输入yy,拷贝当前行下的第五行:5yy
粘贴:p
删除当前行:输入dd,删除当前行下的第五行:5dd
在文件中查找某个单词[命令行下/关键字,回车查找,输入n就是查找下一个]
打开文件的行号,关闭文件的行号:[命令行下::set nu和:set nonu]
快速到文件末尾或开头:G和GG
撤销动作(一般模式):u
快速定位某一行:20(行号),再输入shift+g
5.开机重启
命令:
shutdown -h now:立刻关机
(默认)shutdown -h 1:“hello,1分钟后会关机了”
shutdown -r now:立刻重启
halt:关机
reboot:重启
sync:把内存的数据同步到磁盘上
注意事项:
- 不管是重启系统还是关闭系统,建议先运行sync命令
- 目前的shutdown等命令均已在关机前使用sync,但是小心驶得万年船
6.用户登录和注销
基本介绍:
- 登录时尽量少用root账号登录,避免操作失误。可以用普通用户登录,后用su - 用户名,来切换成系统管理员身份
- 在提示符下输入logout即可注销用户
使用细节:logout在图形运行级别无效,在运行级别3下才有效
五.用户管理
1.添加用户/删除用户
基本语法:useradd 用户名
添加一个a用户,a用户的家目录在/home/a
useradd -g 组名 用户名:创建一个用户并加入到指定组中
细节说明:
- 添加用户后,会自动添加家目录
- 也可以通过useradd -d 指定目录 新的用户名,给新创建的用户指定家目录
基本语法:userdel 用户名(高权限才能删除低权限)(默认保留家目录)
删除用户但同时删除家目录(谨慎):userdel -r 用户名
2.指定/修改密码
基本语法:passwd 用户名
显示当前用户所在目录:pwd
3.切换用户
基本语法:su - 用户名
细节说明:
- 从权限高的用户转换到权限低的用户,不需要输入密码
- 当需要返回到原来用户时,使用exit/logout指令
4.查询用户信息
命令:id 用户名(若用户不存在,则返回无此用户)
查询当前用户信息:whoami(显示第一次登录的用户的信息)
5.用户组
介绍:类似于角色,系统可以对有共性/权限的用户进行统一的管理
命令:
- 新增组:groupadd 组名
- 删除组:groupdel 组名
- 增加用户时直接加上组:useradd -g 用户组 用户名、
- 修改用户的组:usermod -g 用户组 用户名
用户和组相关文件
/etc/passwd文件:用户的配置文件,记录用户的各种信息
每行的含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录shell(其中注释性描述等不一定会有)
/etc/shadow文件:口令的配置文件
每行的含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
/etc/group文件:组的配置文件,记录linux包含的组的信息
每行含义:组名:口令:组标识号:组内用户列表
六.常用指令
1.运行级别
基本介绍:
0:关机
1:单用户[找回丢失密码]
2:多用户状态没有网络服务
3:多用户状态有网络服务
4:系统未使用保留给用户
5:图形界面
6:系统重启
常用运行级别是3和5,也可以指定默认运行级别
切换运行级别的命令:init [0123456]
查看运行级别:systemctl get-default
设置默认运行级别:systemctl set-default 运行级别
2.找回root密码
- 重启系统: 首先,重新启动你的Linux系统。
- 进入引导加载程序(boot loader): 在系统启动时,按下适当的键(通常是Esc、Shift或者按下某个功能键),进入引导加载程序的菜单。具体键位取决于你的系统和引导加载程序(如GRUB或LILO)。
- 编辑启动选项: 进入引导加载程序菜单后,找到并选择启动Linux的选项(通常是带有Linux版本号的选项),按下 e 键进入编辑模式。
- 修改内核启动参数: 在编辑模式下,找到以 linux 开头的行(可能是以 linux 或 kernel 开头),并且找到 ro 或者 root= 参数。
- 修改root参数: 将 ro 修改为 rw,并在 root= 参数后面添加 init=/bin/bash 或者 init=/bin/sh,然后按下 Ctrl + X 或者相应的键来启动。
- 进入单用户模式: 系统将启动为单用户模式,此时你会看到一个命令行提示符(通常是 #)。这时候文件系统是以读写(read-write)方式加载的,你可以进行修改。
- 更改root密码: 使用以下命令更改root用户的密码:passwd root,然后按照提示输入新密码并确认。
- 重新启动系统: 密码修改完成后,使用 reboot 命令重新启动系统:reboot
- 恢复引导加载程序设置: 在系统重新启动后,确保恢复引导加载程序的原始设置(将 ro 修改回 rw 等)。这样可以保证系统在下次启动时正常运行。
3.帮助指令
获取帮助信息:man [命令或配置文件]
如:查看ls命令的帮助信息:man ls
在linux下,隐藏文件是以.开头,选项可以组合使用:比如ls -al,比如:ls -al/root
命令:help 命令(获得shell内置命令的帮助信息)
4.文件目录类
pwd:显示当前工作目录的绝对路径
ls [选项] [目录或是文件]
常用选项:
-a:显示当前目录所有的文件和目录,包括隐藏的
-l:以列表的方式显示信息
cd [参数]:切换到指定目录
如果参数是~:则回到家目录
如果参数是…:回到当前目录的上一级
mkdir [选项] 创建的目录名:创建指定的目录(默认只能创建单级目录)
若选项是-p:则创建多级目录
rmdir [选项] 要删除的空目录
如果要删除有内容的文件夹:rm -rf 目录,如:rm -rf /home/a
touch 文件名称:创建一个空文件
cp [选项] 目标文件 目标目录:拷贝文件到指定目录
选项:-r:递归复制整个文件夹
强制覆盖不提示的方法:\cp,如:\cp -r /home/bbb/ /opt/
rm [选项] 要删除的文件或文件夹
常用选项:
-r:递归删除整个文件夹
-f:强制删除不提示
mv 旧目录 新目录:将文件移动
mv 旧文件名 新文件名:将文件重命名
将文件移动并改名如:mv /opt/bbb /home/ccc
cat [选项] 要查看的文件:查看文件内容
若选项为-n:则显示行号
注意:cat只能浏览不能修改,比较安全,为了浏览方便,一般会带上管道命令:| more
如:cat -n /etc/profile | more(进行交互)
more指令:一个基于VI编辑器的文本过滤器,more指令中内置了许多快捷键
less指令是用来分屏查看文件内容的,类似于more但比more更强大,支持各种显示终端,less在显示文件内容时,并不是一次将整个文件加载后才显示,而是根据显示需要加载内容,对于大型文件具有较高的效率
快捷键:
echo [选项] 输出内容:echo输出内容到控制台
head 文件:查看文件头10行内容
head -n 5 文件:查看文件头5行内容
tail:类似于head
特殊:tail -f 文件:实时追踪该文档的所有更新
>指令和>>指令
>输出重定向和>>追加
基本语法:
- ls -l > 文件:将列表的内容覆盖到文件中
- ls -al >> 文件:列表的内容追加到文件的末尾
- cat 文件1 > 文件2:将文件1的内容覆盖到文件2中
- echo “内容” >> 文件:将内容追加到文件中
ln -s 源文件或目录 软连接名:给原文件创建一个软连接
软连接是一种特殊的文件,它包含了对另一个文件或目录的引用。与硬链接不同,软连接创建了一个指向目标文件或目录的路径引用,而不是直接指向文件数据块
因为是一个文件,所以删除也可以用rm指令
注意:当我们使用pwd指令查看目录时,仍然看到的是软连接所在目录
history:查看系统执行过的历史命令
查看最近十个指令:history 10
执行历史指令为5的指令:!5
5.时间日期类
date指令:
- date:显示当前时间
- date +%Y:显示当前年份
- date +%m:显示当前月份
- date +%d:显示当前天份
- date “+%Y-%m-%d %H:%M:%S”:显示年-月-日 时:分:秒
- date -s 字符串时间:设置系统当前时间,如:date -s “2024-1-1 00:00:00”
注意:字母严格区分大小写
cal [选项]:不加选项,显示本月日历
若选项为数字:则显示年日历
6.查找指令
find 搜索范围 [选项]
选项说明:
案例:
- find /home -name hello.txt
- find /opt -user root | more
- find / -size +200M(+n大于,-n小于,n等于,单位有k,M,G)
locate指令可以快速定位文件路径,locate指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件
语法:locate 文件
特别说明:第一次运行前,必须使用updatedb指令
which指令:可以查看某个指令在哪个目录下
如:which ls
grep [选项] 查找内容 源文件
常用选项:
管道符号|,表示将前一个命令的处理结果输出传递给后面的命令处理
如:cat /home/a.txt | grep -n “a”
7.压缩和解压
gzip/gunzip指令:压缩和解压
基本语法:
①gzip 文件:只能压缩成.gz文件
②gunzip 文件
zip/unzip指令:压缩和解压
基本语法:
①zip [选项] 压缩文件名 文件名
②unzip [选项] XXX.zip
zip常用选项:-r,递归压缩,即压缩目录
unzip常用选项:-d <目录>,指定解压后文件的存放目录,不写就是解压到当前文件夹
案例:
zip -r a.zip /home/:将home文件都压缩成a.zip
unzip -d /opt/tmp /home/a.zip:将a.zip解压到/opt/tmp目录下
tar [选项] XXX.tar.gz 打包的内容:打包目录,压缩后的文件格式是.tar.gz
选项说明:
七.组管理和权限管理
1.linux组的基本介绍
在linux中每个用户必须属于一个组
linux中每个文件有所有者、所在组、其它组的概念:
- 所有者:指定了文件的创建者或所有者。所有者可以对文件进行读取、写入和执行等操作,具体权限取决于文件的权限设置
- 所在组:除了所有者之外,每个文件还可以分配一个所在组。组成员具有与组相关联的权限,这些权限通常是与文件的所有者不同的
- 其它组:除了所有者和所在组之外的所有用户属于其它组。其它组成员对文件具有的权限,也是与所有者和所在组成员的权限不同的
2.所有者
一般为文件的创建者
查看文件的所有者的指令:ls -ahl
修改文件所有者:chown 用户名 文件名
3.所在组
组的创建:groupadd 组名
查看文件所在组:查看文件的所有者的指令也会显示文件的所在组,就跟在所有者后面
其它指令:ls -l 文件名
输出结果比如说:-rw-r–r-- 1 owner group 0 Jun 20 12:00 文件名
修改文件所在组:chgrp 组名 文件名
4.改变用户所在组
在添加用户时,可以将指定的用户添加到组中, 同样的用root的管理权限可以改变用户的所在组
指令:
- usermod -g 新组名 用户名
- usermod -d 目录名 用户名:改变该用户登录的初始目录(用户需要有进入到新目录的权限)
5.rwx权限
上面的输出结果-rw-r–r-- 1 owner group 0 Jun 20 12:00 文件名:
0-9位说明:
第0位确定文件类型(d,-,l,c,b):
-:普通文件
l:链接文件,相当与Windows的快捷方式
d:目录,相当于Windows的文件夹
c:字符设备文件,鼠标,键盘
b:块设备,比如硬盘
第1-3位确定所有者(该文件的所有者)拥有该文件的权限
第4-6位确定所属组(同用户组的)拥有该文件的权限
第7-9位确定其它用户拥有该文件的权限
rwx权限详解
rwx作用到文件:
- r代表可以read,可以读取和查看
- w代表可以write,可以修改,但不代表可以删除该文件,删除一个文件的前提是对该文件所在的目录有写权限,才能删除该文件
- x代表execute,可以被执行
rwx作用到目录:
- r:可以读取,可以ls查看目录内容
- w:可以修改,对目录内创建文件+删除文件+重命名目录
- x:可以进入该目录,即cd
案例说明
-rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc:
这是-(普通)文件
所有者的权限是rwx
所在组的权限是rw
其它者的权限是r
1是文件数和子目录数的总和
第一个root是用户
第二个root是组
1213是文件大小(字节),如果是文件夹,则显示4096
Feb 2 09:39是修改时间
abc是文件名
6.修改权限
通过chmod指令,可以修改文件或者目录的权限
第一种方式:±=变更权限:
u:所有者,q:所有组,o:其他人,a:所有人(u、g、o的总和)
案例:
1)chmod u=rwx,g=rx,o=x 文件/目录名
2)chmod o+w 文件/目录名
3)chmod a-x 文件/目录名
第二种方式:通过数字变更权限:
r=4,w=2,x=1,rwx=4+2+1=7
chmod u=rwx,g=rx,o=x 文件/目录名相当于chmod 751 文件/目录名
7.修改文件所有者和所在组
chown(change owner) 新所有者 文件/目录名:改变所有者
chown 新所有者:新组 文件/目录名:改变所有者和所在组
-R:递归,使其下所有子文件或目录递归生效
chgrp 新组 文件/目录:改变所在组
也有-R
八.定时任务调度
1.crond入门
概述:
任务调度:是指系统在某个时间执行的特定的命令或程序
任务调度分类:系统工作(如病毒扫描),个别用户工作
基本语法:
crontab [选项]
常用选项:
案例:
设置任务调度文件:/etc/crontab
设置个人任务调度,执行:crontab -e
接着输入任务到调度文件,如:* 1 * * * * ls -l /etc/ > /tmp/a.txt
意思是每分钟执行ls -l /etc/ > /tmp/a.txt命令
5个占位符的说明:
特殊符号的说明:
特殊时间执行案例:
crontab相关指令:
- crontab -r:终止任务调度
- crontab -l:列出任务调度
- service crond restart:重启任务调度
2.at任务调度机制
at命令时一次性定时计划任务,at的守护进程atd会以后台模式进行,检查作业队列来运行
默认情况下,atd守护进程每60秒检查作业队列,有作业时,会检查作业运行时间,如果时间与当前时间匹配,则运行此作业
注意:在使用at命令的时候,要先保证atd进程的启动
检查atd是否启动的命令:ps -ef | grep atd
at命令格式:at [选项] 时间
两次输入ctrl+D结束at命令的输入
atq命令可以看系统中正在队列的命令
atrm 任务编号:删除正在队列中的命令
常用选项:
at指定时间的方法:
案例:
2天后的下午5点执行/bin/ls指令 /home:at 5pm + 2 days然后回车输入/bin/ls /home然后ctrl+D两次
九.linux磁盘分区、挂载
1.磁盘分区机制
linux归根结底就只有一个根目录
linux采用了叫载入(mount)的处理方法,它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来。这时要载入的一个分区将使它的存储空间在一个命令下获得
查看所有设备挂载情况:lsblk或lsblk -f
硬盘说明:
- linux硬盘分IDE硬盘和SCSI硬盘,目前主要是SCSI硬盘
- 对于IDE硬盘,驱动器标识符为hdx,其中hd表示分区所在设备的类型,这里是指IDE硬盘。x为盘号(a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘),表示分区,前四个分区用数字1到4表示,它们是主分区或拓展分区,从5开始就是逻辑分区
- 对于SCSI硬盘的标识sdx~,SCSI的sd是设备类型,其余和IDE硬盘的表示方法一样
2.增加磁盘
增加虚拟机硬盘操作:
①虚拟机添加硬盘
②分区
③格式化
④挂载
⑤设置乐意自动挂载
步骤1:
- 在虚拟机菜单中,选择设置,然后设备列表里添加硬盘,然后一路【下一步】,中间只有选择磁盘大小的地方需要修改,直至完成,然后重启系统
步骤2:
- 分区命令fdisk /dev/sdb
- 进入分区后,m:显示命令列表,p:显示磁盘分区同fdisk -l,n:新增分区,d:删除分区,w:写入并退出
- 说明:输入n,新增分区,然后选择p,分区类型为主分区,两次回车默认剩余全部空间。最后输入w写入分区并退出,若不保存退出输入q
步骤3:
- 分区命令:mkfs -t ext4 /dev/sdb1(其中ext4是分区类型)
步骤4:
- 挂载:将一个分区和一个目录联系起来,mount 设备名称 挂载目录:建立联系
- unmount 设备名称 或者 挂载目录:卸载联系
- 注意:用命令行挂载,重启后会失效
步骤5:
- 永久挂载:通过修改/etc/fstab实现挂载
- 添加完成后,执行mount -a立刻实现