Linux系统命令及Shell脚本实战 笔记

显示日期

linux严格区分大小写


列出目录内容

ls -l 详细的列出目录下的所有文件

详细的显示其中一个文件


cat显示文件内容


系统启动流程

  1. 计算机会加载 BIOS, 主板制造商会开发适合自己主板的BIOS, BIOS中的一项功能是对自身硬件做一次健康检查, 通过后才能运行软件
  2. 找到并运行引导系统Grub(默认从硬盘的第0柱面,第0磁道,第一个扇区中读取被称为MBR的东西) , Grub最重要的功能是根据配置文件加载 Kernel镜像,并运行内核加载后的第一个程/sbin/init
  3. linux运行初始化脚本 来 加载用户自定义模块, 加载内核设置等

系统运行级别

linux只能在一种  runlevel 下运行

  • 第0级  关机
  • 第1级 单用户模式, 系统出现问题时可使用此模式进入系统维护, 典型场景: 忘记root密码时 使用此模式修改密码
  • 第2级 多用户模式 但是没有网络连接
  • 第3级 完全多用户模式 
  • 第4级 保留未使用
  • 第5级 窗口模式 支持多用户 支持网络
  • 第6级 重启 

并相应地读取和运行/etc/rcX.d(X代表0~6)

帮助命令

如果某个命令忘记如何使用 可以使用 man + 命令

info工具是一个基于菜单的超文本系统

info ls


Linux用户管理

linux是一个多用户的分时系统

linux系统采用一个32位的整数记录和区分不同的用户,这个数字叫做UserID 简称UID

用户分为三类

普通用户  普通用户受权限设置 , UID从500开始

根用户 UID为0 也被称为超级用户 拥有对系统的完全控制权   

系统用户 系统运行时必须有的用户 并不是指真实的使用者 在RedHat或Centos下,系统用户UID范围是 1 ~ 499

用户组GroupID 简称 GID

n参数 查看id

一个用户会有 1到多个 用户组

/etc/password 存储所有用户的用户名 id 密码等

用户 / 用户组

添加用户 useradd 命令

对于添加用户命令, 系统背后会做这些事情

  1. 将用户信息记录在/etc/passwd 中
  2. 为用户创建 home目录, 默认路径为 /home/${username}

3. 复制 /etc/skel 下所有文件 到 /home/${username} 中, 文件是隐藏的 , 可以使用-a参数查看文件夹的内容

这些隐藏文件时 新用户的一些默认配置文件

4. 新建一个与该用户名一样的 用户组

创建用户时 指定 UID

useradd -u 666 user2

创建用户时 指定 用户群组

useradd -g group1 user3

创建用户时 指定 用户home目录

useradd -d /home/zhangsan_home zhangsan

修改密码 passwd ${username}

直接输入 paswd 就是修改 当前登录用户的 密码

修改用户 usermod

usermod -d /home/alice_new -m alice 
# -m 如果目录不存在则自动创建

冻结用户

usermod -L  alice

解冻用户

usermod -U alice

删除用户 userdel

userdel lisi

用户删除 不会删除用户home目录, 如需删除

可使用-r 参数 :  userdel -r lisi

添加用户组 groupadd

groupadd group1

用户组数据存储在 /etc/group

第一列为用户组名, 第二列为密码 , 第三列为组id

删除用户组groupdel

groupdel group1

检查用户信息

users 查看当前登陆的用户列表

who 详细的登陆信息

第一列 登陆的用户名

第二列 登陆的终端

第三列 登陆的时间

w 更详细的登陆信息

第一行 当前时间, 系统运行时间, 已登录用户数和系统负载

第一列 登陆的用户名

第二列 用户登陆终端

第三列 登陆的远程主机名或IP地址

第四列 用户登陆时间

第五列 用户闲置时间

第六列 与终端相关的当前运行进程消耗的CPU时间总量

第七列 当前what列所对应的进程所消耗的CPU时间总量

第八列 用户当前运行的进程

调查用户

finger

finger lisi


切换用户

su 默认切换到root用户

su- 用户环境也切换(就是/etc/passwd中定义的用户家目录、使用的Shell,以及关于这个用户的个性化设置等)

su ${username} 切换到指定用户

root切换任何用户都不需要输入密码

用其他用户身份执行命令 sudo

需要配置指定用户的权限

终端输入 visudo

找到如下 复制一行 改个用户名

sun ALL=(ALL) ALl 这一行代表

sun这个用户 (第一列)

可以从任何地方登陆(第二列)

执行任何人(第三列)

执行任何命令(第四列)

这样配置后 使用sudo命令就可以输入密码后 执行运行了

如果不输入密码 运行 可以如下配置

只赋予指定命令的sudo操作 配置


执行任务管理

单一时刻执行一次任务 at ctrl d 表示结束

atq 查看at任务队列

 

周期性执行任务 cron

启动 service crond start

查看状态 service crond status

文件目录

在linux下 以.开头的都是隐藏文件 需要使用 ls -la命令可以查看

创建文件 touch

删除文件 rm

移动或 重命名文件 mv

第一个参数是要移动的文件

第二个参数是移动的目标位置

在linux中目录也是一种文件, mv命令也同时可以移动目录

查看文件 cat

查看文件头 head

默认显示 前10行

指定行数

查看文件尾 tail

基本用法与head一致

一个特性是 tail可以动态查看文件内容

tail -f 文件

目录相关操作

进入目录 cd 该命令是change directory的简写

查看当前所处目录 pwd

创建目录 mkdir   -p 参数 递归创建目录 : mkdir -p dir3/dir4

删除目录 rm -r , 去掉提示 -f 

文件和目录的复制 CP

复制文件, 文件名可省略

复制目录使用 -r参数

文件时间戳

touch文件可以新建文件, 如果文件存在, 则只更新文件的时间戳而不修改文件内容

当文件发生读取或更新时 都会更新文件时间戳


文件和目录权限

查看文件或目录的权限 ls -la

-l 详细的列出目录下的文件或目录

-a 列出隐藏文件

第一列是 文件类别和权限, 由10个字符组成 第一个字符表示文件类型

d 目录

- 普通文件

l 链接文件

b 块文件

c 字符文件

s socket文件

p 管道文件

第二列是 目录连接数

第三列是 所属用户

第四列是 所属用户组

第五列是 文件大小

第六列是 文件时间戳

第七列是 文件名称

文件隐藏属性 lsattr

改变文件权限 chmod 

如果需要同时给所有设置权限 就需要用数字表示法

定义r=4,w=2,x=1,如果权限是rwx,则数字表示为7

chmod + 777 ${file}

如果修改的是一个目录及目录下所有文件 则 使用 -R 参数

 

改变文件拥有者 chown

chown ${username} ${filename}

查看详细文件类型 file

文件查找 find

find ${path} -name ${fileName}

通配符

数据库查找 Locate

 locate命令依赖于一个数据库文件, Linux系统默认每天检索一个文件系统然后记录到数据库中

locate,命令给find快

在执行locate命令之前 一般要执行 updatedb命令 ,来更新数据库

查找执行文件  which / whereis

which 命令用来查找 系统变量 path中定义的目录中 查找 

whereis 一样, 不但能找出二进制文件 还能找出man文件

文件压缩和打包

tar

完整参数解释看这里 https://www.cnblogs.com/peida/archive/2012/11/30/2795656.html

tar是整合包, gz是压缩包

所以后缀一般为 .tar.gz / .tgz 

文件系统

文件系统是操作系统明确磁盘或分区上相关文件的方法和数据结构

磁盘分区

磁盘使用前对其进行分割, 这就叫做分区, 

磁盘分区分为两类 主分区,扩展分区

受磁盘分区表大小的限制, 一块磁盘最多只能支持四个分区

为了支持更多的分区, 可以使用扩展分区, 扩展分区可以划分更多逻辑分区

主分区 + 扩展分区 不能超过4个

在完成磁盘分区后, 需要进行创建文件系统的操作, 最后将该分区挂载到系统的某个挂载点才可以使用

创建文件系统 fdisk

磁盘挂载 mount

创建了分区后, 经过挂载才可以使用

显示所有挂载

创建一个目录进行挂载

配置启动自动挂载

mount命令只是暂时的挂载 当系统重启后会消失挂载

磁盘校验 fsck BadBlocks

逻辑卷

磁盘一旦经过分区后,再想改变分区大小就很难了

逻辑卷组管理 创建出来的 设备 就是逻辑卷 / 是linux操作系统可以认识的设备

逻辑卷组管理 中的一些概念

  • 物理卷(PV)  也就是物理磁盘分区
  • 卷组(VG) PV的集合
  • 逻辑卷 从PV中划出的一块逻辑磁盘

首先创建一块或多块物理卷, 这些物理卷根据名称等 划分为不同的物理卷组, 逻辑卷就是从物理卷中抽象出的一块磁盘空间

如何制作逻辑卷

首先创建三个分区

将分区创建为物理卷

创建并查询卷组

物理卷组扩容, 扩容就是新加物理卷

创建逻辑卷

需要说明的是,在对逻辑卷创建文件系统的时候,其全路径是/dev/卷组名/逻辑卷名

硬链接和软链接

硬链接

硬链接又称实际链接, 是指通过索引节点来进行链接

在linux文件系统中, 所有文件都有一个编号 称为inode

多个文件名指向同一索引节点是被允许的, 这种就是硬链接

硬链接的作用就是允许文件有多个有效的路径名

这样用户可以建立硬链接指向同一文件, 当最后一个硬链接被删除后, 文件的数据块即目录才会被释放

所以 文件 真正删除的前提是 与之相关的所有硬链接均被删除

硬链接有两个限制

  1. 不允许给目录就建立硬链接
  2. 只有在同一文件系统中的文件之间才可以创建硬链接

-i参数 显示文件 inode

软链接

软链接又称符号链接

是一个包含了另一文件路径名的文件 ,可以指向任意文件或目录, 也可以跨不同的文件系统

字符处理

管道

管道是一个固定大小的缓冲区, 该缓冲区大小为1 也就是4k字节

管道是一个使用频繁的通信机制

可以用管道符 "|" 来连接进程, 由管道连接起来的进程可以自动运行

可以把一个命令的输出内容当做下一个命令的输入内容

使用grep搜索文本

grep是基于行的文本搜索工具,如果匹配, 就会返回匹配行

使用管道

 

使用sort排序

-t 指定分隔符 -k 指定分隔列

-n 使用数字排序

 

使用uniq删除重复内容

uniq用于删除 连续的完全一致的行 ,所以一般和sort一起使用

-c 参数显示重复的次数

使用cut截取文本

可以处理一行文本, 从中截取用户需要的部分

使用:分隔 取出第一列

打印指定列的文本 例  第一列,第三列, 第4-7列

使用tr文本转换

使用paste 文本合并

使用split分隔大文件

网络管理

使用ifconfig检查 和 配置网卡

使用ifconfig会显示 系统 所有处于活动状态下的 网络接口

其中eth0 代表以太网的第一块网卡  其中eth是 ethernet 以太网的缩写

0代表第一个块网卡 而eth1代表第二块网卡

linkencap 是指 封装方式为以太网

HWaddr 指的是 网卡硬件地址(MAC地址)

inetaddr 指 该网卡的ip地址

broadcast 指该网卡广播地址

mask 指掩码

UP 说明了当前网卡处于活动状态

MTU代表最大存储单元 即 此网卡一次所能传输的最大分包

RX和TX 分别指 接收和 发送的包

collision 代表发生的冲突数 如果值不为0 则网络可能存在故障

txqueuelen 代表传输缓冲区长度大小

第二个设备是lo 表示主机回环地址 用于本地通信

ipconfig 后面加上设备名就只显示该设备信息

手动修改eth0 ip

手动启动断开 网卡

ipconfig命令设置的ip地址会在系统重启后失效

如果需要持久化 则需改动配置文件

重启网络服务 使配置生效

路由和网关设置

DNS客户端配置

/etc/hosts 存储了 主机名与ip地址的对应关系 , 可以加快解析速度, 方便颞部局域网通信

/etc/resolv.conf   是设置主机为DNS客户端的配置文件 

网络测试工具

ping

ping程序目的在于 测试另一主机是否可达

host

host命令用来查看DNS记录

指定DNS服务器查询 

进程的观察

PS

ps命令的输出只是查看进程瞬间的状态输出使用top命令可以查看动态的数据

第一行是基础信息 top命令刷新时间 | 系统已经运行 350 天 |不知道这个 | 有三个用户 | 系统负载

第二行是当前系统进程概况 一共87个进程 | 一个正在运行 | 86 个在睡眠 | 0个停止 | 0个僵尸进程

第三行是CPU信息 用户空间占用CPU百分比 |  系统占用CP百分比 | 改变过优先级的进程占用CPU百分比 | 空闲CPU百分比 | IO等待百分比 | 硬中断占用百分比  | 软中断占用百分比 

第四行是物理内存的使用状态  物理内存总量 | 空闲内存  | 已使用内存 |  缓存使用的内存

第五行代表虚拟内存使用状态 前三列与物理内存一致 最后一个代表 缓冲的交换区总量

top命令默认显示11个字段

按f 键可以选择展示哪些字段 前面有*号的就是当前展示的字段使用空格键选展示的字段

kill

kill -9 是系统强制杀死进程 而没有清理之前申请的内存, 容易造成内存泄漏不建议使用

-15 就是使进程正常的退出 就是这个-15

killall

killall是根据进程名字关闭进程 更安全

查询进程打开的文件 lsof

lsof(list open file) 查看个当前所有打开文件的工具

查看该文件被哪个进程使用

查看指定端口被哪个进程使用

进程优先级调整

Linux软件安装

解释型语言是指 操作系统 逐条取出源代码的指令 将其转换为机器语言

编译型语言是指 操作系统将 所有的代码一次性转换为 机器语言

rpm安装软件

rpm是 Redhat Package Manager 的缩写 译为 红帽包管理器

rpm通过一套本地数据库提供了更简单的软件管理工具

rpm分为两类 二进制安装包 / rpm源码包

RPM包管理命令

安装参数

查询参数

yum安装软件

yum全称为 Yellow Dog Updater Modified, 是一个基于rpm的shell前端包管理器, 自动解决依赖问题

能够从一个或多个服务器自动下载管理软件

Redhat和Centos5 以上会自动安装 yum

yum安装操作

yum升级操作

yum查找操作 

yum删除操作 

vi/vim 编辑器

vi编辑器是 Visual Interface 简称, 是linux系统中最基本的文本编辑器, 

vim编辑器是vi编辑器的加强版, 

vi编辑器三种模式

一般模式 

当使用vi 默认打开的文件就是一般模式, 在这种模式中最基本的功能就是移动光标, 还可以使用组合按键执行复制,粘贴,删除等

编辑模式

在一般模式中,输入i可进入编辑模式, 在编辑模式中, 可以输入文字到文件中, 按ESC键回到一般模式

末行指令模式

在一般模式中,按冒号或反斜杠或问号, 就会在当前视图的最后一行出现当前符号, 进入末行指令模式

按 wq 代表写入并退出 / wq可使用 x代替

搜索关键字

搜索内容是以当前光标为相对位置, 往下查找到的第一个关键字

搜索内容按回车后 n键代表查找下一个 N代表查找上一个

查找内容还可以使用 ? , 与/不同的是 默认往上查找 n是找上一个 N是找下一个

替换关键字

 

VIM编辑器

vim其中一个特性是多行编辑, 而vi只能处理单行

多文件编辑

vim filea filb 

进入末行命令模式输入 n进入下一个文件 上一个文件

files可以查看当前打开了多少文件

Gedit

gedit是linux的图形化编辑器

文本处理工具 sed

sed是一种非交互式的流编辑器, 

默认情况下,sed不会改变原文件本身

sed处理时是以行为单位, 处理完就打印支出 处理下一行

要想保存修改后的文件需要使用重定向输出到新文件

如果需要保存原文件, 则加 -i参数

不学了, 太长了 哈哈哈下次有缘再学


Shell脚本

HelloWorld

一个shell脚本永远是 #!开头 后面跟着解释器的位置

运行脚本

第一种方式 使用bash命令

第二种方式将它变为可执行文件

判断内建命令 type

执行程序

别名 alias

为命令起别名

使用alias创建的别名会在重新登录后失效 , 持久化的方式配置是在各用户home目录中的配置文件中 .bashrc

删除别名

unalias ${name}

任务前后台切换

使用场景是当某个命令或进程耗时时应该在后台运行, 否则会一直占领终端

bg、fg、jobs

变量声明

执行命令来取代当前的Shell:exec

退出Shell:exit

发送信号给指定PID 或进程

Linux有三种不同类型的进程

  • 交互进程
  • 批处理进程
  • 监控进程/守护进程

声明局部变量

从标准输入读取一行到变量:read

确定Bash的版本 bash

猜你喜欢

转载自blog.csdn.net/weixin_42195284/article/details/110281238