Linux

Linux基本知识及Shell基础用法
Linux
实质:内核
应用场景:**服务器领域(最强的领域)**,桌面开发,嵌入式
特性:免费稳定高效
主要发行版:ubuntu, CentOS, RedHat
Linux中一切皆文件
隐藏文件以 . 打头
Linux目录结构
/bin [常用] (/usr/bin, /usr/local/bin)
存放经常使用的命令/sbin (/usr/sbin, /usr/local/sbin)
存放系统管理员使用的系统管理程序/home [常用]
存放普通用户的主目录,在Linux中每个用户都有一个自己的目录。/root [常用]
该目录为系统管理员,也称作超级权限者的用户主目录。/lib
系统开机所需要最基本的动态连接共享库。
/etc [常用]
所有的系统管理所需要的配置文件和子目录/usr [常用]
存放用户的应用程序和文件。/boot [常用]
存放的是启动Linux的核心文件,包括一些连接文件以及镜像文件。/dev
类似于设备管理器, 把所有的硬件用文件的形式存储。/media [常用]
Linux系统会自动识别一些设备,当识别后,Linux会把识别的设备挂载到这个目录下。/mnt [常用]
系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将外部的存储挂在/mnt/上/opt
是给主机额外安装软件所存放的目录(尽量将安装软件存放到这)。
/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中,用户是按组分类的,一个用户属于一个或多个组
文件所有者以外的用户又可分为文件所有者的同组用户和其他用户
更改文件属性
chgrp
更改文件属组
语法:chgrp [-R] 属组名 文件名
-R:递归更改文件属组
chown
更改文件属主,也可以同时更改文件属组
语法:chown [-R] 属主名[:属组名] 文件名
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 $PATHhead指令
用于显示文件的开头部分内容,默认情况下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 [搜索范围] [选项]
- 选项说明:
- -name<文件名> 按照指定的文件名格式查找文件
- -user <用户名> 查找属于指定用户名所有文件
- -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 进行许可。