09 2020 档案

摘要:参考:http://www.zsythink.net/archives/2641 这篇文章会介绍playbook中tags的用法。 你写了一个很长的playbook,其中有很多的任务,这并没有什么问题,不过在实际使用这个剧本时,你可能只是想要执行其中的一部分任务而已,或者,你只想要执行其中一类任务而 阅读全文
posted @ 2020-09-30 16:57 minseo 阅读(541) 评论(0) 推荐(0) 编辑
摘要:参考:http://www.zsythink.net/archives/2624 不过在开始介绍它们之前,我们先来描述一个工作场景。 当我们修改了某些程序的配置文件以后,有可能需要重启应用程序,以便能够使新的配置生效,那么,如果使用playbook来实现这个简单的功能,该怎样编写playbook呢? 阅读全文
posted @ 2020-09-30 15:51 minseo 阅读(745) 评论(0) 推荐(0) 编辑
摘要:参考:http://www.zsythink.net/archives/2613 前文中,我们已经编写了 一个简单的剧本,这篇文章继续了解一下playbook的一些基础。 有前文作为基础,如下示例是非常容易理解的: - hosts: test70 remote_user: root tasks: - 阅读全文
posted @ 2020-09-30 10:48 minseo 阅读(175) 评论(0) 推荐(0) 编辑
摘要:参考:https://www.cnblogs.com/ling-yu-amen/p/10823597.html linux下获取占用CPU资源最多的10个进程 首先使用命令查看进程及占用CPU及内存 ps aux 使用sort对CPU占用进行排序 ps aux|sort -nr -k3 参数解析 s 阅读全文
posted @ 2020-09-30 10:37 minseo 阅读(11670) 评论(0) 推荐(1) 编辑
摘要:参考:http://www.zsythink.net/archives/2602 前文中,我们介绍了一些ansible的常用模块,聪明如你,一定已经掌握了这些模块的使用方法。 那么现在,我们来想象一个工作场景,看看怎样把之前的知识点应用到这个工作场景中。 假设,我们想要在test70主机上安装ngi 阅读全文
posted @ 2020-09-29 17:38 minseo 阅读(220) 评论(0) 推荐(0) 编辑
摘要:参考:http://www.zsythink.net/archives/2592 yum_repository模块 yum_repository模块可以帮助我们管理远程主机上的yum仓库。 此处我们介绍一些yum_repository模块的常用参数,你可以先对这些参数有一个大概了解,然后再看小示例。 阅读全文
posted @ 2020-09-29 15:20 minseo 阅读(185) 评论(0) 推荐(0) 编辑
摘要:参考:http://www.zsythink.net/archives/2580 user模块 user模块可以帮助我们管理远程主机上的用户,比如创建用户、修改用户、删除用户、为用户创建密钥对等操作。 此处我们介绍一些user模块的常用参数,你可以先对这些参数有一个大概了解,然后再看小示例。 nam 阅读全文
posted @ 2020-09-29 14:59 minseo 阅读(578) 评论(0) 推荐(0) 编辑
摘要:参考:http://www.zsythink.net/archives/2572 cron模块 cron模块可以帮助我们管理远程主机中的计划任务,功能相当于crontab命令。 在了解cron模块的参数之前,先写出一些计划任务的示例,示例如下 #示例1 5 1 * * * echo test #示例 阅读全文
posted @ 2020-09-28 17:15 minseo 阅读(129) 评论(0) 推荐(0) 编辑
摘要:参考:http://www.zsythink.net/archives/2557 command模块 command模块可以帮助我们在远程主机上执行命令 注意:使用command模块在远程主机中执行命令时,不会经过远程主机的shell处理,在使用command模块时,如果需要执行的命令中含有重定向、 阅读全文
posted @ 2020-09-28 10:49 minseo 阅读(134) 评论(0) 推荐(0) 编辑
摘要:参考:http://www.zsythink.net/archives/2560 find模块 find模块可以帮助我们在远程主机中查找符合条件的文件,就像find命令一样。 此处我们介绍一些find模块的常用参数,你可以先对这些参数有一个大概了解,然后再看小示例。 paths参数 :必须参数,指定 阅读全文
posted @ 2020-09-28 10:08 minseo 阅读(176) 评论(0) 推荐(0) 编辑
摘要:刚刚安装的elasticsearch启动报错 查看日志/var/log/message Sep 27 11:13:17 local-nginx elasticsearch: Exception in thread "main" org.elasticsearch.bootstrap.Bootstra 阅读全文
posted @ 2020-09-27 11:19 minseo 阅读(1879) 评论(0) 推荐(0) 编辑
摘要:环境介绍 使用prometheus+granfana监控服务器已经设置好监控图形,现另一环境也需要同样的监控配置,为减少工作量可以把设置好的监控图形导出json然后再导入 环境及软件版本查看 已经设置好的监控图查看 导出json 复制后的json保存在一个文件例如granfana.json 导入设置 阅读全文
posted @ 2020-09-26 11:13 minseo 阅读(668) 评论(0) 推荐(0) 编辑
摘要:参考:http://www.zsythink.net/archives/2542 前文中,我们已经介绍了怎样使用模块,而且我们知道,ansible有很多模块,每个模块都有自己的功能,"模块"涉及到的方向比较多,所以对于个人来说,并没有必要了解所有的模块,我们只需要根据实际的业务场景了解相应的模块即可 阅读全文
posted @ 2020-09-25 17:33 minseo 阅读(417) 评论(0) 推荐(0) 编辑
摘要:查看:http://www.zsythink.net/archives/2523 在前文的基础上,我们已经知道,当我们使用ansible完成实际任务时,需要依靠ansible的各个模块,比如,我们想要去ping某主机,则需要使用ping模块,命令如下 ansible all -m ping 前文说过 阅读全文
posted @ 2020-09-25 15:42 minseo 阅读(286) 评论(0) 推荐(0) 编辑
摘要:参考:http://www.zsythink.net/archives/2509 上一篇文章介绍了ansible的基本概念,以及相关的基础配置,我们已经知道,如果想要管理受管主机,则需要将受管主机添加到ansible的管理清单中,当安装ansible以后,会提供一个默认的管理清单,即/etc/ans 阅读全文
posted @ 2020-09-25 15:13 minseo 阅读(382) 评论(0) 推荐(0) 编辑
摘要:参考:http://www.zsythink.net/archives/2481 一些基础概念 ansible是什么? 它是一个"配置管理工具",它是一个"自动化运维工具",如果你没有使用过任何配置管理工具,不要害怕,看完这篇文章,你自然会对ansible有所了解。 ansible能做什么? 正如其 阅读全文
posted @ 2020-09-25 10:33 minseo 阅读(217) 评论(0) 推荐(0) 编辑
摘要:参考:http://www.zsythink.net/archives/1450 mysqldump简介 mysqldump是mysql自带的逻辑备份工具。 它的备份原理是,通过协议连接到mysql数据库,将需要备份的数据查询出来,将查询出的数据转换成对应的insert语句,当我们需要还原这些数据时 阅读全文
posted @ 2020-09-24 14:08 minseo 阅读(3392) 评论(0) 推荐(0) 编辑
摘要:参考:http://www.zsythink.net/archives/2311 之前的文章中,我们提到了shell中常用的字符串处理操作,我们来回顾一下 一、获取变量的长度(字符串长度)。 二、对变量值进行截取(截取字符串)。 三、替换变量值中的某段字符。 四、删除变量值中的某段字符。 五、对变量 阅读全文
posted @ 2020-09-23 17:42 minseo 阅读(331) 评论(0) 推荐(0) 编辑
摘要:参考:http://www.zsythink.net/archives/2296 上一篇文章中,我们提到了shell中常用的字符串处理操作,我们来回顾一下 一、获取变量的长度(字符串长度)。 二、对变量值进行截取(截取字符串)。 三、替换变量值中的某段字符。 四、删除变量值中的某段字符。 五、对变量 阅读全文
posted @ 2020-09-23 17:19 minseo 阅读(609) 评论(0) 推荐(0) 编辑
摘要:参考:http://www.zsythink.net/archives/2276 在shell中,当我们已经获取到某个变量的变量值的时候,可能还需要对变量值进行一定的处理,才能到我们最终想要的结果,今天我们就来聊聊shell中常见的变量处理方法,我们通常会对变量进行如下处理。 一、获取变量的长度(字 阅读全文
posted @ 2020-09-23 16:21 minseo 阅读(2268) 评论(0) 推荐(0) 编辑
摘要:参考:http://www.zsythink.net/archives/2252 如果直接描述 [ ] 与 [[ ]] 的区别,反而不太容易理解,不如先来看一些应用场景,根据应用场景,反而更容易理解。 场景一:判断变量是否为空 我们可以直接判断变量是否为空,方法如下 [root@node1 ~]# 阅读全文
posted @ 2020-09-23 14:48 minseo 阅读(869) 评论(0) 推荐(0) 编辑
摘要:参考:http://www.zsythink.net/archives/2224 bash中,如果想要比较两个数字的大小,最常用的关系运算符就是 "-gt"或者"-lt"了 最简单的示例如下 [root@node1 ~]# a=3 [root@node1 ~]# b=2 [root@node1 ~] 阅读全文
posted @ 2020-09-23 14:15 minseo 阅读(2019) 评论(0) 推荐(0) 编辑
摘要:参考:http://www.zsythink.net/archives/1166 在shell中,有两种组合命令的方法,在介绍这两种方法之前,我们先来看一个小示例。 目前有两个目录,这两个目录分别为/test1和/test2,目录中分别存在如下文件。 [root@node1 ~]# ls /test 阅读全文
posted @ 2020-09-23 13:45 minseo 阅读(1821) 评论(0) 推荐(0) 编辑
摘要:参考:http://www.zsythink.net/archives/1154 在了解shell中的逻辑运算之前,我们先回顾一下逻辑运算的概念,如下概念引用自"互动百科"。 什么是逻辑运算 ? 逻辑运算又称布尔运算,逻辑运算用来判断一件事情是"对"的还是"错"的,或者说是"成立"还是"不成立",判 阅读全文
posted @ 2020-09-23 11:30 minseo 阅读(1682) 评论(0) 推荐(0) 编辑
摘要:参考:http://www.zsythink.net/archives/1145 shell中,无法直接进行算术运算,如果直接进行算术运算会出现如下情况。 [root@node1 shell_learn]# a=1+2 [root@node1 shell_learn]# echo $a 1+2 [r 阅读全文
posted @ 2020-09-23 10:36 minseo 阅读(921) 评论(0) 推荐(0) 编辑
摘要:参考:http://www.zsythink.net/archives/279 这篇文章总结了怎样在bash shell中创建变量、使用变量、删除变量,并且演示了本地变量(全局变量和局部变量)、环境变量、只读变量和特殊变量的用法。 创建变量 如何在当前bash中创建一个变量呢,直接使用 "变量名=变 阅读全文
posted @ 2020-09-23 10:14 minseo 阅读(684) 评论(0) 推荐(0) 编辑
摘要:参考:http://www.zsythink.net/archives/2159 三元运算 还记的我们在学习awk的 "if..else" 结构时,举的例子吗?我们来回顾一下。 在centos7中,我们可以判断用户的UID是否小于1000,如果用户的UID大于1000,则用户为普通用户,如果用户的U 阅读全文
posted @ 2020-09-22 09:51 minseo 阅读(372) 评论(0) 推荐(0) 编辑
摘要:在awk中,可以自定义函数,也有内置的函数,今天我们就来总结一些常用的内置函数。 awk的内置函数大致可以分类为算数函数、字符串函数、时间函数、其他函数等 算数函数 最常用的算数函数有rand函数、srand函数、int函数。 可以使用rand函数生成随机数,但是使用rand函数时,需要配合sran 阅读全文
posted @ 2020-09-18 11:10 minseo 阅读(472) 评论(0) 推荐(0) 编辑
摘要:注:在阅读这篇文章之前,最好已经了解了一些开发的基本语法,比如,for循环、数组的基本使用 等,否则在阅读时 有可能遇到障碍。 前文中提及过,awk其实可以算作一门脚本语言,因为它包含了一个脚本语言的各种语法结构,比如条件判断语句,比如循环语句,那么,awk中能否使用"数组"呢?必须能啊,今天我们就 阅读全文
posted @ 2020-09-17 17:52 minseo 阅读(660) 评论(4) 推荐(2) 编辑
摘要:前文中,我们介绍了awk中的条件判断语句。 比如 "if" 比如 "if...else..." 比如 "if...else if...else..." 我们说过,这些语句都可以归类为"控制语句",但是这些并不是"控制语句"的全部,今天我们继续聊聊awk的"控制语句"。 今天的话题主要与"循环"有关, 阅读全文
posted @ 2020-09-17 14:05 minseo 阅读(211) 评论(0) 推荐(0) 编辑
摘要:在前文中,我们已经使用过了awk的选项、模式 以及 动作。 这篇文章中,我们再来聊聊动作。 不知从何说起,我们还是从之前的示例开始聊吧,回顾一个小例子,如下图所示。 如上图所示,红线标注部分就是awk命令中的"动作",我想你应该已经非常熟悉了。 其实,我们可以把上述"动作"分解,拆开成两部分去理解, 阅读全文
posted @ 2020-09-17 11:36 minseo 阅读(261) 评论(0) 推荐(0) 编辑
摘要:在前文中,我们已经认识了awk的模式,而且,我们已经介绍了awk中的3中模式 1、空模式 2、关系运算模式 3、BEGIN/END模式 那么今天,我们就来介绍一下awk的另外两种常用模式,正则模式与行范围模式,别着急,我们一个一个慢慢聊。 正则模式 先说说什么是正则模式。 见名知义,"正则模式"肯定 阅读全文
posted @ 2020-09-17 10:53 minseo 阅读(499) 评论(0) 推荐(0) 编辑
摘要:我们之前一直在提,awk的使用语法如下(我想你已经很熟悉了): awk [options] 'Pattern {Action}' file1 file2 ··· 对于options(选项)而言,我们使用过-F选项,也使用过-v选项。 对于Action(动作)而言,我们使用过print与printf, 阅读全文
posted @ 2020-09-17 09:13 minseo 阅读(306) 评论(0) 推荐(0) 编辑
摘要:之前的文章举过很多例子,我们也体验到了awk的格式化能力,但是我们的体验并不全面,所以,现在,我们来更加深刻的了解一下awk的格式化能力,在前文的举例中,我们在使用awk时,通常使用print 对文本进行输出,但是动作print 只能实现简单的文本输出功能,并不能对文本格式进行改变,如果想要改变文本 阅读全文
posted @ 2020-09-16 17:34 minseo 阅读(388) 评论(0) 推荐(0) 编辑
摘要:如果你是一个使用过C语言的程序员,那么你一定会很容易理解printf命令,printf命令模仿了C语言中printf( )函数。 即使你没有用过C语言和printf()函数,看完这篇文章以后,你也会很快的掌握printf命令的用法。 printf命令的主要作用就是输出文本,不不不,这样说并不准确,应 阅读全文
posted @ 2020-09-16 16:04 minseo 阅读(1600) 评论(0) 推荐(0) 编辑
摘要:在阅读这篇文章之前,最好先阅读之前的文章,以之前的知识点作为基础,再看这篇文章会容易理解很多。 之前的文章在使用到"输入分隔符"和"输出分隔符"的时候,我们都提到了一个名词:"变量"。 这篇文章我们就来详细的总结一下awk中的变量,我们会先对概念进行描述,如果概念中有不明白的地方,不要着急,对应其示 阅读全文
posted @ 2020-09-16 15:00 minseo 阅读(412) 评论(0) 推荐(0) 编辑
摘要:在前一篇文章中我们略微提到过"分隔符",但是并没有细说,那么我们今天就聊聊什么是分隔符,awk有哪些分隔符,awk的默认分割符是空格,但是,这样描述并不精确,因为,awk的分隔符还分为两种,"输入分隔符" 和 "输出分隔符" 。 此处我们先将分隔符的概念列出,看不懂没关系,我们会一一进行举例,到时自 阅读全文
posted @ 2020-09-16 14:20 minseo 阅读(979) 评论(0) 推荐(0) 编辑
摘要:awk是一个报告生成器,它拥有强大的文本格式化的能力,这就是专业的说法。 你可能不理解所谓的报告生成器中的"报告"是什么,你可以把"报告"理解为"报表"或者"表格",也就是说,我们可以利用awk命令,将一些文本整理成我们想要的样子,比如把一些文本整理成"表"的样子,然后再展示出来,刚才概念中提到的" 阅读全文
posted @ 2020-09-16 13:37 minseo 阅读(334) 评论(0) 推荐(0) 编辑
摘要:参考:https://www.zabbix.com/download 环境查看 配置源 # wget https://repo.zabbix.com/zabbix/5.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.0-1+bionic_al 阅读全文
posted @ 2020-09-16 11:05 minseo 阅读(1527) 评论(0) 推荐(0) 编辑
摘要:安装 yum -y install tcpdump 基本用法 #抓取网口eth0流量包 # tcpdump -i eth0 -nnv #指定抓取100个包 # tcpdump -i eth0 -nnv -c 100 #把抓包输出写入文件 # tcpdump -i eth0 -nnv -w /file 阅读全文
posted @ 2020-09-12 14:28 minseo 阅读(499) 评论(0) 推荐(0) 编辑
摘要:入侵检测 本地平台检测方法 云平台检测方法 查看系统日志 查看安全相关日志 ssh远程登录失败日志 #grep -i Failed /var/log/secure ssh远程登录成功日志 # grep -i Accepted /var/log/secure 统计登录成功或登录失败的ip,并进行去重降 阅读全文
posted @ 2020-09-11 17:49 minseo 阅读(281) 评论(0) 推荐(0) 编辑
摘要:服务安全 服务安全概述 SELinux 数据加密 常用服务安全 SELinux 访问控制分类 DAC Discretionary Access Control,自主访问被控制,依据进程的所有者与文件资源的rwx权限来决定有无访问权限。 缺点: 1. 如果某个进程以root身份运行,可能被恶意目的 2 阅读全文
posted @ 2020-09-11 14:31 minseo 阅读(295) 评论(0) 推荐(0) 编辑
摘要:CentOS7如果启动失败或者其他问题需要进入单用户模式 重启主机按e键,进入以下界面修改 修改某些配置文件 阅读全文
posted @ 2020-09-11 13:58 minseo 阅读(668) 评论(0) 推荐(0) 编辑
摘要:此处,我们对前文中的一些注意点进行总结,我们可以理解为对"常用套路"的总结。 记住这些套路,能让我们事半功倍。 阅读这篇文章之前,请确定你已经阅读了之前的文章,否则你有可能会不理解为什么要这样做。 1、规则的顺序非常重要。 如果报文已经被前面的规则匹配到,IPTABLES则会对报文执行对应的动作,通 阅读全文
posted @ 2020-09-07 09:33 minseo 阅读(335) 评论(0) 推荐(0) 编辑
摘要:前文中,我们已经了解了如下动作 ACCEPT、DROP、REJECT、LOG 今天,我们来认识几个新动作,它们是: SNAT、DNAT、MASQUERADE、REDIRECT 在认识它们之前,我们先来聊聊NAT,如果你对NAT的相关概念已经滚瓜烂熟,可以跳过如下场景描述。 NAT是Network A 阅读全文
posted @ 2020-09-04 16:50 minseo 阅读(503) 评论(0) 推荐(0) 编辑
摘要:前文一直在介绍iptables的匹配条件,并没有对动作进行过总结,那么此处,我们就来总结一下iptables中的动作。 之前的举例中已经用到了一些常用动作,比如ACCEPT、DROP、REJECT等。 其实,"动作"与"匹配条件"一样,也有"基础"与"扩展"之分。 同样,使用扩展动作也需要借助扩展模 阅读全文
posted @ 2020-09-04 09:16 minseo 阅读(843) 评论(0) 推荐(0) 编辑
摘要:我们一起来回顾一下之前的知识,在第一篇介绍iptables的文章中,我们就描述过防火墙的概念,我们说过,防火墙从逻辑上讲,可以分为主机防火墙与网络防火墙。 主机防火墙:针对于单个主机进行防护。 网络防火墙: 往往处于网络入口或边缘,针对于网络入口进行防护,服务于防火墙背后的本地局域网。 在前文的举例 阅读全文
posted @ 2020-09-03 16:14 minseo 阅读(615) 评论(0) 推荐(0) 编辑
摘要:你可能会问,iptables的默认链就已经能够满足我们了,为什么还需要自定义链呢? 原因如下: 当默认链中的规则非常多时,不方便我们管理。 想象一下,如果INPUT链中存放了200条规则,这200条规则有针对httpd服务的,有针对sshd服务的,有针对私网IP的,有针对公网IP的,假如,我们突然想 阅读全文
posted @ 2020-09-03 11:12 minseo 阅读(1633) 评论(0) 推荐(0) 编辑
摘要:前文中一直在强调一个概念:报文在经过iptables的链时,会匹配链中的规则,遇到匹配的规则时,就执行对应的动作,如果链中的规则都无法匹配到当前报文,则使用链的默认策略(默认动作),链的默认策略通常设置为ACCEPT或者DROP。 那么,当链的默认策略设置为ACCEPT时,如果对应的链中没有配置任何 阅读全文
posted @ 2020-09-03 10:15 minseo 阅读(683) 评论(0) 推荐(0) 编辑
摘要:当我们通过http的url访问某个网站的网页时,客户端向服务端的80端口发起请求,服务端再通过80端口响应我们的请求,于是,作为客户端,我们似乎应该理所应当的放行80端口,以便服务端回应我们的报文可以进入客户端主机,于是,我们在客户端放行了80端口,同理,当我们通过ssh工具远程连接到某台服务器时, 阅读全文
posted @ 2020-09-03 09:46 minseo 阅读(604) 评论(0) 推荐(0) 编辑
摘要:UDP扩展 我们先来说说udp扩展模块,这个扩展模块中能用的匹配条件比较少,只有两个,就是--sport与--dport,即匹配报文的源端口与目标端口。 没错,tcp模块中也有这两个选项,名称都一模一样。 只不过udp扩展模块的--sport与--dport是用于匹配UDP协议报文的源端口与目标端口 阅读全文
posted @ 2020-09-02 16:43 minseo 阅读(672) 评论(0) 推荐(0) 编辑
摘要:参考:http://www.zsythink.net/archives/1578 阅读全文
posted @ 2020-09-02 15:57 minseo 阅读(504) 评论(0) 推荐(0) 编辑
摘要:前文已经总结了iptables中的基本匹配条件,以及简单的扩展匹配条件,此处,我们来认识一些新的扩展模块。 iprange扩展模块 之前我们已经总结过,在不使用任何扩展模块的情况下,使用-s选项或者-d选项即可匹配报文的源地址与目标地址,而且在指定IP地址时,可以同时指定多个IP地址,每个IP用"逗 阅读全文
posted @ 2020-09-02 15:38 minseo 阅读(1180) 评论(0) 推荐(0) 编辑
摘要:经过前文的总结,我们已经能够熟练的管理规则了,但是我们使用过的"匹配条件"少得可怜,之前的示例中,我们只使用过一种匹配条件,就是将"源地址"作为匹配条件。 那么这篇文章中,我们就来了解一下更多的匹配条件,以及匹配条件的更多用法。 匹配条件的更多用法 还是从我们最常用的"源地址"说起吧,我们知道,使用 阅读全文
posted @ 2020-09-01 17:44 minseo 阅读(1051) 评论(0) 推荐(0) 编辑
摘要:上一篇文章中,我们已经学会了怎样使用iptables命令查看规则,那么这篇文章我们就来总结一下,怎样管理规则。 之前,我们把查看iptables规则的操作比作"增删改查"当中的"查",那么在这篇文章中,我们就聊聊怎样对iptables进行"增、删、改"操作。 首先,我们来回顾一下什么是iptable 阅读全文
posted @ 2020-09-01 14:08 minseo 阅读(1262) 评论(0) 推荐(0) 编辑
摘要:之前在iptables的概念中已经提到过,在实际操作iptables的过程中,是以"表"作为操作入口的,如果你经常操作关系型数据库,那么当你听到"表"这个词的时候,你可能会联想到另一个词 "增删改查",当我们定义iptables规则时,所做的操作其实类似于"增删改查",那么,我们就先从最简单的"查" 阅读全文
posted @ 2020-09-01 14:07 minseo 阅读(1596) 评论(0) 推荐(1) 编辑
摘要:参考:http://www.zsythink.net/archives/tag/iptables/page/2/ 在计算机领域,防火墙是用于保护信息安全的设备,其会依照用户定义的规则,允许或限制数据的传输。 用于保护内网安全的一种设备 依据规则进行防护 用户定义规则 允许或拒绝外部用户访问 防火墙分 阅读全文
posted @ 2020-09-01 11:16 minseo 阅读(17887) 评论(0) 推荐(4) 编辑

点击右上角即可分享
微信分享提示