Linux
Linux
参考
[韩顺平一周学会Linux](【【小白入门 通俗易懂】2021韩顺平 一周学会Linux】 https://www.bilibili.com/video/BV1Sv411r7vd/?p=28&share_source=copy_web&vd_source=72700974488313ca2dbc27bc0ae377e9 )
<鸟哥的 Linux 私房菜 基础学习篇(第四版)>
Linux 是一个开源、免费的操作系统,其稳定性、安全性、处理多并发已经得到业界的认可,目前很多企业级的项目都会部署到 Linux/Unix 系统上
Linux 基础
目录结构
基本介绍
- Linux的文件系统是采用 级层式的树状目录结构,在此结构中的最上层是根目录 “/”,然后在此目录下再创建其他的目录
- 深刻理解 Linux 树状文件目录是非常重要的
- 在 Linux 的世界里,一切皆文件
具体的目录结构
/bin [常用] (/usr/bin 、/usr/local/bin )
是 Binary 的缩写,这个目录存放着最经常使用的命令
/sbin (/usr/sbin、/usr/local/sbin)
s 就是 SuperUser 的意思,这里存放的是系统管理员使用的系统管理程序
/home [常用]
存放普通用户的主目录,在 Linux 中每个用户都有一个自己的目录,一般目录名是以用户的账户命名。
/root [常用]
该目录为系统管理员,也称为 超级权限者的用户主目录
/etc
系统主要的配置文件
/lib
系统开机所需的最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库
/lost + found
这个目录一般是空的 ,当系统非法关机后,这里就存放一些文件
/usr [常用]
这是一个非常重要的目录,用户的很多程序和文件都放在这个目录下,类似于 Windows 下的program files 目录
/boot [常用]
存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及 镜像文件
/proc [不能动]
这个目录是一个虚拟的目录,他是系统内存的映射,访问这个目录来获取系统信息
/srv [不能动]
service 缩写,该目录存放一些服务器启动以后需要提取的数据
/sys [不能动]
这是 Linux 2.6 内核的一个很大的变化。该目录下安装了 2.6内核中 新出现的一个文件系统 sysfs => [不能动]
/tmp
这个目录是用来存放一些临时文件的
/dev
类似于 Windows 的设备管理器,把所有的硬件用文件的方式存储
/media [常用]
Linux 系统会自动识别一些设备,例如 U盘,光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下面
/mnt [常用]
系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将外部的存储挂载在 /mnt/ 上,然后进入该目录就可以查看里面的内容了 d:/myshare
/opt
这是给主机额外的安装软件所存放的目录
/usr/local [常用]
这是另一个给主机额外安装软件所安装的目录,一般是通过编译源码方式安装的程序
/var [常用]
这个目录中存放着在不断扩充着的东西,习惯将经常被修改的目录放在这个目录下。包括各种日志文件
/selinux [security-enhanced linux]
SELinux 是一种安全子系统,他能控制程序只能访问特定文件,有三种工作模式,可以自行设置
Linux 实操
远程登录到 Linux 服务器
略
Vi 和 Vim
Vi 和 Vim 的基本介绍
Linux 系统会内置 Vi 文本编辑器
Vim 具有程序编辑的能力,可以看做是 Vi 的增强版本,可以主动的以字体颜色辨别语法的正确性,方便程序设计。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序中广泛使用
Vi 和 Vim 常用的三种模式
正常模式
以 Vim 打开一个档案就直接进入一般模式了(这是 默认的模式)。在这个 模式中,你可以使用【上下左右】按键来移动光标,你可以使用 【删除字符】或【删除整行】来处理档案内容,也可以使用【复制、粘贴】 来处理你的文件数据
插入模式
按下 i、I、o、O、a、A、r、R 等任何一个字母才会进入编辑模式,一般来说按 i 即可。
命令行模式
输入 esc 再输入:在这个模式当中,可以提供你相关指令,完成读取、存盘、替换、离开 vim 、显示行号等的动作 则是在此模式中达成 的。
Vi 和 Vim 的基本使用
各种模式的相互切换
Vi 和 Vim 的快捷键
- 拷贝当前行yy,拷贝当前行向下的5行5yy,并粘贴(输入p)。
- 删除当前行 dd,删除当前行向下的5行5dd
- 在文件中查找某个单词[命令行下/关键字,回车查找,输入n就是查找下一个]
- 设置文件的行号,取消文件的行号[命令行下:setnu和:setnonu]
- 编辑/etc/profile文件,在一般模式下,使用快捷键到该文档的最末行[G]和最首行[gg]
- 在一个文件中输入”hello”,在一般模式下,然后又撤销这个动作 u
- 编辑 /etc/profile文件,在一般模式下,并将光标移动到,输入20,再输入shift+g
- 更多的看整理的文档
快捷键的键盘对应图
开机、重启和用户 登录注销
关机 & 重启命令
基本介绍
- shutdown - h now 立刻进行关机
- shutdown - h 1 一分钟后就会关机
- shutdown -r now 现在重新启动计算机
- halt 关机,作用和上面一样
- reboot 现在重新 启动计算机
- sync 把内存的数据同步到磁盘
注意细节
- 不管是重启系统还是关闭系统,首先要运行 sync 命令,把内存中的数据写到磁盘中
- 目前的 shutdown/reboot/halt 命令均已经在进行了 sync
用户登录和注销
基本介绍
- 登录时尽量少用 root 账号登录, 因为他是系统管理员,最大的权限,避免操作失误。可以利用普通用户登录,登录后再用 “su - 用户名” 命令来切换成系统管理员身份
- 在提示符下输入 logout 即可注销用户
使用细节
- logout 注销指令在图形运行级别无效,在运行级别 3 下有效
用户管理
基本介绍
Linux 系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统
添加用户
基本用户
useradd 用户名
细节说明
- 当创建用户成功后,会自动的创建和用户同名的家目录
- 也可以通过 useradd -d 指定目录 新的用户名,给新创建的用户指定家目录
指定/修改密码
基本语法
passwd 用户
删除用户
基本语法
userdel 用户名
查询用户信息指令
基本语法
id 用户名
细节说明
当用户不存在时,返回无此用户
切换用户
介绍
在 操作 Linux 中,如果当前用户的权限不够,可以通过 su - 指令,切换到高权限用户,比如 root
基本语法
su - 切换用户名
细节说明
- 从权限高的用户切换到权限低的用户,不需要输入密码,反之需要
- 当需要返回到原来用户时,使用 exit/logout 指令
查看当前用户/登录用户
基本语法
whoami / who am I
用户组
介绍
类似于角色,系统可以对有公共性/权限 的多个用户进行统一的管理
新增组
指令 : groupadd 组名
删除组
指令(基本语法): groupdel 组名
修改用户的组
指令(基本语法):usermod -g 用户组 用户名
用户和组相关文件
/etc/passwd 文件
用户(user)的配置文件,记录用户的各种信息
每行的含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录 Shell
/etc/shadow 文件
口令的配置文件
每行的含义 : 登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
/etc/group 文件
组(group)的配置文件,记录Linux 包含的 组的信息
每行含义: 组名:口令:组标识号:组内用户列表
实用指令
指定运行级别
基本介绍
运行级别说明:
- 0 : 关机
- 1 :单用户【找回丢失密码】
- 2 :多用户状态没有网络服务
- 3 : 多用户状态有网络服务
- 4 : 系统未使用保留给用户
- 5 :图形界面
- 6 :系统重启
常用运行级别是 3、5,也可以自己指定默认运行级别
帮助指令
man 获得帮助信息
基本语法 : man [命令或 配置信息]
(功能信息:获得帮助信息)
help 指令
基本语法:help 指令
(功能描述:获得 shell 内置命令的帮助信息)
文件目录类
pwd 指令
基本语法:pwd
(功能描述:显示 当前工作目录的绝对路径)
ls 指令
基本语法: ls [选项][目录或者文件]
常用选项
- -a : 显示当前目录所有文件和目录,包括隐藏的
- -l : 以列表的方式显示信息
cd 指令
基本语法: cd [参数]
(功能描述:切换到指定目录)
cd ~
或者 cd
: 回到自己的家目录
cd ..
: 回到当前目录的上一级目录
mkdir 指令
mkdir 指令用于创建目录
基本用法 : mkdir [选项] 要创建的目录
常用选项:
-p : 创建多级目录 mkdir -p /home/a
rmdir 指令删除空目录
基本语法
rmdir [选项] 要删除的空目录
使用细节
rmdir 删除的是空目录,如果目录下有内容时是无法删除的
提示 : 如果需要删除非空目录,需要使用 rm -rf 要删除的目录
touch 指令
touch 指令创建空文件
基本语法
touch 文件名称
cp 指令
cp 指令拷贝文件到指定目录
基本语法
cp [选项] source dest
常用选项
-r : 递归复制整个文件夹
案例:
- 将 /home/hello.txt 拷贝到 /home/bbb 目录下
cp hello.txt /home/bbb
- 递归复制整个文件夹,将 /home/bbb 整个目录,拷贝到 /opt
cp -r /home/bbb /opt
使用细节
强制覆盖不提示的方法 : \cp \cp -r /home/bbb /opt
rm 指令
说明 : rm 指令移除文件或目录
基本语法
rm [选项] 要删除的文件或目录
常用选项
- -r : 递归删除整个文件夹
- -f : 强制删除不提示
使用细节
强制删除不提示的方法: 带上 -f 参数即可
mv 指令
mv 移动文件与目录或重命名
基本语法
mv oldNameFile newNameFile
(功能描述:重命名)
mv /temp/movefile targetFolder
(功能描述 : 移动文件)
cat 指令
cat 查看文件内容
基本语法
cat [选项] 要查看的文件
常用选项
-n : 显示行号
使用细节
- cat 只能浏览文件,而不能修改文件,为了浏览方便,一般会带上 管道命令 | more
- cat -n /etc/profile | more [进行交互]
more 指令
more 指令是一个基于 VI 的文本过滤器,他以全屏幕的方式按页显示文本文件的内容。more 指令中 内置了若干快捷键(交互的指令)
基本语法
more 要查看的文件
less 指令
less 指令用来分屏查看文件内容,他的功能与 more 指令类似,但是比 more 指令更加强大,支持各种显示终端。less 指令在显示文件内容时,并不是一次就一整个文件加载之后显示,而是根据显示需要 加载内容,对于显示大型文件具有较高的效率
基本语法
less 要查看的文件
操作说明
echo 指令
echo 输出内容到控制台
基本语法
echo [选项] [输出内容]
案例
使用 echo 指令输出环境变量,比如输出 $PATH $HOSTNAME
, echo $HOSTNAME
head 指令
head用于显示文件的开头部分,默认情况下 head 指令显示文件的前 10 行内容
基本语法
head 文件
(功能描述: 查看 文件头 10 行内容)
head -n 5 (功能描述 : 查看文件头5 行内容,5 可以是任意行数)
应用案例
查看 /etc/profile 的前面 5 行代码
head -n 5 /etc/profile
tail 指令
tail 用于输出文件中尾部的内容,默认情况下 tail 指令显示文件的 前 10 行内容
基本用法
tail 文件
(功能描述:查看文件尾部 10 行内容)tail -n 5
(功能描述:查看 文件 尾 5 行内容)tail -f
(功能描述:实时追踪该文件的所有更新)
> 指令 和 >> 指令
>
输出重定向 和 >>
追加
基本语法
ls -l > 文件
(功能描述 : 列表的内容写入到文件 a.txt 中 (覆盖写))ls -al >> 文件
(功能描述 : 列表的内容追加到 文件 aa.txt 的末尾)cat 文件 1 > 文件 2
(功能描述 : 将文件 1 的内容覆盖到 文件 2 )echo "内容" >> 文件(追加)
应用实例
将 /home 目录下的文件列表 写入到 /home/info.txt 中,覆盖写入
ls -l /home > /home/info.txt
如果 info.txt 没有,则会创建
ln 指令
软链接也称为 符号链接,类似于 Windows 里面的 快捷模式,主要 存放了链接其他文件的路径
基本用法
在 /home 下创建一个 软链接 myroot,链接到 /root 目录
ln -s /root /home/myroot
删除 软链接 myroot
rm /home/myroot
细节说明
当我们使用 pwd 指令查看当前目录时,仍然看到的是 软链接所在目录
搜索查找类
find 指令
find 指令 将从指令目录向下递归地遍历其各个子目录,将满足条件的目录或文件显示在 终端
基本语法
find [搜索范围] [选项]
应用实例
按 文件名: 根据名称 查找 /home 目录下 的 hello.txt 文件
find /home -name hello.txt
按拥有者 : 查找 /opt 目录下,用户名称为 nobody 的文件
find /opt -user nobody
查找 整个 Linux 系统下 大于 200M 的文件( +n 大于 -n 小于 n 等于)
find / -size +200M
locate 指令
locate 指令可以快速定位文件路径。locate 指令利用事先建立的系统中所有文件名称及路径的 locate 数据库实现快速定位给定的文件。Locate 指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确性,管理员必须定期更新 locate 时刻
基本语法
locate
搜索文件
特别说明
由于 locate 指令基于数据库进行查询,所以第一次运行前,必须使用 updatedb 指令 创建 locate 数据库
grep 和 管道符号 |
grep 过滤查找
|
表示 将前一个命令的处理结果输出传递给后面的命令处理
基本语法
grep [选项] 查找内容 源文件
常用选项
应用实例
在 hello.txt 文件中,查找 “yes” 所在行,并显示 行号
cat /home/hello.txt | grep "yes"
grep -n "yes" /home/hello.txt
压缩和解压类
gzip/gunzip 指令
gzip 用于压缩文件,gunzip 用于解压的
基本语法
gzip 文件
(功能描述:压缩文件,只能将文件压缩为 *.zip 文件)gunzip 文件.gz
(功能描述 : 解压缩文件命令)
应用案例
gzip 压缩,将 /home 下的 hello.txt 文件进行压缩
gzip /home/hello.txt
gunzip 压缩,将 /home 下的 hello.txt.gz 文件进行解压
zip / unzip 指令
zip 用于 压缩文件,unzip 用于解压。这个在项目打包发布中很有用
基本语法
zip [选项] XXX.zip 将要压缩的内容
(功能描述 : 压缩文件和目录的命令)
unzip [选项] XXX.zip
(功能描述:解压缩文件)
zip 常用选项
-r : 递归压缩,及压缩目录
unzip 常用选项
-d<目录>: 指令解压后文件存放目录
应用实例
将 /home 下的所有文件/文件夹 进行压缩成 myhome.zip
zip -r myhome.zip /home/
[将 home 目录及其包含的文件和子文件夹都进行压缩]
将 myhome.zip 解压到 /opt/tmp 目录下
mkdir /opt.tmp
unzip -d /opt/tmp /home/myhome.zip
tar 指令
tar 指令 是 打包指令,最后打包后的文件是 .tar.gz 文件
基本语法
tar [选项] XXX.tar.gz 打包的内容
(功能描述:打包目录,压缩后的文件格式 .tar.gz)
选项说明
应用案例
压缩多个文件,将 /home/pig.txt 和 /home/cat.txt 压缩成 pc.tar.gz
tar -zcvf pc.tar.gz /home/pig.txt /home/cat.txt
将 /home 的文件夹压缩成 myhome.tar.gz
tar -zcvf myhome.tar.gz /home/
将 pc.tar.gz 解压到当前目录
tar -zxvf pc.tar.gz
将 myhome.tar.gz 解压到 /opt/tmp2 目录下
mkdir /opt/tmp2
tar -zxvf /home/myhome.tar.gz -C /opt/tmp2
组管理和权限管理
Linux 组基本介绍
在 Linux 中的每个用户必须属于一个组,不能独立于组外。在 Linux 中 每个文件有 所有者、所在组、其他组的概念
- 所有者
- 所在组
- 其他组
- 改变用户所在的组
文件/目录 所有者
一般为 文件的创建者,谁创建了该文件,就自然的成为该文件的所有者
查看文件的所有者
指令 : ls -ahl
修改文件的所有者
指令: chown 用户名 文件名
组的创建
基本指令
groupadd 组名
应用实例
创建一个组
groupadd monster
创建一个用户 fox,并放入到 monster 组中
useradd -g monster fox
文件/目录 所在组
当某个用户创建了一个文件之后,这个文件的所在组就是该用户所在的组(默认)
查看文件 / 目录所在组
基本指令
ls -ahl
修改文件 / 目录所在组
基本指令
chgrp 组名 文件名
应用实例
使用 root 用户创建文件 orange.txt ,看看当前这个文件属于哪个组,然后将这个文件所在组,修改到 fruit 组
groupadd fruit
touch orange.txt
chgrp fruit orange.txt
其他组
除文件的所有者和所在组之外,系统的其他用户都是文件的其他组
改变用户所在组
在添加用户时,可以指令将该用户添加到哪个组中,同样用 root 的管理权限可以改变某个用户所在的组
改变用户所在组
usermod -g 新组名 用户名
useradd -d 目录名 用户名
改变该用户登陆的初始目录。 特别说明: 用户需要有进入新目录的权限
权限的基本介绍
ls -l
中显示的内容如下
1 | -rwxrw-r-- l root root 1213 DATE |
0 - 9 位说明
第 0 位 确定文件类型(d,-,1,c,b)
- 1 是链接,相当于 Windows 的快捷方式
- d 是目录,相当于 Windows 的文件夹
- c 是字符设备文件,鼠标,键盘
- b 是块设备,比如键盘
第 1 - 3 位确定 所有者 (该文件 的所有者)拥有该文件的权限 –User
第 4 - 6 位确定 所属者 (同用户的组)拥有该文件的权限 –Group
第 7 - 9 位确定 其他用户 拥有该文件的权限 –Other
rwx 权限详解
rwx 作用到文件
- [ r ] 代表可读(read):可以读取,查看
- [ w ] 代表可写(write) :可以修改,但是不代表可以删除该软件,删除一个文件的前提条件是对该文件所在的目录有写权限。才能删除该文件
- [ x ] 代表可执行(execute ):可以被执行
rwx 作用到目录
- [ r ] 代表可读(read):可以读取, ls 查看目录内容
- [ w ] 代表可写(write ):可以修改,对目录内创建 + 删除 + 重命名 目录
- [ x ] 代表可执行(execute) : 可以进入该目录
文件及目录权限实际案例
ls -l 中显示的内容
10 个字符确定不同用户能对文件做什么
- 第一个字符代表文件类型 : -1 d c b
- 其余字符 每 3 个一组(rwx)
- 读(r)
- 写(w)
- 执行(x)
- 第一组 rwx : 文件的拥有者的权限是 读写和执行
- 第二组 rw- : 与文件拥有者同一组的用户的权限是 读、写 但不能 执行
- 第三组 r– : 不与文件拥有者同组的其他用户的权限是读,不能写,不能执行
- 可用数字表示为 : r=4,w=2,x=1 因此 rwx = 7,数字可以进行组合
- 其他说明
- 1 文件:硬连接数 或目录 : 子目录数
- root 用户
- root 组
- 1213 文件大小,如果是文件夹,显示 4096
修改权限 - chmod
基本说明
通过 chmod
指令,可以 修改 文件或者目录 的权限
第一种方式 : +、-、= 变更权限
u : 所有者 g : 所有组 o : 其他人 a : 所有人 (u、g、o 的 总和)
chmod u=rwx,g=rx,o=x 文件/目录名
chmod o+w 文件/目录名
chmod a-x 文件/目录名
案例演示
给 abc 文件 的所有者读写执行的权限,给所在组读 执行权限,给其他组读 执行权限
chmod u=rwx,g=rx,o=rx abc
给abc 文件的文件所有者除去执行的权限,增加组写的权限
chmod u-x,g+w abc
给 abc 文件的所有用户添加读的权限
chmod a+r abc
第二种方式 : 通过数字变更权限
r = 4, w = 2, x = 1 rwx = 7
chmod u=rwx,g=rx,o=x 文件目录名
相当于 chmod 751 文件目录名
修改文件所有者 - chown
基本介绍
chown newowner 文件/目录
改变所有者
chown newowner:newgroup 文件/目录
改变所有者和所在组
-R: 如果是目录,则使其下所有子文件或目录递归生效
案例演示
请将 /home/abc.txt 文件的所有者修改成 tom
chown tom /home/abc.txt
请将 /home/test 目录下所有的文件和目录的所有者都修改为 tom
chown -R tom /home/test
修改文件/目录所在组 - chgrp
基本介绍
chgrp newgroup 文件/目录
改变所在组
案例演示
请将 /home/abc.txt 文件所在组修改成 cs7eric
groupadd cs7eric
chgrp cs7eric /home/abc.txt
请将 /home/test 目录下的所有文件和目录的所在组都修改成 cs7eric
chgrp -R cs7eric /home/test
定时任务调度
crond 任务调度
crontab
进行 定时任务的设置
概述
任务调度:是指系统在某个时间执行的特定的命令或程序
任务调度分类:系统工作 :有些重要的工作必须周而复始的执行,如病毒扫描
个别用户工作:个别用户可能希望执行某些程序,比如对 MySQL 数据库的备份
示意图
基本语法
crontab [选项]
常用选项
快速入门
设置任务调度文件 :/etc/crontab
设置个人任务调度。执行 : crontab -e 命令
接着输入任务到调度文件
如 :
*/1**** ls -l /etc/ > /tmp/to.txt
意思是 每小时的每分钟执行 ls -l /etc/ > /tmp/to.txt 命令
参数细节说明
5 个 占位符的说明
特殊符号的说明
特殊时间执行案例
星期几和几号最好不要同时出现,因为他们定义的都是天,非常容易混乱
应用案例
每隔一分钟,就将当前的日期信息,追加到 /tmp/mydate 中
*/1 **** date >> /tmp/mydate
每隔 1 分钟,将当前日期和日历都追加到 /home/mycal 文件中
vim /home/my.sh
写入内容date >> /home/mycal
和cal >> /home/mycal
- 给 my.sh 增加执行权限,
chmod u+x /home/my.sh
crontab -e
增加*/1**** /home/my.sh
每天凌晨两点 将 MySQL 数据库 testdb , 备份到文件中,指令为 : mysqldump -u root -p 密码 数据库 > /home/db.bak
crontab -e
0 2 * * * mysqldump -u -root -pC020611. testdb >> /home/db.bak
crontab 相关指令
crontab -r
: 终止任务调度
crontab -l
: 列出当前有哪些任务调度
service crond restart
[重启任务调度]
at 定时任务
基本介绍
at 命令是一次性定时计划任务,at 的守护进程 atd 会以后台模式来运行,检查作业队列来运行
默认情况下,atd 守护进程每 60 s 检查作业队列,如果时间与当前时间匹配,则 运行此作业
at 命令是一次性定时计划任务,执行完一个任务后不再执行此任务了
在 使用 at 命令的时候,一定要保证 atd 进程的启动,可以使用相关指令来查看
ps -ef | grep atd
可以检测 atd 是否 在运行示意图
at 命令格式
at [选项] [时间]
ctrl + D 结束 at 命令 的输入,输出两次
at 命令选项
at 时间定义
at 指定时间的方法
- 接受在当天的 hh:mm (小时:分钟)式的时间指定。假如该时间已经过去,那么就放在第二天执行。
- 使用 midnight(深夜)、noon(中午)、teatime(饮茶时间,一般是下午 4 点)等比较模糊的词语来指定时间
- 采用 12 小时计时制,
- Title: Linux
- Author: cccs7
- Created at: 2023-02-27 16:06:02
- Updated at: 2023-06-29 23:12:45
- Link: https://blog.cccs7.icu/2023/02/27/Linux/
- License: This work is licensed under CC BY-NC-SA 4.0.