Linux

Zephyr Lv3

Linux基本知识及Shell基础用法

Linux

实质:内核
应用场景:**服务器领域(最强的领域)**,桌面开发,嵌入式
特性:免费稳定高效
主要发行版:ubuntu, CentOS, RedHat

Linux中一切皆文件
隐藏文件以 . 打头

Linux目录结构

目录结构

  1. /bin [常用] (/usr/bin, /usr/local/bin)
    存放经常使用的命令

  2. /sbin (/usr/sbin, /usr/local/sbin)
    存放系统管理员使用的系统管理程序

  3. /home [常用]
    存放普通用户的主目录,在Linux中每个用户都有一个自己的目录。

  4. /root [常用]
    该目录为系统管理员,也称作超级权限者的用户主目录。

  5. /lib

    系统开机所需要最基本的动态连接共享库。

  6. /etc [常用]
    所有的系统管理所需要的配置文件和子目录

  7. /usr [常用]
    存放用户的应用程序和文件。

  8. /boot [常用]
    存放的是启动Linux的核心文件,包括一些连接文件以及镜像文件。

  9. /dev
    类似于设备管理器, 把所有的硬件用文件的形式存储。

  10. /media [常用]
    Linux系统会自动识别一些设备,当识别后,Linux会把识别的设备挂载到这个目录下。

  11. /mnt [常用]
    系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将外部的存储挂在/mnt/上

  12. /opt

    是给主机额外安装软件所存放的目录(尽量将安装软件存放到这)。

  13. /usr/local [常用]
    给主机额外安装软件的目录,一般源码安装的软件在这。

vi和vim

vi:Linux中内置的文本编辑器
vim:具有程序编辑的能力,可以看作是vi的增强版本,类似vscode

vi和vim常用的三种模式

正常模式:
默认模式,可以移动光标,删除字符或删除整行类处理档案内容,也可以复制粘贴
包含操作:
(n)yy 拷贝当前开始n行
p:粘贴
(n)dd 删除当前开始n行
G:到最末行
gg:到首行
u:撤回上一步操作
行号 shift g:定位到对应行号

插入模式:
按i进入编辑模式
命令行模式:
按:或/进入
包含操作:
wq(保存并推出),q(退出),q!(强制退出)
查找内容:命令行下 /关键字 回车, 输入n查找一个
设置行号:set nu 取消行号:set nonu
通过提供相关指令,完成读取,存盘,替换,离开vim,显示行号等动作。

文件基本属性

chown(change owner):修改所属用户与组

chmod(change mode):修改用户的权限

file type

  • d:目录
  • -:文件
  • l:链接文档
  • b:装置文件里面的可供储存的接口设备
  • c:表示装装置文件里面的穿行端口设备

文件属主和属组

对于文件来说,都有一个特定的所有者。

同时,在Linux中,用户是按组分类的,一个用户属于一个或多个组

文件所有者以外的用户又可分为文件所有者的同组用户和其他用户

更改文件属性

  1. chgrp

    更改文件属组

    语法:chgrp [-R] 属组名 文件名

    -R:递归更改文件属组

  2. chown

    更改文件属主,也可以同时更改文件属组

    语法:chown [-R] 属主名[:属组名] 文件名

  3. chmod

    更改文件九个属性(owner/group/others的rwx权限)

    各权限的权值:

    ​ r:4

    ​ w:2

    ​ x:1

    语法:chmod [-R] xyz 文件或目录

链接

硬连接

硬链接指通过索引节点[文件的编号]来进行连接,可以理解为他们直接指向指定的数据。若有多个硬连接指向同一个文件,则删除其中一个并不会造成影响。

意义:允许一个文件拥有多个有效路径名,可以避免误删重要文件。只有当所有的硬链接均被删除后,文件的数据块及目录才会被释放(有点类似Java对类的管理)

软连接

又称符号链接,该文件实际上是个文本文件,其中包含了另一文件的位置信息(类似于指针),可以理解为Windows中的快捷方式。删除符号链接不会对源文件造成影响,删除源文件会导致符号链接指向一个无效连接。

语法

ln [-s] src des 将desc连接到src上

-s:创建连接

文件目录指令

绝对路径:由根目录**/**写起

相对路径:不是由/写起

功能描述:显示当前工作目录的绝对路径

  • pwd指令

    显示当前所在目录

    常用选项:

    -P:显示出确实的路径,而非使用连结路径

  • ls指令
    基本语法:ls [选项] [目录或是文件]
    常用选项:
    -a:显示当前目录所有的文件和目录,包括隐藏的。
    -l:以列表的方式显示信息,包含文件的属性与权限等等数据。
    -h:更人性化的显示(一般与l合用)
    -d:长数据串列输出,包含文件的属性与权限等等数据

  • cd指令
    基本语法:cd [参数] (功能描述:切换到指定目录)
    理解:绝对路径和相对路径
    cd ~ 或者cd:回到自己的家目录
    cd .. 回到目前目录的上一级目录

  • mkdir指令

    创建目录

    mkdir 目录 (默认只能创建一级目录

    常用选项:

    -m 配置权限

    -p 递归创建文件夹

  • rmdir指令
    rmdir [指令] 要删除的空目录
    rmdir删除的是空目录,若目录下有内容时无法删除
    如果要删除非空目录,需要使用 rm -rf 要删除的目录。

    常用选项:

    -p:从该目录起,一次删除多级空目录

  • touch指令
    创建空文件
    touch 文件名称

  • cp指令
    拷贝文件到指定目录
    基本语法:cp [选项] source(原文件路径) dest(目标路径)
    常用选项:

    • -r 递归复制整个文件夹

    • -f 若目标档已存在且无法开启,则移除后再尝试一次

    • -p 连同文件的属性一起复制过去

    强制覆盖指令 \cp

  • rm指令
    移除文件或目录
    基本语法:rm [选项] 要删除的文件或目录
    常用选项:
    -r:递归删除整个文件夹
    -f:强制删除不提示

  • mv指令
    移动或重命名文件
    mv source destination
    若两个文件处于用以文件夹下,且为同一类型,则表示重命名,否则表示移动

  • cat指令
    查看文件内容 只能浏览文件而不能修改文件
    基本语法:
    cat [选项] 要查看的文件
    常用选项:-n 显示行号

  • echo指令
    输出内容到控制台
    基本语法:echo [选项] [输出内容]
    eg:输出环境变量:echo $PATH

  • head指令
    用于显示文件的开头部分内容,默认情况下head指令显示文件的前10行内容
    基本语法:
    head 文件
    head -n x 文件(查看文件头x行内容)

  • .tail 指令
    用于显示文件的开头部分内容,默认情况下tail指令显示文件的最后10行内容
    基本语法:
    tail 文件
    tail -n x 文件(查看文件尾x行内容)
    tail -f 实时追踪文件的更新

  • >指令和>>指令
    > 覆写, >> 追加

软连接:存放了链接其他文件的路劲,相当于快捷方式
创建软连接: ln -s [原文件或目录] [软连接所处目录]

history
查看已经执行过的历史命令,也可以执行历史命令
基本语法:
history 显示所有历史命令
history x 显示最近使用过的10个命令
!x 执行历史编号为x的命令

常用命令

帮助指令:
man 获得帮助信息
基本语法:man[命令或配置文件](功能描述:获得帮助信息)

help指令 获得shell内置命令的帮助信息
基本语法:help 命令

管理用户

用户登录和注销

切换用户 su - 用户名
注销用户 logout** (在运行级别3下有效)**

添加用户

useradd 用户名 添加一个用户并在/home/中创建一个同名文件夹
useradd -d 文件路径 用户名 在指定路径中创建用户文件夹

常用选项:

  • -c comment 指定一段注释性描述
  • -g 用户组 指定用户所属的用户组
  • -G 用户组… 指定用户所属的附加组
  • -s Shell文件 指定用户的登录Shell

指定/修改密码

passwd 用户名 (若不指定用户名默认修改当前用户密码)

删除用户

删除用户但保留home中的文件夹 userdel 用户名
彻底删除 userdel -r 用户名

查询用户信息

id 用户名
whoami 查看登录用户

角色组

系统可以对有共性/权限的用户进行统一管理。

添加组 groupadd 组名
删除组 groupdel 组名
往组中添加用户 useradd -g 用户组 用户名(若没有指定组,则默认会生成一个与用户同名的组,然后将用户放进去)
修改用户组别:usermod -g 用户组 用户名

用户和组相关文件

/etc/passwd 文件
用户的配置文件,记录用户的各种信息
每行的含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell

/etc/shadow 文件
口令的配置文件
每行的含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志

/etc/group 文件
组的配置文件,记录Linux包含的组的信息
每行含义:组名:口令:组标识号:组内用户列表

搜索查找指令

  • find指令

    • 从指定目录向下递归遍历各个子目录,将满足条件的文件或目录显示在终端
    • 基本语法:find [搜索范围] [选项]
    • 选项说明:
        1. -name<文件名> 按照指定的文件名格式查找文件
        1. -user <用户名> 查找属于指定用户名所有文件
        1. -size <文件大小>(单位:k,M,G) 按照指定的文件大小查找文件
  • locate指令

    • locate指令可以快速定位文件路径。locate会利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件(不包含/tmp文件夹)。该指令**无需遍历整个系统文件 **,查询速度较快,但必须定期更新数据库。
    • 基本语法:locate 搜索文件 updatedb更新数据库
  • grep指令

    • grep过滤查找
    • 基本语法: grep [选项] 查找内容 源文件
    • 常用选项:-n 显示匹配及行号 -j 忽略字母大小写
  • **管道符号 | **

    • 表示将前一个命令的处理结果传递给后面的命令处理。

运行级别

0:关机
1:单用户【找回丢失密码】
2:多用户状态没有网络服务
3:多用户状态有网络服务
4:系统未使用保留给用户(没什么用)
5:图形界面
6:系统重启

调整运行级别:init [0123456]
查看当前运行级别:systemctl get-default
调整默认运行级别:systemctl set-default TARGET.target
multi-user.target:多用户级别
graphical.target:图形化级别

磁盘管理(待补全)

df

列出文件系统的整体磁盘使用量

选项参数 功能
-a 列出所有的文件系统
-k 以KBytes的容量显示各文件系统
-m 以MBytes的容量显示各文件系统
-h 以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示
-T 显示文件系统类型
-i 不用硬盘容量,而以inode的数量来表示

du

查询指定目录的磁盘占用情况

选项参数 功能
-a 列出所有的文件系统
-k 以KBytes的容量显示各文件系统
-m 以MBytes的容量显示各文件系统
-h 以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示
-s 列出总量而已,而不列出每个各别的目录占用容量
-S 不包括子目录下的总计

任务调度 Crond

Crontab

定时执行某项任务

语法:crontab [-u user] {-l | -r | -e}

-u user 设定指定user的时程表

常用选项 功能
-e 执行文字编辑器来设定时程表,内定的文字编辑器是 VI,如果你想用别的文字编辑器,则请先设定 VISUAL 环境变数来指定使用那个文字编辑器(比如说 setenv VISUAL joe)
-r 删除目前的时程表
-l 列出目前的时程表

时间格式:

f1 f2 f3 f4 f5 program
  • 其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。program 表示要执行的程序。
  • 当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程序,其馀类推
  • 当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其馀类推
  • 当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其馀类推
  • 当 f1 为 a, b, c,… 时表示第 a, b, c,… 分钟要执行,f2 为 a, b, c,… 时表示第 a, b, c…个小时要执行,其馀类推

重启Crond服务

service crond restart

at

at命令是一次性定时计划任务,at的守护进程atd会以后台模式运行,检查作业队列来进行

默认情况下,atd守护进程每60秒检查作业队列,有作业时,会检查作业运行时间,如果时间于当前时间匹配,则运行此作业

语法:at [选项] [时间]

选项 含义
-m 当 at 工作完成后,无论命令是否输出,都用 E-mail 通知执行 at 命令的用户。
-c 工作标识号 显示该 at 工作的实际内容。
-t 时间 在指定时间提交工作并执行,时间格式为 [[CC]YY]MMDDhhmm。
-d 删除某个工作,需要提供相应的工作标识号(ID),同 atrm 命令的作用相同。
-l 列出当前所有等待运行的工作,和 atq 命令具有相同的额作用。
-f 脚本文件 指定所要提交的脚本文件。

时间格式

格式 用法
HH:MM 比如 04:00 AM。如果时间已过,则它会在第二天的同一时间执行。
Midnight(midnight) 代表 12:00 AM(也就是 00:00)。
Noon(noon) 代表 12:00 PM(相当于 12:00)。
Teatime(teatime) 代表 4:00 PM(相当于 16:00)。
英文月名 日期 年份 比如 January 15 2018 表示 2018 年 1 月 15 号,年份可有可无。
MMDDYY、MM/DD/YY、MM.DD.YY 比如 011518 表示 2018 年 1 月 15 号。
now+时间 以 minutes、hours、days 或 weeks 为单位,例如 now+5 days 表示命令在 5 天之后的此时此刻执行。

eg:

[root@localhost ~J# at 02:00 2013-07-26
at> /bin/sync
at> /sbin/shutdown -h now
at> <EOT>
job 9 at 2013-07-26 02:00
#在指定的时间关机。在一个at任务中是可以执行多个系统命令的

atq:查看当前等待运行的job

atrm [工作号] 删除指定的job

  • 标题: Linux
  • 作者: Zephyr
  • 创建于 : 2022-06-30 11:06:00
  • 更新于 : 2023-01-26 12:32:29
  • 链接: https://faustpromaxpx.github.io/2022/06/30/Linux/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论