有谁用过红狮控股股票智富,觉得它的专业性如何?请非广告性回答。


1. Linux命令概览这部分是给稍微有点Linux经验的同学准备的,如果你是初学者,请跳过此part直接进入第二部分。1.1目录操作工作中,最常打交道的就是对目录和文件的操作。linux提供了相应的命令去操作他,并将这些命令抽象、缩写。1.1.1 基本操作可能是这些命令太常用了,多打一个字符都是罪过。所以它们都很短,不用阿拉伯数字,一个剪刀手就能数过来。看命令。mkdir 创建目录 make dircp 拷贝文件 copymv 移动文件 moverm 删除文件 remove例子:# 创建目录和父目录a,b,c,dmkdir -p a/b/c/d# 拷贝文件夹a到/tmp目录cp -rvf a/ /tmp/# 移动文件a到/tmp目录,并重命名为bmv -vf a /tmp/b# 删除机器上的所有文件rm -rvf /1.1.2 漫游linux上是黑漆漆的命令行,依然要面临人生三问:我是谁?我在哪?我要去何方?ls 命令能够看到当前目录的所有内容。ls -l能够看到更多信息,判断你是谁。pwd 命令能够看到当前终端所在的目录。告诉你你在哪。cd 假如你去错了地方,cd命令能够切换到对的目录。find find命令通过筛选一些条件,能够找到已经被遗忘的文件。至于要去何方,可能就是主宰者的意志了。1.2 文本处理这是是非常非常加分的技能。get到之后,也能节省更多时间来研究面向对象。小姐姐味道已经输出了“最常用的vim、sed、awk技巧系列”。1.2.1 查看文件cat最常用的就是cat命令了,注意,如果文件很大的话,cat命令的输出结果会疯狂在终端上输出,可以多次按ctrl c终止。# 查看文件大小du -h file# 查看文件内容cat fileless既然cat有这个问题,针对比较大的文件,我们就可以使用less命令打开某个文件。类似vim,less可以在输入/后进入查找模式,然后按n(N)向下(上)查找。有许多操作,都和vim类似,你可以类比看下。tail大多数做服务端开发的同学,都了解这么命令。比如,查看nginx的滚动日志。tail -f access.logtail命令可以静态的查看某个文件的最后n行,与之对应的,head命令查看文件头n行。但head没有滚动功能,就像尾巴是往外长的,不会反着往里长。tail -n100 access.loghead -n100 access.log1.2.1 统计sort和uniq经常配对使用。sort可以使用-t指定分隔符,使用-k指定要排序的列。下面这个命令输出nginx日志的ip和每个ip的pv,pv最高的前10# 2019-06-26T10:01:57 08:00|nginx001.server.ops.pro.dc|100.116.222.80|10.31.150.232:41021|0.014|0.011|0.000|200|200|273|-|/visit|sign=91CD1988CE8B313B8A0454A4BBE930DF|-|-|http|POST|112.4.238.213awk -F'|' '{print $3}' access.log
sort
uniq -c
sort -nk1 -r
head -n101.2.3 其他grepgrep用来对内容进行过滤,带上--color参数,可以在支持的终端可以打印彩色,参数n则输出具体的行数,用来快速定位。比如:查看nginx日志中的POST请求。grep -rn --color POST access.log推荐每次都使用这样的参数。如果我想要看某个异常前后相关的内容,就可以使用ABC参数。它们是几个单词的缩写,经常被使用。A after 内容后n行B before 内容前n行C count? 内容前后n行就像是这样:grep -rn --color Exception -A10 -B2
error.logdiffdiff命令用来比较两个文件是否的差异。当然,在ide中都提供了这个功能,diff只是命令行下的原始折衷。对了,diff和patch还是一些平台源码的打补丁方式,你要是不用,就pass吧。1.3压缩为了减小传输文件的大小,一般都开启压缩。linux下常见的压缩文件有tar、bzip2、zip、rar等,7z这种用的相对较少。.tar 使用tar命令压缩或解压.bz2 使用bzip2命令操作.gz 使用gzip命令操作.zip 使用unzip命令解压.rar 使用unrar命令解压最常用的就是.tar.gz文件格式了。其实是经过了tar打包后,再使用gzip压缩。创建压缩文件tar cvfz
archive.tar.gz dir/解压tar xvfz. archive.tar.gz快去弄清楚它们的关系吧。1.4 日常运维开机是按一下启动按钮,关机总不至于是长按启动按钮吧。对了,是shutdown命令,不过一般也没权限-.-!。passwd命令可以用来修改密码,这个权限还是可以有的。mountmount命令可以挂在一些外接设备,比如u盘,比如iso,比如刚申请的ssd。可以放心的看小电影了。mount /dev/sdb1 /xiaodianyingchownchown 用来改变文件的所属用户和所属组。chmod 用来改变文件的访问权限。这两个命令,都和linux的文件权限777有关。示例:# 毁灭性的命令chmod 000 -R /# 修改a目录的用户和组为 xjjchown -R xjj:xjj a# 给a.sh文件增加执行权限(这个太常用了)chmod a x a.shyum假定你用的是centos,则包管理工具就是yum。如果你的系统没有wget命令,就可以使用如下命令进行安装。yum install wget -ysystemctl当然,centos管理后台服务也有一些套路。service命令就是。systemctl兼容了service命令,我们看一下怎么重启mysql服务。 推荐用下面这个。service mysql restartsystemctl restart
mysqld 对于普通的进程,就要使用kill命令进行更加详细的控制了。kill命令有很多信号,如果你在用kill -9,你一定想要了解kill -15以及kill -3的区别和用途。susu用来切换用户。比如你现在是root,想要用xjj用户做一些勾当,就可以使用su切换。su xjjsu - xjj-可以让你干净纯洁的降临另一个账号,不出意外,推荐。1.5 系统状态概览登陆一台linux机器,有些命令能够帮助你快速找到问题。这些命令涵盖内存、cpu、网络、io、磁盘等。unameuname命令可以输出当前的内核信息,让你了解到用的是什么机器。uname -apsps命令能够看到进程/线程状态。和top有些内容重叠,常用。# 找到java进程ps -ef|grep javatop系统状态一览,主要查看。cpu load负载、cpu占用率。使用内存或者cpu最高的一些进程。下面这个命令可以查看某个进程中的线程状态。top -H -p pidfreetop也能看内存,但不友好,free是专门用来查看内存的。包括物理内存和虚拟内存swap。dfdf命令用来查看系统中磁盘的使用量,用来查看磁盘是否已经到达上限。参数h可以以友好的方式进行展示。df -hifconfig查看ip地址,不啰嗦,替代品是ip addr命令。ping至于网络通不通,可以使用ping来探测。(不包括那些禁ping的网站)netstat虽然ss命令可以替代netstat了,但现实中netstat仍然用的更广泛一些。比如,查看当前的所有tcp连接。netstat -ant此命令,在找一些本地起了什么端口之类的问题上,作用很大。1.6 工作常用还有一些在工作中经常会用到的命令,它们的出现频率是非常高的 ,都是些熟面孔。export很多安装了jdk的同学找不到java命令,export就可以帮你办到它。export用来设定一些环境变量,env命令能看到当前系统中所有的环境变量。比如,下面设置的就是jdk的。export PATH=$PATH:/home/xjj/jdk/bin有时候,你想要知道所执行命令的具体路径。那么就可以使用whereis命令,我是假定了你装了多个版本的jdk。crontab这就是linux本地的job工具。不是分布式的,你要不是运维,就不要用了。比如,每10分钟提醒喝茶上厕所。*/10 * * * * /home/xjj/wc10mindatedate命令用来输出当前的系统时间,可以使用-s参数指定输出格式。但设置时间涉及到设置硬件,所以有另外一个命令叫做hwclock。xargsxargs读取输入源,然后逐行处理。这个命令非常有用。举个栗子,删除目录中的所有class文件。find .
grep .class$
xargs rm -rvf#把所有的rmvb文件拷贝到目录ls *.rmvb
xargs -n1 -i cp {} /mount/xiaodianying1.7 网络linux是一个多作业的网络操作系统,所以网络命令有很多很多。工作中,最常和这些打交道。ssh这个,就不啰嗦了。你一定希望了解ssh隧道是什么。你要是想要详细的输出过程,记得加参数-v。scpscp用来进行文件传输。也可以用来传输目录。也有更高级的sftp命令。scp a.txt 192.168.0.12:/tmp/a.txtscp -r a_dir 192.168.0.12:/tmp/wget你想要在服务器上安装jdk,不会先在本地下载下来,然后使用scp传到服务器上吧(有时候不得不这样)。wget命令可以让你直接使用命令行下载文件,并支持断点续传。wget -c http://oracle.fuck/jdk2019.binmysqlmysql应用广泛,并不是每个人都有条件用上navicat的。你需要了解mysql的连接方式和基本的操作,在异常情况下才能游刃有余。mysql -u root -p -h 192.168.1.2不要觉得复杂,命令是有限的,但激情无限;都会也不要骄傲,一个vim就够折腾一辈子。捷径就是总结,深入只有探索。白马过隙,终会行云流水,手到擒来。物是人非,年华易老。唯有时光,不会辜负。2. 挑选一个Linux发行版和Linux比较像的还有Unix,但如果你是一个二三十岁的小青年,你接触到可能只有Linux的世界了。从手机,到服务器上广泛使用的centos,到漂亮的桌面发行版ubuntu,甚至是风靡全球的树莓派,到处都是linux的身影。2.1 你需要知道这些linux历史知道一点相关操作系统的历史,是能够陶冶情操的。GNU/Linux是为了抵制一些商业公司的垄断行为而发展起来的,凝结了一代互联网人向往自由的心血。和其他Unix比起来,Linux其实很年轻。直到1991年,一个叫Linus Torvalds的芬兰年轻人才开始开发我们现在所知道的Linux内核。Linux的吉祥物是企鹅,这个吉祥物直到1996年才确定,所以你会经常看到一些搞笑的图片。如果你是90后,那这只小企鹅几乎和你一般大,还是个年轻的小伙。Linux的发展历程比较的复杂。经过一次次的过关斩将,Linux走到今天确属不易。关于其发展历史,你可以通过下面的链接,查看高清图片。20年的时间,对软件行业来说,是一段非常漫长的时光,有多少的风光已经物是人非。高清见图片(http://ick/aUnx) 。可以看到,linux只占了那可怜的一小块。这就像人类的出现,在生命的长河中,微不足道,但却是一个质的飞跃。你可能注意到,在前面的描述中,说的是GUN/Linux,而不仅仅是Linux。Linux本身只是一个内核,作用有限,只有和GNU联合起来,拥有完整的生态才会发挥它的作用。谈到上面区别的原因,是为了记住Richard Stallman在1983年发起的GNU计划。他同时是smalltalk语言的发明者,被公认的第二个面向对象的语言。我在早些年,还研究过一段时间。哦,他还编写了一个巨无霸编辑器,Emacs。只有一个人被捧成神,他才会有能量折磨你。针对于Linux历史,我们不做过多介绍。下面介绍几个经典的发行版本。2.2 精选版本介绍现在的Linux发行版本,已经有上千个,你要是喜欢、而且多金,你也可以做一个。如何在这其中,找到最合适的版本,是需要经过一番折腾的。很多发行版本,其实是很小众的。这不像是哲学领域的某些东西,真理掌握在少数人手中。只有获得良好发展,并得到认可的Linux发行版,才有它的价值,可以说是彻头彻尾的实用主义。但这东西又像女朋友,刚开始感觉风采迥异,各有千秋,到最后了解到是一样的庸俗不堪。但有人就是喜欢Linux相关的工作,一干就是一辈子...我可以先说一下自己的历程。刚开始,接触的是红帽redhat,当时还没有分什么企业版。用了一段时间以后,又切换成更稳定的slackware。但是slackware上的程序更新实在太慢了,于是又切换成readhat血统的fedora,这个版本的软件保鲜度很高。其间,又尝试了其他几个linux版本,最终,在2013年前后,换成了滚动升级的archlinux,直到现在。要我个人做个推荐的话:1、个人用户(技术),桌面版用ubuntu=>archlinux。2、企业用户,服务器,使用centos。2.3 主要起源这么多Linux版本,其实有两条主线。debian系列和redhat系列。很多发行版本,其实是二次翻新,很多就直接拿这两个基础系列进行改造。正所谓:操作系统千千万,都是帽子和大便。debian下面这个屎一样的图表,就是debian。呃呃呃,和大便只差一个字母。Debian计划是一个致力于创建一个自由操作系统的合作组织。它的特点是:稳定、安全,到现在为止,已经发展了20多年了。我们所熟悉的ubuntu,就是基于debian改进的。redhat红帽是一家商业公司,涉足Linux比较早,现在对个人提供一些红帽认证之类的证书。现在云主机使用较多的centos,包括红帽公司的RHEL,占据了大部分服务器市场。近期,centos 8推出了centos stream滚动版本,看起来更像是一个正常的操作系统。2.4 典型版本我们看一下处于不同层次的几个典型版本。从应用方面来说,linux有桌面、服务器、研究用等用途。2.4.1、ubuntuubuntu的出现,对Linux的推广有不可磨灭的贡献。它是一个易于安装的桌面版本(也有服务器版本),界面非常漂亮。ubuntu是基于debian系统的unstable分支修改的,包管理软件是apt-get。它的创建者是Mark Shuttleworth,南非企业家,世界上第二名自资的太空游客。我想,无论是太空还是ubuntu,这都是梦想吧。2.4.2、centoscentos是目前最流行的服务器版本。它是RHEL源代码再编译的产物,主要是为了绕开一些法律问题。在包管理,甚至稳定性上,与红帽企业版没什么差别。2.4.3、archlinuxarchlinux采用滚动升级的模式进行发行,尽全力提供最新的稳定版本。刚开始安装,arch只提供一个基本的系统,甚至连界面都没有,对初学者不是很友好。但是,archlinux是非常干净的系统。很多软件,只有你需要的时候才会安装。它的软件和理念通常都是最新的,定制化非常强,深得许多Linux爱好者的喜爱。2.4.4、gentoo上面的archlinux,提供了编译后的软件包。用户在安装软件时,只需要下载、解压即可。gentoo将这个过程更近一步,可以说更加的变态。它下载的是软件的源代码,然后在本地进行编译,然后安装。这通常非常的蛋疼,因为下载、编译会花费非常长的时间,但它有一个非常大的优点,就是稳定。这个系统比较底层,对技能要求更多,不太推荐。2.4.5 、LFSLFS的全拼是“linux from scratch”,意思是从零构建一个linux系统。它有一个非常详细的安装文档,教你怎样编译内核,编译引导程序,编译和配置必要的软件。这是一个疯狂而必要的过程。如果你想要自己的Linux之上更上层楼,跟着文档做一遍是受益无穷的。你需要经过多次交叉编译,最终使用chroot命令切换到新系统进行后续操作。想做一个自己的发行版么?从这开始吧。2.4.6、kalikali linux是一个非常专业的发行版。如果你在做渗透方面的工作,将是一个非常好的选择。发行版的安装包非常大,包含了常见的破解工具,渗透工具,攻击工具。这非常的危险,我曾用它暴力破解了非常多的wifi密码,成功的窥视了邻居的隐私。还是非常好用的。3. 安装一个清爽的Linux系统工欲善其事,必先利其器。你可能会想到买一台云主机练练手,但那毕竟要花点银子,我们可以自己安装一个。我们在上面提到,目前使用最广泛的,就是centos。不论你是自建机房,还是使用类似于阿里云这样的云端环境,大多数都会提供centos的安装。你可能会找到多种安装虚拟机的方式。本小节,将使用虚拟双网卡的方式,准备一个纯洁的环境。这一小节,图片很多。以阿里云为例,默认第一位就是CentOS,提供了从7.6版本到旧版本的多个镜像。3.1 下载下面的文章,我们就以CentOS 7稳定版本为基础环境。centos很流行,所以镜像也有很多。国内,我们从上海交大下载,速度应该会快一些。http://ftp.sjtu.edu.cn/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-1908.iso如果交大哪天不维护了。可以从这里找:http://centos.mirror.ndchost.com/7/isos/x86_64/CentOS-7-x86_64-Minimal-1908.iso为了让大家学到更多的知识,我们使用最小化的系统ISO。最小化的iso不到1GB,而预装了很多软件的dvd有4.3GB的大小。我们就用这个减肥版。3.2 安装Linux要想快速学习、体验Linux,最便捷的方式,就是使用虚拟机进行安装。目前,最流行的虚拟机,一个是VMware,一个是VirtualBox。在MacOS上还有一个Parallels Desktop。其中,VirtualBox免费而且跨平台,能够满足我们的需求。接下来,将一步步引导你进行安装。(1) 点击新建,开启安装旅程。(2) 填写名称,版本。然后点击继续。(3)按照你的机器配置,选择内存我的机器是8GB内存的,就分配给虚拟机2GB,这个已经足够用了。(4) 创建一个虚拟磁盘点击继续后,将弹出一个对话框。我们不用多管,一直点继续,知道对话框消失。这非常的粗暴。(5) 接下来,点击设置。(6) 切换到Storage选项,选择我们下载的iso(7) 点击启动,开始安装。使用方向键切换,使得高亮聚焦在Install CentOS 7上。点击确定,开始安装。(8) 弹出一个安装界面接下来的步骤有点多,如果我们没有特别的介绍,那么直接continue就ok了。(9) 接下来,配置磁盘分区依然保持默认,并按按钮Done退出。(10) 配置用户linux上默认的用户名为root。接下来我们设置root用户的密码为123456。由于这是一个弱密码,所以需要点击两次确定退出。(11) 等待安装完毕,进行重启(12) 安装成功3.3 联网这个时候,我们安装的虚拟机,还不能联网,无法把自己的意念传达出去。由于我们没有对虚拟机进行任何设置,所以使用的是默认的NAT模式。将光标聚焦到命令行窗口,然后输入命令dhclient。等待几秒钟,执行ping baidu.com测试以下网络,可以看到能够正常访问网络了。上面黑漆漆的窗口,就是我们现在的Linux界面。有人觉得很丑,就像是在玩dos,但像我这种不可救药的人,却觉得格外的亲切。接下来的命令,我们不会再截图,而使用高亮的代码块表示。为了不至于让人晕头转向,请先看下图。3.4 外部访问虚拟机由于NAT模式的特点,我们的虚拟机能够访问外网,但无法被外部发现。酒香竟怕巷子深。为了解决这个问题,我们需要再添加一块网卡。在做这些更改之前,需要首先关闭虚拟机。可以强制关闭机器,也可以在命令行中输入:shutdown -h now虚拟机关闭后,再次点击设置,切换到网络适配器选项卡。如图,添加一个新的网络适配器,适配器类型为Host-only Adapter。通过这块网卡,我们的宿主机就能够访问它了。再次启动虚拟机,执行dhclient命令后,执行ip addr查看主机的ip地址。可以看到,我们现在有两块网卡,两个ip地址。记录下192打头的网络地址,我们会使用外部的程序,比如XShell、SecureCRT等,进行连接。比如,我这里的ip地址是:192.168.99.100。不废话,看图。小提示:关于虚拟网卡的网段,如果有差异。你可以在全局设置里,改成和我一样的。3.5 远程连接你可能已经体验到,通过虚拟机自带的命令行界面进行输入,局限性非常大。通过远程连接,可以把终端界面切换到我们熟悉的操作模式,如果能够显示彩色的终端,那再好不过了。下面介绍几个工具,一般的,使用xshell的居多。WindowsXShell 你可能在公司内,见过你的SRE同事,运指如飞,命令字符如流水一般撒过屏幕。即使非常繁杂,难以记忆的密码,也能瞬间输入。他可能用的就是xshell。SecureCRT 比较老的一款产品,使用也较多。MobaXterm MobaXterm就是一单文件纯绿色软件,下载过来exe包直接运行即可,不需要任何的安装过程。它们都有免费版和专业版之分。无力购买的话,就找找破解版。但是注意,盗版汉化的ssh客户端,有些别有用心的人会在软件中植入木马,窃取你的密码、证书,这种情况已经发生过很多次。MacOS对于macos用户来说,简单的很。直接使用iTerm,输入命令行即可。比如使用下面的命令连接我们的机器。ssh root@192.168.99.100Linux唔,你都已经是Linux环境了,还折腾个啥虚拟机呢?直接用吧。推荐使用XShell、SecureCRT、iTerm等工具,通过ssh进行远程连接。对于一些命令拷贝、验证来说,要方便快捷的多。4. 对Linux命令行有个初步了解万事开头难。面对黑漆漆的Linux窗口,要勇敢的走出第一步。不要怕输错了什么,系统健壮的很。命令行通常会拥有比图形界面更高的效率,更加重要的是它可以做自动化之类的小工具,这使得生产力产生质的飞跃。现在,你已经安装好了centos,并远程连接上了它。我们拥有了它,但并不能了解它的脾气。接下来,让我们进入Linux命令行的世界。和我签订契约吧,少年。本小节会使用非常详细的演进方式,来看一下一个命令,是怎样生成和执行的。4.1、简单尝试好啦,我们现在就在终端里了。什么叫做终端呢?你在很多黑客电影里,看到的黑漆漆的界面就是,它提供了一个可以输入字符串的交互式界面,至于那些闪光的、扫描机一样的东西,是不存在的。尝试输入些什么吧。 比如:jdsjf。[root@localhost ~]# jdsjf-bash: jdsjf: command not found我们再次把这张图贴一下。怎么回事?命令的输出翻译成中文,就是“找不到命令”的意思。什么叫命令?就是我们上面随便输入的字符串jdsjf。然后,我们看下提示中其他一些有用的东西。↓↓↓↓↓↓bash 代表的是我们所使用的shell,shell可以认为是一个解释器,将我们的输入解释成一系列可执行的指令。现在的linux发行版,最流行的就是bash解释器,几乎每个都预装了它。命令找不到,证明我们的字符串bash解释不了。但是,Linux上一些目录里的文件,是可以被默认找到的,这些目录的集合,就叫PATH 。PATH还是一个环境变量,我们可以通过命令查看它的尊容。[root@localhost ~]# echo $PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin想要知道系统中有哪些命令,就可以看下上面这些文件夹中,都有哪些文件。文件非常非常之多,但是大部分我们不会接触。所以,xjjdog才会写这么个东西--聚焦那些最常用,最有用的命令,最常用的参数,最有用的场景。命令输出后,还有一些额外的东西,比如[root@localhost ~],这部分叫做提示符,光标会一直跳动,等待你的输入。这部分是可以定制的,甚至可以定制的十分漂亮。4.2、Hello World到现在为止,我们什么都没得到。按照程序员的想法来说,就要实现一个hello world的程序。在终端shell里,这个过程变得简单,远比写一个java程序简单。[root@localhost ~]# echo 'Hello World'Hello World如上所示,echo的意思就是输出一些内容。后面的Hello World,就叫做参数,它们之间以空格分隔,可以接受多个参数。[root@localhost ~]# echo 'Hello World' , 'Fuck 996'Hello World , Fuck 996以上命令能够正常运行,证明echo是我们的终端能够认识的一个命令。那到底这个命令是在什么地方呢?可以使用whereis命令进行查找。[root@localhost ~]# whereis echoecho: /usr/bin/echo /usr/share/man/man1/echo.1.gz命令显示。我们的echo命令全路径,是/usr/bin/echo,由于它处于PATH目录中,所以能够被识别到。4.3、将命令加入PATH接下来,我们把上面的命令,做成一个脚本。然后将这个脚本,放到PATH目录中。不过先等等,我们要先给命令起个名字。首先需要创建一个文件。在Linux上,创建文件使用touch命令。[root@localhost ~]# touch jdsjf命令执行后,什么都没发生,它只是创建了一个空文件。接下来,我们向其中添加一些内容。[root@localhost ~]# echo 'echo 'Hello World'' > jdsjf注意符号>,它的意思是,将前面的输出,重定向到后面的文件中。执行完上面的命令,jdsjf 中的内容,就变成了echo 'Hello World。接下来,我们尝试着去执行刚才生成的命令。[root@localhost ~]# ./jdsjf-bash: ./jdsjf : Permission denied我们通过相对路径的方式,来执行刚刚生成的命令。结果,终端显示我们并没有这个命令的执行权限。其实,Linux在权限控制这一方面,非常的详细。一个文件,有可读、可写、可执行三种属性。如果想要一个文件能够执行,需要给它添加执行权限,这个过程是由命令chmod完成的。[root@localhost ~]# chmod u x jdsjf[root@localhost ~]# ./jdsjfHello World我们将在后面的章节,来详细介绍权限方面的知识。如上所示,命令已经能正常输出,接下来,我们把命令移动到PATH中的一个目录。[root@localhost ~]# mv jdsjf /usr/local/bin/[root@localhost ~]# jdsjfHello World不需要加任何的相对路径,现在,只需要输入jdsjf,就可以正常输出一串数字。我们成功的让一个没有任何意义的字符串,表达了它的想法。虽然我们依然是它的主宰。你可以想一下下面这三个问题:1、我可以自定义一个目录,比如/root/mybin,把它加入到PATH么?2、我可以省略上面的touch命令,直接使用重定向生成文件么?3、除了放到PATH和相对路径,还有没有其他的命令执行方式?5. Linux漫游方式想要了解linux的基本使用方法,就要了解一个基本的事实--linux系统中,一切皆文件。不管是命令,还是文档,甚至设备,目录,套接字,在linux上对它们的操作都是一致对待的。许多开发驱动程序的小伙伴,会发现使用的一些函数,和读写文件的没什么两样(open、close、read、write、ioctl)。今天我们所说的基本操作,针对的就是普通文件和目录,本小节将详细解释相关命令。5.1、当前路径到现在为止,我们还不知道自己在系统的什么地方。在浏览器上,我们能够通过导航栏上的url,了解到自己在互联网上的具体坐标。相似的功能,是由pwd命令提供的,它能够输出当前的工作目录。pwd命令是非常非常常用的命令,尤其是在一些命令提示符设置不太友好的机器上。另外,它也经常用在shell脚本中,用来判断当前的运行目录是否符合需求。有很多线上事故,都是由于没有确认当前目录所引起的。比如rm -rf *这种危险的命令。在执行一些高危命令时,随时确认当前目录,是个好的习惯。[root@localhost ~]# pwd/root我们使用root用户默认登陆后,就停留在/root目录中。Linux中的目录层次,是通过/进行划分的。5.2、文件系统用户标准Linux的文件系统,从一开始就有一个规范标准。它还有一个专有缩写名词,叫做FHS (Filesystem Hierarchy Standard)。FHS经过多年的演进,目录结构也越来越清晰。除了一些标准的要求,还有一些使用者之间的约定。接下来,我们大体看一下linux上的默认目录,对其有一个基本的感觉。第1层第二层介绍/bin目录/usr/bin的软链接/sbin目录/usr/sbin的软链接/lib目录/usr/lib的软链接/usr/bin存放一些常用的命令/usr/sbin存放一些管理员常用的命令/usr/lib用来存放动态库和一些模块文件/sys内核中的数据结构的可视化接口/proc内存映像/run内存映像/boot存放引导程序,内核相关文件/dev存放一些设备文件,比如光盘/etc用于存储一些全局的、应用的配置文件/var与/var/run一样,存放的是系统运行时需要的文件,比如mysql的pid等/tmp非常特殊的临时文件夹,断电丢失/home/**用户目录,比如我的目录是/home/xjjdog/rootroot用户的home目录home 平常,我们打交道最多的目录,就集中在自己的用户目录,我们可以在里面做任何操作,比如我们现在root用户的/root目录。一些自己的资料,比如视频、音频、下载的文件,或者做测试用的一些数据资料,就可以自行在这些目录下规划。root用户比较特殊,普通用户的私人目录都是在/home下的。/etc etc目录是经常要打交道的目录,存放了一些全局的系统配置文件和应用配置文件。比如你安装了php,或者nginx,它们的配置文件就躺在/etc目录下的某个文件夹里。/var var目录存放一些运行中的数据,有必须的,也有非必须的。一些黑客入侵之后,会在这里面的某些文件中留下痕迹,他们会着重进行清理。var目录还是一些应用程序的默认数据存放之地,比如mysql的数据文件。/tmp 目录是一个特殊的临时目录,文件在断电以后就消失了。但这个目录,所有的用户,都有写入权限,通常用来做文件交换用。/proc和/sys目录,是两个神奇的目录。它们两个是一种伪文件系统,可以通过修改其中一些文件的状态和内容,来控制程序的行为(修改后会直接刷到内存上,太酷了)。刚开始的时候,只有proc目录,由于里面内容有多又乱,后面又规划出sys目录,用来控制内核的一些行为。如果你在调优一些系统参数,和这些文件打交道的时间比较多。还有几个空的目录,我们没有列在上面的表格上。比如/srv目录,通常会把一些web服务的资料,比如nginx的,放在这里面。但是,这并不是强制要求的,所以我见过的/srv目录,通常会一直是空的。同样的,/opt目录也是这样一个存在,你就当它不存在就行。这都属于使用者规划的范畴,自定义性非常强。在使用Linux系统的时候,也可以创建自己的目录。比如,我就喜欢自己创建一个叫做/data的目录,用来存放一些数据库相关的内容。举个例子,/data/mysql存放mariadb的数据,而/data/es/存放elasticsearch的索引内容。linux上的文件类型有很多,它们大部分都分门别类的存放在相应的目录中,比如/dev目录下,就是一些设备文件;/bin文件下,是一些可以执行命令。通常都好记的很。5.3、查看文件列表所以,上面的表格内容,我是怎么看到的呢,靠记忆么?ls命令,能够列出相关目录的文件信息。可以被评为linux下最勤劳的命令标兵。现在的终端,都能够输出彩色的信息,非常的直观。oh-my-zsh和oh-my-bash等项目,可以让你的终端更加的漂亮。把它加入到你的研究清单里吧。[root@localhost /]# ls /# 注意:ls可以接受路径参数,你不用先跳转,就可以输出相关信息bin
boot
dev
etc
home
lib
lib64
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var[root@localhost /]# ls -l /# 带上 -l参数,可以查看一些更加详细的信息。total 20lrwxrwxrwx.
1 root root
7 Nov
3 20:24 bin -> usr/bindr-xr-xr-x.
5 root root 4096 Nov
3 20:34 bootdrwxr-xr-x.
19 root root 3080 Nov
3 21:19 devdrwxr-xr-x.
74 root root 8192 Nov
3 20:34 etcdrwxr-xr-x.
2 root root
6 Apr 11
2018 homelrwxrwxrwx.
1 root root
7 Nov
3 20:24 lib -> usr/liblrwxrwxrwx.
1 root root
9 Nov
3 20:24 lib64 -> usr/lib64drwxr-xr-x.
2 root root
6 Apr 11
2018 mediadrwxr-xr-x.
2 root root
6 Apr 11
2018 mntdrwxr-xr-x.
2 root root
6 Apr 11
2018 optdr-xr-xr-x. 108 root root
0 Nov
3 21:19 procdr-xr-x---.
2 root root
135 Nov
4 07:53 rootdrwxr-xr-x.
24 root root
740 Nov
3 21:20 runlrwxrwxrwx.
1 root root
8 Nov
3 20:24 sbin -> usr/sbindrwxr-xr-x.
2 root root
6 Apr 11
2018 srvdr-xr-xr-x.
13 root root
0 Nov
3 21:19 sysdrwxrwxrwt.
9 root root 4096 Nov
4 03:40 tmpdrwxr-xr-x.
13 root root
155 Nov
3 20:24 usrdrwxr-xr-x.
19 root root
267 Nov
3 20:34 varls最常用的,就是加参数l或者参数a。5.3.1、详细信息加上参数l,能够看到文件的一些权限信息已经更新日期等。但我们还看到了一些更有意思的东西。比如:lib -> usr/lib上面表示的,是软链接信息。就如同我们上面表格所展示的一样,lib目录,是/usr/lib的快捷方式,它们之中的内容,没有什么两样。关于ls -l展示的更加详细的内容,可以参照我下面的这张图。我们将在了解后面小节的内容后,再次对这张图进行回顾。5.3.2 隐藏文件直接在你的/root目录里,执行ls -al,你会看到更多东西。这些额外的隐藏文件,都是以.开头,以配置文件居多。这就是参数a的作用。[root@localhost ~]# ls -altotal 28dr-xr-x---.
2 root root
135 Nov
4 07:53 .dr-xr-xr-x. 17 root root
224 Nov
3 20:28 ..-rw-------.
1 root root 1273 Nov
3 20:28 anaconda-ks.cfg-rw-------.
1 root root
246 Nov
4 11:41 .bash_history-rw-r--r--.
1 root root
18 Dec 28
2013 .bash_logout-rw-r--r--.
1 root root
176 Dec 28
2013 .bash_profile-rw-r--r--.
1 root root
176 Dec 28
2013 .bashrc-rw-r--r--.
1 root root
100 Dec 28
2013 .cshrc-rw-r--r--.
1 root root
129 Dec 28
2013 .tcshrc细心的同学,应该会注意到两个特殊的目录。.和..。前者表示的是当前目录,而后者表示的是上层目录。使用cd命令,将在这些目录中,自由穿梭。小技巧:如果你对英文日期阅读困难,可以使用ls -al --full-time查看可读的日期。5.4、切换目录执行cd命令,可以将工作目录切换到目标文件夹。为了展示cd命令的效果。请在root用户下,执行下面的命令,这将创建一个7层的目录。cdmkdir -p a1/b2/c3/d4/e5/f6/{g7,g8,g9,g10}我们使用cd命令,切换到最后一层。然后,我们使用..切换到上层目录。[root@localhost ~]# cd a1/b2/c3/d4/e5/f6/g7[root@localhost g7]# pwd/root/a1/b2/c3/d4/e5/f6/g7[root@localhost g7]# cd ..[root@localhost f6]# pwd/root/a1/b2/c3/d4/e5/f6所以,切换到上面n层目录,只需使用多层级的../即可。有几个特殊的变量,需要说明一下。../ 指的是上层目录../../ 指的是上两层目录./ 指的是当前目录~ 指的是当前的用户目录,这是一个缩写符号- 使用它,可以在最近两次的目录中来回切换我们来使用命令把上面这些特殊变量验证一下。# 跳转到用户根目录[root@localhost tmp]# cd ~[root@localhost ~]# pwd/root# 进入到第三层目录[root@localhost ~]# cd a1/b2/c3/[root@localhost c3]# pwd/root/a1/b2/c3# 跳回到前三层目录[root@localhost c3]# cd ../../..[root@localhost ~]# pwd/root# 跳到上次访问的目录[root@localhost ~]# cd -/root/a1/b2/c3[root@localhost c3]# pwd/root/a1/b2/c3# 进入当前目录:等于什么都没干[root@localhost c3]# cd ./[root@localhost c3]# pwd/root/a1/b2/c3以上就是cd命令的常用用法。现在,我们返回头来看一下mkdir。顾名思义,就是创建目录的意思,但一般在工作中,都会加上-p参数,这样就可以一次性创建多层目录。注意mkdir后面的大括号{},可以一次性的指定多个目录进行创建,这通常能节省很多时间。5.5、文件操作使用命令行操作文件,是非常方便的。touch 新建文件cp 复制文件mv 移动文件rm 删除文件这四个风骚的命令,主宰着文件资料的去向。我们依然使用上面创建的目录,进行接下来的操作。# 创建三个文件[root@localhost ~]# touch long-long-long.txt[root@localhost ~]# touch 996.txt[root@localhost ~]# touch icu.txt[root@localhost ~]# ls996.txt
a1
anaconda-ks.cfg
icu.txt
long-long-long.txt# 复制一个文件[root@localhost ~]# cp 996.txt 007.txt[root@localhost ~]# mv long-long-long.txt short.txt[root@localhost ~]# ls007.txt
996.txt
a1
anaconda-ks.cfg
icu.txt
short.txt# 移动996.txt到a1目录,icu.txt到a1/b2目录# 删除short.txt[root@localhost ~]# mv 996.txt a1/[root@localhost ~]# mv icu.txt a1/b2/[root@localhost ~]# rm short.txtrm: remove regular empty file 'short.txt’? y# 递归删除a1目录[root@localhost ~]# rm -rvf a1/removed directory: 'a1/b2/c3/d4/e5/f6/g7’removed directory: 'a1/b2/c3/d4/e5/f6/g8’removed directory: 'a1/b2/c3/d4/e5/f6/g9’removed directory: 'a1/b2/c3/d4/e5/f6/g10’removed directory: 'a1/b2/c3/d4/e5/f6’removed directory: 'a1/b2/c3/d4/e5’removed directory: 'a1/b2/c3/d4’removed directory: 'a1/b2/c3’removed 'a1/b2/icu.txt’removed directory: 'a1/b2’removed 'a1/996.txt’removed directory: 'a1/’[root@localhost ~]# ls007.txt
anaconda-ks.cfg经过一番操作以后,只剩下了007了。除了上面基本的操作,接下来我要介绍一些更加重要的功能。可以看到在使用rm删除文件的时候,进行了一次提示。这是为了避免误删除一些东西,但有时候,你需要不显示这种提示,就可以加-f参数。f参数对于cp、mv等命令来说,同样适用,它是force的意思。rm -f filecp -f file1 file2mv -f file1 file2另外,还有一个参数-r,这是递归的意思。我们的目录和文件,通常有多个层次,递归可以把操作全部作用于上面,比如上面的递归删除a1目录。# 警告:以下命令会造成严重后果rm -rf /上面的这个命令,你一定经常看到。这不是笑话,已经有很多用户因此丢失了数据,这就是传说中的删根,最终你将一无所有。那参数v又是干什么用的呢?加上它之后,可以看到命令详细的执行过程。在平常的操作中,我一般都加上。6.开始操作文件你可能已经了解到,ll -l命令的第一列,能够显示linux的文件类型。请对此有一个大体的印象,因为后面的很多命令,会用到这些知识。- 表示普通文件d 表示目录文件l 表示链接文件,比如快捷方式s 套接字文件c 字符设备文件,比如/dev/中的很多文件b 表示块设备文件,比如一些磁盘p 管道文件Linux上的文件可以没有后缀,而且可以创建一些违背直觉的文件。比如后缀是png,但它却是一个压缩文件(通常不会这么做)。大学时,就有聪明的同学这样藏小电影,效果很好。查看文件的具体类型,可以使用file命令,它很聪明,能够识别很多文件格式。[root@localhost ~]# file /etc/etc: directory[root@localhost ~]# file /etc/group/etc/group: ASCII text[root@localhost ~]# file /dev/log/dev/log: socket[root@localhost ~]# file /dev/log/dev/log: socket[root@localhost ~]# file /bin/bin: symbolic link to `usr/bin'本部分的操作,面向的就是ASCII text类型的,普通文本文件。接下来,我们要创建一些文件。然后写入一些内容到文件里,以便进行后续的操作。6.1、创建一个文件6.1.1、数字序列使用重定向符,能够直接生成文件。下面,我要生成10到20的数字,每一个数字单独一行,写入一个叫做spring的文件。巧的很,seq命令可以完成这个过程。seq 10 20 >> spring我们在前面提到过>的意思,是将前面命令的输出,重定向到其他地方。在这里,我们用了两个>,它依然是重定向的意思,但表示的是,在原来文件的基础上,追加内容。也就是编程语言里的w 和a 的意思。6.1.2、查看内容为了查看文件的生成效果,可以使用cat命令检测。cat命令将会把文件的内容,输出打印到终端上。如果加上参数n,甚至可以打印行号。效果如下:[root@localhost ~]# cat spring1011121314151617181920[root@localhost ~]# cat -n spring1 102 113 124 135 146 157 168 179 1810 1911 20除了查看文件内容,cat命令通常用在更多的地方。只有和其他命令联合起来,它才会觉得生活有意义。# 合并a文件和b文件到c文件cat a
b>> c# 把a文件的内容作为输入,使用管道处理。我们在后面介绍cat a
cmd# 写入内容到指定文件。在shell脚本中非常常用。我们在后面会多次用到这种写法cat > index.html <<EOF<html>
<head><title></title></head>
<body></body></html>EOF由于我们的文件不大,cat命令没有什么危害。但假如文件有几个GB,使用cat就危险的多,这只叫做猫的小命令,会在终端上疯狂的进行输出,你可以通过多次按ctrl c来终止它。6.2、平和的查看文件既然cat命令不适合操作大文件,那一定有替换的方案。less和more就是。由于less的加载速度比more快一些,所以现在一般都使用less。它最主要的用途,是用来分页浏览文件内容,并提供一些快速查找的方式。less是一个交互式的命令,你需要使用一些快捷键来控制它。这次我们使用seq生成一千万行记录,足足有76MB大小,然后用less打开它。[root@localhost ~]# seq 10000000 > spring[root@localhost ~]# du -h spring76M spring[root@localhost ~]# less spring关于less,一般操作如下:空格 向下滚屏翻页b 向上滚屏翻页/ 进入查找模式,比如/1111将查找1111字样q 退出lessg 到开头G 去结尾j 向下滚动k 向上滚动,这两个按键和vim的作用非常像6.3、文件头尾head可以显示文件头,tail可以显示文件尾。它们都可以通过参数-n,来指定相应的行数。[root@localhost ~]# head -n 3 spring123[root@localhost ~]# tail -n 3 spring9999998999999910000000对于部分程序员来说,tail -f或许是最常用的命令之一。它可以在控制终端,实时监控文件的变化,来看一些滚动日志。比如查看nginx或者tomcat日志等等。通常情况下,日志滚动的过快,依然会造成一些困扰,需要配合grep命令达到过滤效果。# 滚动查看系统日志tail -f /var/log/messages# 滚动查看包含info字样的日志信息tail -f /var/log/messages
grep info对于tail命令来说,还有一个大写的参数F。这个参数,能够监控到重新创建的文件。比如像一些log4j等日志是按天滚动的,tail -f无法监控到这种变化。6.4、查找文件考虑下面这个场景。我们需要找一个叫做decorator.py的文件,这个文件是个幽灵,可能存在于系统的任何地方。find命令,能够胜任这次捉鬼行动。我们使用find命令,从根目录找起,由于系统的文件过多,下面的命令可能会花费一段时间。[root@localhost site-packages]# find / -name decorator.py
-type f/usr/lib/python2.7/site-packages/decorator.py使用time命令,可以看到具体的执行时间。执行还是挺快的么!秒出![root@localhost site-packages]# time find / -name decorator.py
-type f/usr/lib/python2.7/site-packages/decorator.pyreal 0m0.228suser 0m0.098ssys 0m0.111sfind命令会查出一个路径的集合。通常是查询出来之后,进行额外的处理操作,一般配合xargs命令使用(xargs读取输入,然后逐行处理),至于find的exec参数?忘了它吧,不好用!# 删除当前目录中的所有class文件find .
grep .class$
xargs rm -rvf# 找到/root下一天前访问的文件,type后面的类型参见文章开头find /root
-atime 1 -type f# 查找10分钟内更新过的文件find /root
-cmin
-10# 找到归属于root用户的文件find /root -user root# 找到大于1MB的文件,进行清理find /root -size
1024k
-type f
xargs rm -ffind的参数非常非常多,记不住怎么办?除了常用的,其实都可以通过man命令查看。man的操作也和vi非常的类似,输入/EXAMPLES,会看到很多样例。不过我觉得还是上面列出的这些命令更加的适用。6.4.1、数据来源在上图中,你会看到mtime,ctime,atime类似的字样,它们的数据来自于何处呢?接下来我们顺理成章的看一下stat命令。[root@localhost ~]# stat spring
File: 'spring’
Size: 78888897
Blocks: 154080
IO Block: 4096
regular fileDevice: fd00h/64768d Inode: 8409203
Links: 1Access: (0644/-rw-r--r--)
Uid: (
0/
root)
Gid: (
0/
root)Context: unconfined_u:object_r:admin_home_t:s0Access: 2019-11-04 18:01:46.698635718 -0500Modify: 2019-11-04 17:59:38.823458157 -0500Change: 2019-11-04 17:59:38.823458157 -0500 Birth: -这不就是文件属性么?从文件大小,到文件类型,甚至到最后修改、访问时间,都可以从这里获取。Linux文件系统以块为单位存储信息,为了找到某一个文件所在存储空间的位置,会用i节点(inode) 对每个文件进行索引,你可以认为它是一个文件指针。文件的字节数文件拥有者user文件所属组group文件的读、写、执行权限文件的时间戳ctime指inode上一次变动的时间mtime指文件内容上一次变动的时间atime指文件上一次打开的时间。链接数,即有多少文件名指向这个inode (ln命令)文件数据block的位置(具体的数据位置)关于inode是一个比较大的话题,也是比较重要的知识点,有兴趣的可以自行搜索。我们只需要知道这些信息是从这里来的就可以了。6.4.2、小练习如果我只想获取Modify这个数值,可以组合使用一下上面学到的命令。首先获取最后三行,然后获取首行。效果如下:[root@localhost ~]# stat spring
tail -n 3
head -n 1Modify: 2019-11-04 17:59:38.823458157 -0500下面几个命令,效果是与上面等价的,输出结果也是一模一样。正所谓条条大路通罗马,接下来,我们首先介绍一下出现频率较高的grep。另外,我们在上面的这些命令中,多次使用了|,这是Linux中非常重要的管道概念,下面也会着重介绍。stat spring
head -n 7
tail -n 1stat spring
grep Modifystat spring
sed -n '7p'stat spring
awk 'NR==7'6.5、字符串匹配grep用来对内容进行过滤,带上--color参数,可以在支持的终端可以打印彩色,参数n则用来输出具体的行数,用来快速定位。这是一个必须要熟练使用的命令。比如:查看nginx日志中的POST请求。grep -rn --color POST access.log推荐每次都使用这样的参数。如果我想要看某个异常前后相关的内容,就可以使用ABC参数。它们是几个单词的缩写,经常被使用。A after 内容后n行B before 内容前n行C 内容前后n行就像是这样:# 查看Exception关键字的前2行和后10行grep -rn --color Exception -A10 -B2
error.log#查找/usr/下所有import关键字,已经它们所在的文件和行数grep -rn --color import /usr/6.6、管道在上面的命令中,我们多次用到了|,这貌似可以完成一些神奇的事情。|是pipe的意思,它可以把多个命令联系起来。通常,命令有下面的关联方式:; 顺序执行,如mkdir a;rmdir a&& 条件执行,如mkdir a && rmdir a
条件执行,如mkdir a
rmdir a,后面的命令将不执行
管道,前面命令的输出,将作为后面命令的输入前三种的命令关联,是非常简单有逻辑的,非常的好理解。而管道,却有自己的特点。接触过编程语言的都知道stdin、stdout、stderr的概念。让我们重新组织一下针对于管道的定义:前面命令的输出(stdin),将作为后面命令的输入(stdout)。我们拿一行命令来说明。seq 20 100
head -n 50
tail -n 1上面命令,将输出69。69是个神奇的数字,它是怎么办到的呢?我们来一张小图,一切就豁然开朗了。关于输入输出和错误,linux使用一个数字进行缩写,这在一些脚本中,甚至在一些安装文件中,会经常用到。0 表示stdin标准输入1 表示stdout标准输出2 表示stderr标准错误通过类似2>&1的语法,可以把错误信息定向到标准输出。我们用命令来证明一下。# 错误信息无法输出到文件[root@localhost ~]# cat aaaaaaaaa > bcat: aaaaaaaaa: No such file or directory[root@localhost ~]# cat b# 错误信息被重定向了[root@localhost ~]# cat aaaaaaaaa > b 2>&1[root@localhost ~]# cat bcat: aaaaaaaaa: No such file or directory6.7、排序在了解管道的工作原理之后,就可以介绍一下sort命令了。它通常可以和uniq(去重)命令联合,完成一些排序、去重的操作。首先使用cat命令,生成如下内容的文件。cat > sort.txt <<EOF1 113 222 444 335 556 666 66EOF```bash接下来让这两个命令上台表演一下。sort可以使用-t指定分隔符,使用-k指定要排序的列。但是空格,是不需要做这些画蛇添足的指定的。```bash# 根据第一列倒序排序[root@localhost ~]# cat sort.txt
sort
-n -k1 -r6 666 665 554 333 222 441 11# 统计每一行出现的次数,并根据出现次数倒序排序# 此时,行数由7变成了6[root@localhost ~]# cat sort.txt
sort
uniq -c
sort -n -k1 -r2 6 661 5 551 4 331 3 221 2 441 1 11注意:uniq命令,一般用在已经经过排序的结果集上。所以,很多情况需要首先使用sort命令进行排序后,再使用uniq命令。新手经常会忘记第一步,造成命令不能正常运行。6.8、小练习本部分,我们从文件的属性开始说起,了解了几个对文件操作的常用命令。并顺便介绍了管道的概念。下面,我们来练习一下。找到系统中所有的grub.cfg文件,并输出它的行数。分析:首先需要使用find命令,找到这些文件。然后使用xargs逐行处理。最后,使用wc命令,统计确切的行数。[root@localhost grub2]# find /
grep grub.cfg
xargs wc -l141 /boot/grub2/grub.cfg输出系统的group列表cat /etc/group
awk -F ':' '{print $1}'下面这个命令输出nginx日志的ip和每个ip的pv,pv最高的前10# 2019-06-26T10:01:57 08:00|nginx001.server.ops.pro.dc|100.116.222.80|10.31.150.232:41021|0.014|0.011|0.000|200|200|273|-|/visit|sign=91CD1988CE8B313B8A0454A4BBE930DF|-|-|http|POST|112.4.238.213awk -F'|' '{print $3}' access.log
sort
uniq -c
sort -nk1 -r
head -n106.9、思考&扩展1、Linux的终端,是如何实现彩色的文字的?我要如何输出一个绿色的Hello World?2、软链接与硬链接有什么区别?3、了解几个偏门但又不是非常偏的命令。cut 有了awk,几乎不怎么会用cut了trcolpastejoinsplit7. 正则和高级用法你可能遇到一些棘手的问题,通过搜索得到想要的结果,但下次还是要通过搜索解决问题,这种低效的手段不是我们所想要的。典型的就是一个线上运维工程师,当问题来临时,不会给你留太多的现场学习时间。为了达到更高效的训练,我们要做两件事情:第一,总结归纳;第二,触类旁通。Linux的命令也是如此,一个问题,通常会有多种解决方式,要通过变化找出其中的共性。这涉及到一些设计者对于规范约定俗成的遵守。一般的,你只需要掌握一小部分命令,然后对大批命令达到了解的程度,就可以在命令行的世界里游刃有余。举个例子,你知道ls是列出文件目录,你就会联想到lscpu是列出cpu信息;lsmem是列出内存信息;lsblk是磁盘信息等。这种共性很多,比如top系列,stat系列。7.1、辅助信息7.1.1、Linux文件格式在Linux上工作,是非常非常排斥二进制这种格式的,几乎什么都是可以读写的文本内容。大多数命令生成的结果,也都是文本文件。这些文件有一些特点,通常列与列都是通过空格或者<TAB>键分隔的。比如下面lsmem的结果,这种有规律的,有章可循的文件,是非常容易被处理的。[root@localhost ~]# lsmem
RANGE
SIZE
STATE REMOVABLE BLOCK0x0000000000000000-0x0000000007ffffff
128M online
no
00x0000000008000000-0x000000000fffffff
128M online
yes
10x0000000010000000-0x0000000017ffffff
128M online
no
20x0000000018000000-0x0000000027ffffff
256M online
yes
3-40x0000000028000000-0x000000004fffffff
640M online
no
5-90x0000000050000000-0x000000005fffffff
256M online
yes 10-110x0000000060000000-0x000000007fffffff
512M online
no 12-15Memory block size:
128MTotal online memory:
2GTotal offline memory:
0B有一大批针对于行操作的命令,同样有一批针对于列操作的命令。然后,有两个集大成者,叫做sed、awk。由于这两个命令的内容非常多,我们将其列为单独的章节。7.1.2、命令记不住怎么办?通常linux命令都十分简单,但是有些还是有些复杂度的。比如find,ps这种命令,如果要照顾到所有的场合,可能需要非常巨大的篇幅。但是,万一用到这种偏门的场合怎么办?全面了解一下是非常有必要的,以便在使用的时候能够唤起记忆中最浅显的印象。然后剩下的,就可以交给类似于man的这种命令了。Linux上的每一个命令,都会有配套的帮助文件,这远比网络上那些转来转去的信息,正确的多。正式介绍一下下面的两个命令:man 用来显示某个命令的文档信息。比如:man lsinfo 你可以认为和man是一样的,虽然有一些能够互补的内容。它们会在内容中进行提示的--help 很多命令通过参数--help提供非常简短的帮助信息。这通常是最有用最快捷的用例展示。如果你根本就记不住一个非常拗口的单词,那就找找这些地方吧注意:这些帮助信息,仅集中在命令的作用域本身。对于它的组合使用场景,并没有过多信息。也就是说,它教会了你怎么用,但并没有告诉你用它能够来做什么。这些帮助命令,一般会通过高亮关键字,增加阅读的体验。但我们可以更近一步,把帮助文件变成彩色的。在root用户下,执行下面的命令。然后,重新登录虚拟机。cat >> ~/.bashrc <<EOFfunction man(){
env \\
LESS_TERMCAP_mb=\$(printf '\e[1;31m') \\
LESS_TERMCAP_md=\$(printf '\e[1;31m') \\
LESS_TERMCAP_me=\$(printf '\e[0m') \\
LESS_TERMCAP_se=\$(printf '\e[0m') \\
LESS_TERMCAP_so=\$(printf '\e[1;44;33m') \\
LESS_TERMCAP_ue=\$(printf '\e[0m') \\
LESS_TERMCAP_us=\$(printf '\e[1;32m') \\
man '\$@'}EOF再次执行man命令,就可以看到彩色的信息了。7.1.3、TAB补全现在,在终端里,输入ca,然后快速按2次<TAB>键盘,命令行会进入补全模式,显示以ca打头的所有命令。[root@localhost ~]# cacacertdir_rehash
cache_dump
cache_repair
cache_writeback
ca-legacy
capsh
case
catchsegvcache_check
cache_metadata_size
cache_restore
cal
caller
captoinfo
cat
catman如果你对某个命令,只有模糊的印象,只记得前面的几个字母,这个功能是极好的,命令范围会一步步缩减。7.2、正则表达式为了开始下面的内容,我们首先介绍一下正则表达式。在前面的一些命令中,也可以使用这些正则表达式,比如less、grep等。有些书籍,能够把正则表达式写成一本书,我们这里仅作简单的介绍,但足够用了。一般的,正则表达式能用在匹配上,还能够把匹配的内容拿来做二次利用。关于后者,我们在sed命令中介绍。标志意义^行首$行尾.任意单个字符*匹配0个或者多个前面的字符 1个或者多个匹配?0个或者1个匹配{m}前面的匹配重复m次{m,n}前面的匹配重复m到n次[]匹配一个指定范围内的字符[^]匹配指定范围外的任意单个字符\转义字符[0-9]匹配括号中的任何一个字符,or的作用|or,或者\b匹配一个单词。比如\blucky\b 只匹配单词lucky使用下面的命令创建一个文件,我们练习一下grep命令加上E参数后的正则表现。cat > 996 <<EOF996: 996 is a funcking thing . which make woman as man , man as ass .we all on the bus , bus bus on the way . 996way to icu. icuuuuuu......The greedy green boss rides on the pity programmerEOF在终端执行下面命令,注意高亮的部分即为匹配到的字符串。# 匹配996开头的行[root@localhost ~]# cat 996
grep -E ^996996: 996 is a funcking thing . which make woman as man , man as ass .# 匹配996结尾的行[root@localhost ~]# cat 996
grep -E 996$we all on the bus , bus bus on the way . 996# 匹配到icu和icuuuuuu[root@localhost ~]# cat 996
grep -E icu way to icu. icuuuuuu......# 再次匹配到996[root@localhost ~]# cat 996
grep -E [0-9]996: 996 is a funcking thing . which make woman as man , man as ass .we all on the bus , bus bus on the way . 996[root@localhost ~]# cat 996
grep -E ^[\^0-9]we all on the bus , bus bus on the way . 996way to icu. icuuuuuu......The greedy green boss rides on the pity programmer# 匹配所有不包含996的行,良心命令,泪奔[root@localhost ~]# cat 996
grep -E -v [0-9]{3}way to icu. icuuuuuu......The greedy green boss rides on the pity programmer# 匹配boss和icu[root@localhost ~]# cat 996
grep -E boss\|icuway to icu. icuuuuuu......The greedy green boss rides on the pity programmer# 匹配所有行[root@localhost ~]# cat 996
grep -E .996: 996 is a funcking thing . which make woman as man , man as ass .we all on the bus , bus bus on the way . 996way to icu. icuuuuuu......The greedy green boss rides on the pity programmer正则表达式非常的重要,在一些sed脚本中,awk脚本中,甚至是vim编辑器中,都会简化你的操作。以上内容应该熟记,达到不需要查找文档的地步。下面有6个小问题,可以思考一下。1、回过头去,执行一下man cat,是否发现了一个叫做tac的命令?它是干什么的?2、上面提到的stat系列,你能想象iostat大体是干什么用的么?3、grep -v是什么意思?4、了解一下和mv非常像的rename命令来批量修改文件,看能否使用上面的正则。5、有些命令如果拼写错误,如何快速修正?靠搜索么?了解一下fuck命令。我没有说错。6、下面哪种写法表示如果cmd1成功执行,则执行cmd2命令?A. cmd1&&cmd2B. cmd1|cmd2C. cmd1;cmd2D. cmd1
cmd28. Linux下的压缩压缩,是一件非常神奇的事情。很久很久之前,就接触过一些64KB大小的电影,你花半小时都看不完。事实上,这些动画的真实容量是15GB,Warez组织把它压缩了25万倍。你要是Windows系统,可以在这里下载体验一下。但我们现在讲的是Linux,很打脸是不是?链接: https://pan.baidu.com/s/12YJQ4jsbtRr7RxoLpARTyQ 压缩是件神奇的事。它能大能小,能伸能缩,在现实中很难找到这样的东西。为了减小传输文件的大小,或者为了传输方便,一般都会开启压缩。linux下常见的压缩文件有tar、bzip2、zip、rar等,7z这种用的相对较少。压缩之后的文件,非常适合在网络环境上传输。甚至,你可以认为iso文件为一种特殊的压缩方式。.tar 使用tar命令压缩或解压.bz2 使用bzip2命令操作.gz 使用gzip命令操作.zip 使用unzip命令解压.rar 使用unrar命令解压.Z 使用compress,uncompress准备工作:使用下面的命令,复制1000个文件。cd ~mkdir filescd filesseq 1000
xargs -I {} cp
/etc/group
{}使用ls,就可以看到我们刚才创建的1000个文件。接下来,我们使用压缩命令将它打包成一个。# 查看1000个文件的总大小[root@localhost files]# du -h .4.0M .# 切换到root目录cd ~# 使用tar进行压缩,压缩后的文件不到1MB[root@localhost ~]# tar cvf files.tar files[root@localhost ~]# du -h files.tar1012K files.tar# 使用gizp提高压缩比,压缩后的文件只有12KB[root@localhost ~]# gzip files.tar[root@localhost ~]# du -h files.tar.gz12K files.tar.gztar和gzip一般是联合使用的。tar命令提供了一种特殊的功能,就是可以在打包解包的同时调用其他的压缩程序,比如:gzip,bzip2等。下面的命令,与上面执行两次命令后是等同的。所以,一般使用下面的方式进行操作。[root@localhost ~]# tar cvfz files2.tar.gz files[root@localhost ~]# du -h files2.tar.gz12K files2.tar.gz与之对应的,就是解压操作。我们只需要改动命令行中的一个字母即可:c->x。但其实,参数v和z也是可以省略的。[root@localhost ~]# tar xvfz files2.tar.gz我们更加常用的方式,是加上参数C,指定一个要解压的目录。比如下面的命令,把压缩内容解压到/opt目录中。[root@localhost ~]# tar xvfz files2.tar.gz -C /opt/那如果我仅仅想要看下压缩文件中包含哪些文件呢?这就要使用参数t。c 压缩x 解压t 查看列表安装其他的我们来看一下常用的zip和rar解压程序有没有安装。[root@localhost ~]# which unzip/usr/bin/which: no unzip in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)[root@localhost ~]# which unrar/usr/bin/which: no unrar in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)所以,我们的系统并没有安装这两个应用。那我就使用centos的包管理工具yum安装一下。java中的jar命令也是与zip类似的,可自行探索。[root@localhost ~]# yum install -y zip unzip rar unrarLoaded plugins: fastestmirrorLoading mirror speeds from cached hostfile * base: mirrors.aliyun.com * extras: mirrors.tuna.tsinghua.edu.cn * updates: mirrors.aliyun.com...rar不能安装成功,所以rar文件并不能被解压。没关系,我们在后面的章节把它安装上。现在,你会在Linux安装tomcat了么?接下来,我们思考一下:1、 经过zip压缩的文件,再使用gzip压缩,容量还会减少么?为了验证这个过程,可以使用dd命令,生成一个69MB大小的随机文件。dd命令也是个神奇哦。[root@localhost ~]# dd if=/dev/urandom
of=test bs=1M count=6969 0 records in69 0 records out72351744 bytes (72 MB) copied, 0.446161 s, 162 MB/s[root@localhost ~]# du -h test69M test所以,回到文章最上面,我们可以随机生成一批文件,让压缩效果更有意义一点。seq 1000
xargs -i dd if=/dev/zero of={}.xjj bs=1k count=2562、如果已经有了文件,tar命令是如何做到强制覆盖的?9. Linux的权限体系我们在最最最上面,刚接触命令行的时候,就使用chmod命令,给普通文本文件,赋予了执行权限。本小节将看一下用户权限和文件权限这两个息息相关的概念,9.1、添加用户到现在为止,我们的系统中,还孤零零的只有这一个用户,是时候学学女娲,捏几个小泥人了。首先创建两个用户:张三(zhang3)、李四(li4)。[root@localhost ~]# useradd zhang3查看下面命令的三个输出结果。# 系统中多了一个叫做zhang3的组,group文件保存了系统的组信息[root@localhost ~]# tail -n1 /etc/groupzhang3:x:1000:# 系统中多了一个叫做zhang3的用户,shadow文件保存了它们的密码。很多安全渗透就是为了拿到它进行暴力破解[root@localhost ~]# tail -n1 /etc/shadowzhang3:!!:18207:0:99999:7:::# home目录中,多了一个叫做zhang3的目录[root@localhost ~]# ll /home --full-timetotal 0drwx------. 2 zhang3 zhang3 83 2019-11-06 22:09:33.357165082 -0500 zhang3接下来,给我们刚刚建立的用户,使用passwd设置一个密码。密码需要输入两次进行确认。如果想要更改密码,可以使用chpasswd命令。[root@localhost ~]# passwd zhang3Changing password for user zhang3.New password:BAD PASSWORD: The password is shorter than 8 charactersRetype new password:passwd: all authentication tokens updated successfully.那么如何删除一个现有的用户呢?这是通过userdel命令实现的。加上参数f,会在其他用户使用系统的时候,强制退出。userdel -f zhang39.2、文件权限说明从上面的命令执行结果中,我们发现了有两件非常有意思的东西。添加用户后,除了在密码文件shadow中增加了一些内容,同时还在group文件中添加了信息。这涉及到用户的两个属性:用户名,组名。一个用户只有一个名称代号,但是可以有多个组。下面命令创建一个密码为123的用户li4,并给它追加一个叫做zhang3的组。可以看到/etc/group文件中的信息变更。[root@localhost ~]# useradd
-G zhang3 -p 123 li4[root@localhost ~]# tail -n 2 /etc/groupzhang3:x:1000:li4li4:x:1001:好啦,接下来切换到我们的文件权限上面。为了进行下面命令的验证,我们首先创建一个名字叫confirm777.sh的脚本文件。为了让脚本对所有用户可见,我们把它创建在/tmp目录下。cat > /tmp/confirm777.sh <<EOFecho $USERidEOF使用ll命令查看文件信息。[root@localhost ~]# ll /tmp/confirm777.sh --full-time-rw-r--r--. 1 root root 13 2019-11-07 04:25:55.418254935 -0500 confirm777.sh从ll的命令可以看出,文件的所有者是root用户,文件所属的组,也是root组,它的权限是rw-r--r--。文件权限分为三部分。所有者权限,缩写为u。文件的所有者所拥有的权限。也就是root用户的权限,是rw-组用户权限,缩写为g。文件所属组内所有用户的权限。因为root组内只有root一个用户,所以组用户权限是r--。其他用户权限,缩写为o。其他不相关用户的权限,比如我们刚创建的zhang3、li4用户,对文件的权限就是r--。全部,缩写为a,表示对上面三类用户集体操作。那rw-这些东西是什么意思呢?r 表示可读权限。read。w 表示可写权限。write。x 表示可执行权限。execute。- 权限占位符,表示没有当前权限。注意:一个用户拥有文件的w权限,并不代表就可以删除文件。w仅仅针对于文件内容来说的。一个文件,有3类用户,每类用户,有3种权限。使用最简单的小学乘法,我们能够得出,一个文件的权限位,需要3x3=9个标志位表示。我们的文件名称,叫做confirm777.sh,这个名字是随便起的么?当然不是,777在linux代表特殊的含义,它代表文件对所有用户具有可读、可写、可执行的权限。可以想象,如果每个文件都有这样的权限,系统将无安全可言。那这一串数字是怎么来的呢?可以看下面的对照表。r 4 读w 2 写x 1 执行对以上三个属性进行任意组合,可以得到:4 r-- 4 0 06 rw- 4 2 05 r-x 4 0 12 -w- 0 2 03 -wx 0 2 11 --x 0 0 17 rwx 4 2 19.3、文件权限更改下面介绍三个文件权限相关的命令。一般常用的,就是chown和chmod。chown 更改文件的所有者。chgrp 更改文件的组。chmod 更改文件权限。接下来,我们把confirm777.sh的所有者和组,修改成刚刚创建的用户zhang3。cd /tmp[root@localhost tmp]# chown zhang3:zhang3 confirm777.sh[root@localhost tmp]# ll confirm777.sh-rw-r--r--. 1 zhang3 zhang3 13 Nov
7 04:25 confirm777.sh给文件所有者增加执行权限。然后分别切换到zhang3,li4用户执行一下。通过su 命令,可以切换到其他用户,一般使用su -进行环境变量的清理;而命令id,能够看到当前正在执行的用户信息。[root@localhost tmp]# chmod u x confirm777.sh[root@localhost tmp]# su li4[li4@localhost tmp]$ ./confirm777.shbash: ./confirm777.sh: Permission denied[li4@localhost tmp]$ exitexit[root@localhost tmp]# su zhang3[zhang3@localhost tmp]$ ./confirm777.shrootuid=1000(zhang3) gid=1000(zhang3) groups=1000(zhang3) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023可以看到,文件所有者zhang3可以执行文件,但不相关的li4,提示没有权限。接下来,我们验证用户组相关的权限位。# 去掉zhang3的执行权限root@localhost tmp]# chmod u-x confirm777.sh[root@localhost tmp]# ll confirm777.sh-rw-r--r--. 1 zhang3 zhang3 13 Nov
7 04:25 confirm777.sh# 增加zhang3组的执行权限,由于li4在zhang3组里,它拥有权限[root@localhost tmp]# chmod g x confirm777.sh[root@localhost tmp]# ll confirm777.sh-rw-r-xr--. 1 zhang3 zhang3 13 Nov
7 04:25 confirm777.sh# 切换到zhang3进行执行[root@localhost tmp]# su - zhang3[zhang3@localhost tmp]$ ./confirm777.shbash: ./confirm777.sh: Permission denied[zhang3@localhost tmp]$ exitexit# 切换到li4进行执行[root@localhost tmp]# su - li4[li4@localhost tmp]$ ./confirm777.shrootuid=1001(li4) gid=1001(li4) groups=1001(li4),1000(zhang3) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023从命令的执行结果可以看出。这次,li4能够执行文件,相反的,zhang3却不能。我们使用chmod命令来修改文件权限,使用的是类似于a x这样的英文字母。拿第一个脚本来说,初始的权限是rw-r--r--,也就是644,在这种情况下,下面的两个脚本等效。chmod u x confirm777.shchmod 744 confirm777.sh可以看到,第二个命令,使用的是数字样式的权限位,多了一步人脑转换过程。这在日常的使用中,是非常不方便的。所以,使用符号法的表示方式,能够更加直观,非常推荐。为了更直观的表现这个过程,我专门制作了一张图。9.4、目录权限这里有一个非常有意思的地方。把文件设置成可执行,可以把普通文件变成脚本,目录文件的可执行权限是什么鬼?有什么意义?对文件夹来说:r 表示允许读取目录中的文件名,但不能进入该目录w 表示允许用户修改目录,可以创建、迁移、删除、更名目录下的文件x 可以获得目录下文件的列表,以及进入目录,执行cd命令关于r和x的区别,可以看下面的命令结果,仔细感受一下它们的区别。一般的,几乎所有的目录,都拥有执行权限,不要随意对其进行设置。[root@localhost tmp]# su - li4[li4@localhost ~]$ cd /tmp[li4@localhost tmp]$ mkdir nox[li4@localhost tmp]$ touch nox/{a,b,c,d}[li4@localhost tmp]$ chmod a-x nox[li4@localhost tmp]$ ls noxls: cannot access nox/a: Permission deniedls: cannot access nox/b: Permission deniedls: cannot access nox/c: Permission deniedls: cannot access nox/d: Permission denieda
b
c
d[li4@localhost tmp]$ cat nox/acat: nox/a: Permission denied[li4@localhost tmp]$ chmod a x nox[li4@localhost tmp]$ chmod a-r nox[li4@localhost tmp]$ ls noxls: cannot open directory nox: Permission denied9.5、sticky bit接下来,我们介绍一个比较烧脑的粘贴位。假如你要删除一个文件,你可以没有这个文件的写权限,但是你必须要拥有这个文件上级目录的写权限。如何创建一个目录,可以让任何人些人文件,但是又不能删除其他用户的文件?这就是stick bit的作用。粘贴位一般只用于目录上,对文件来说并没有什么用处。粘贴位一般使用t表示。我们可以看一个典型的目录/tmp[root@localhost tmp]#
ls -dl /tmpdrwxrwxrwt. 9 root root 4096 Nov
7 06:27 /tmp可以看到,最后一位,显示的是t,而不是x,意思是普通用户不能删除其他用户的文件。所有用户在/tmp目录中,都可以随意创建文件,但是却删除不了其他人的文件,即使文件的权限是777。[root@localhost tmp]# touch /tmp/stick[root@localhost tmp]# chown li4:li4 /tmp/stick[root@localhost tmp]# chmod 777 /tmp/stick[root@localhost tmp]# su - zhang3[zhang3@localhost ~]$ rm /tmp/stickrm: cannot remove '/tmp/stick’: Operation not permitted我们在上面创建了两个用户zhang3和li4,并拿它们测试了chown和chmod命令,最后介绍了粘贴位。linux比较安全的原因,就是因为有比较详尽的权限划分。但权限是枚双刃剑,超权用户一个命令就可以搞垮系统,许多隐藏的木马,通过提权运行在不为人知的地方。权限相关的几个命令会经常被使用,下面举几个例子。# 设置/var/lib/mysql的用户和组为mysqlchown -R mysql:mysql /var/lib/mysql# 设置目录可读可写,能够上传文件chmod
777 /var/www/uploads# 增加本目录下所有sh的执行权限chomd a x *.sh# 变更file为可读可写可执行chmod u=rwx,g=rwx,o=rwx file下面依然是思考时间:1、下面这个命令,执行以后,会发生什么情况?警告:不要执行,哪怕把000改成其他数字。# R遍历子目录的意思chmod -R 000 /2、有一天,我看到一个命令chmod u s file,文中并没有介绍s是什么意思,这是什么意思?3、如何删除一个用户的组?10. 如何对磁盘进行操作?下面的场景非常的恐怖,对有些程序员来说可以是一场噩梦。一大早刚刚去上班,煎饼果子刚啃了一半,几个全副武装的警察就闯进了公司。二话不说控制住了工作人员,并守株待兔的等着鱼儿来上班。原因就是:公司涉嫌存储和扩散非法文件,需要查封所有的服务器进行彻查。这些文件,有的简单的放在磁盘上,有的放在文件存储服务器上,有的,被切成了多片放在了不同的廉价机器上。接下来会发生什么,要看技术人员的水平,但估计结果并不会太好。在上一小节,我们创建了两个普通用户,这两个用户没什么本事,和默认的用户root比起来,它们的权限就小得多。除了自己目录下的文件,其他的,它几乎都没有权限去修改。这些文件,肯定是要存在磁盘上的。对磁盘的管理,有非常多的命令,这一小节的内容,对于系统管理员来说,经常使用;但对于开发来说,就要求比较低一些。因为开发只需要知道小电影存在什么地方了,不需要知道小电影是怎么存的。那定罪的时候,运维和程序员,到底是谁的锅更大一些?其实是个悖论。运维人员在发呆的时候,脑子里回忆起了下面的知识。10.1.添加新硬盘你要是一个系统管理员,甚至是一个上了云的系统管理员,现在买了一块aws的扩展盘,它是不能被使用的。需要经过格式化挂载以后,才能投入生产。还记得在安装系统的时候么?其中有一步,需要对虚拟机的磁盘,进行划分,我们直接采用默认的方式。不过现在已经改不了了,它已经是过去式了。为了模拟对磁盘的管理,我们需要首先给虚拟机新加一块虚拟磁盘。首先,使用shutdown -h now命令关闭机器,进行下面的操作。1、 进入settings选项,然后切换到storage,添加磁盘2、 点击创建一块磁盘3、 选择VDI4、 动态扩容,用多少扩多少5、 我们创建一块2GB大的,叫做disk2的磁盘启动机器。远程连接192的ip,别忘了执行dhclient命令。首先使用fdisk看一下目前的磁盘状况。root@localhost ~]# fdisk -lDisk /dev/sda: 8589 MB, 8589934592 bytes, 16777216 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk label type: dosDisk identifier: 0x000c2410
Device Boot
Start
End
Blocks
Id
System/dev/sda1
*
2048
2099199
1048576
83
Linux/dev/sda2
2099200
16777215
7339008
8e
Linux LVMDisk /dev/sdb: 2147 MB, 2147483648 bytes, 4194304 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk /dev/mapper/centos-root: 6652 MB, 6652166144 bytes, 12992512 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk /dev/mapper/centos-swap: 859 MB, 859832320 bytes, 1679360 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytes从命令的结果,我们看到了有两块磁盘。/dev/sda和/dev/sdb,其中sda已经被分配,已经被我们的文件系统所占用。现在,回忆一下/dev目录的用途,在这个目录下,存放了一些设备文件,假如我们再添加一块磁盘,它的句柄就应该是sdc (sd*)。在这整块磁盘能够被使用之前,我们需要对它进行三次操作。磁盘分区磁盘格式化磁盘挂载10.2.分区对磁盘分区依然是fdisk命令,以下命令,将进入交互模式。在交互模式中,输入n新建分区。由于我们的磁盘只有2GB,所以只创建一个分区就好。根据向导,一路确定向下,最后,输入w确定写入分区表,同时退出命令交互。再次执行fdisk -l,可以看到已经多了一块2gb大小的分区。[root@localhost ~]# fdisk /dev/sdb...[root@localhost ~]# fdisk -l...
Device Boot
Start
End
Blocks
Id
System/dev/sdb1
2048
4194303
2096128
83
Linux...10.3.格式化在命令行,输入mkfs,然后按<TAB>进行补全,将会显示一批命令。[root@localhost ~]# mkfs.mkfs.btrfs
mkfs.cramfs
mkfs.ext2
mkfs.ext3
mkfs.ext4
mkfs.minix
mkfs.xfs这批命令,都可以对磁盘进行格式化。目前,最常用的磁盘格式是ext4。但我们并没有找到windows操作系统的FAT以及NTFS等格式,但它们在概念上是等同的。下面介绍一下Linux下常用的磁盘格式。btrfs GPL授权。是为了替换ext系统而发起的。不熟悉,不过多评价。cramfs 门针对闪存设计的只读压缩的文件系统,其容量上限为256M,采用zlib压缩,很少用ext2 ext的早先版本。ext3 ext2的改进。ext4 使用最多。如果对其他的不熟悉,老老实实用ext4吧。minix 比较古老,也不常用。xfs XFS 文件系统是扩展文件系统的一个扩展,是 64 位高性能日志文件系统。centos7.0开始的默认文件系统。我们就录乡随俗,将磁盘给格式化成xfs。[root@localhost ~]# mkfs.xfs /dev/sdb1注意:如果想要把磁盘格式化成fat32的格式,需要安装一个软件。 yum install dosfstools -y10.4.挂载最后一步,是使用mount命令挂载磁盘。我们把它挂载到/data目录。df命令能够看到系统的磁盘使用状况,参数h是human的意思,以比较容易读的方式展现信息;lsblk则以另一个角度查看系统磁盘挂载情况。[root@localhost ~]# mkdir /data[root@localhost ~]# mount /dev/sdb1 /data[root@localhost ~]# df -hFilesystem
Size
Used Avail Use% Mounted ondevtmpfs
908M
0
908M
0% /devtmpfs
920M
0
920M
0% /dev/shmtmpfs
920M
8.6M
911M
1% /runtmpfs
920M
0
920M
0% /sys/fs/cgroup/dev/mapper/centos-root
6.2G
1.4G
4.9G
22% //dev/sda1
1014M
149M
866M
15% /boottmpfs
184M
0
184M
0% /run/user/0/dev/sdb1
2.0G
33M
2.0G
2% /dataroot@localhost ~]# lsblk
-fNAME
FSTYPE
LABEL UUID
MOUNTPOINTsda├─sda1
xfs
ac3a3ce8-6ab1-4c0b-91c8-b4e617f0dfb4
/boot└─sda2
LVM2_member
3GzmOd-TUc1-p2ZN-wT5q-ttky-to9l-PF495o
├─centos-root xfs
9f86f663-060a-4450-90f9-3005ad9c5d92
/
└─centos-swap swap
cf8709b0-b0ab-4d44-a23e-ad76f85efad6
[SWAP]sdb└─sdb1
xfs
0a7c861c-1a31-45b3-bf37-c72229f35704
/data为了能够在开机的时候加载磁盘,我们需要修改/etc/fstab文件。这种文件修改的时候一定要小心,否则会造成系统无法启动。[root@localhost ~]# echo '/dev/sdb1
xfs defaults 0 0' >> /etc/fstab[root@localhost ~]# cat /etc/fstab/dev/mapper/centos-root / xfs defaults
0 0UUID=ac3a3ce8-6ab1-4c0b-91c8-b4e617f0dfb4 /boot
xfs
defaults
0 0/dev/mapper/centos-swap swap
swap
defaults
0 0/dev/sdb1
xfs
defaults
0 010.5.交换分区由于内存的容量有限,现在的操作系统,都会使用磁盘模拟一个虚拟内存区域,用于缓冲一些数据。由于磁盘的速度和内存不可同日而语,通常会造成应用程序的卡顿。卡归卡,应用进程却可以因此苟延残喘,续命。swap分区,即交换区,系统在物理内存不够时,与swap进行交换。即当系统的物理内存不够用时,把硬盘中一部分空间释放出来,以供当前运行的程序使用。当那些程序要运行时,再从swap分区中恢复保存的数据到内存中。现代互联网公司,一般对接口的响应时间有比较高的要求,swap分区一般是禁用的。关于swap,有下面几个相关的命令。# 制作交换分区[root@localhost ~]# mkswap /dev/sdb1# 禁用所有交换分区[root@localhost ~]# swapoff -a# 启用交换分区[root@localhost ~]# swapon10.6 使用dd命令进行备份下面的命令,将直接备份磁盘A到磁盘B。# dd if=/dev/sda of=/dev/sdb在上面的命令中,if代表输入的文件,of代表输出的文件。根据Linux下一切皆文件的原理,这里的文件指的就是设备。dd命令还可以将整个磁盘打包成一个镜像文件。比如下面的命令。# dd if=/dev/hda of=~/hdadisk.img当然,恢复磁盘的时候,也是相当简单的,我们只需要逆向操作就可以了。# dd if=hdadisk.img of=/dev/hdaEnd这篇文章有6万字,经历了多个版本的整理,有小伙伴已经拿着它作为了公司的培训资料。到现在为止,你已经对Linux的命令行有了比较客观的了解。但我这里还有很多可以让你更上一层楼的文章,比如vim、sed、awk的使用。原文出处:https://mp.weixin.qq.com/s/ZralWEfG2WJfZ-G-x9biow}
有时候我们以为是众所周知的事情,对别人看来说却是稀奇。所以讲讲这些众所周知的事情。▆▇█▇▆▅▄▃▂▁▁▂▃▄▅▆▇█▇▆▅谢谢热心的知友Rainbow提供如此高大上的分割线,直接拿来用了(只知道复制,笨啊,远观分割线的形状,让我有种觉得自己是不是被ta坑的错觉)。其实有很多要补充的,但是由于我真的不喜欢一次次分割出来乱七八糟的内容,会有种很想敲自己的冲动,所以我直接在原文中修改了。只是为了逻辑点,不是召集大家来找茬
。2016-5-19的更新只有一条,在最后面,关于啪啪欲望,写得自己狂笑。1. 关于月经1.1
第一次拜访的大姨妈如果有人问我,人生第一次濒死感是什么时候?回答就是第一次来大姨妈。应该是六年级毕业后的那个暑假有一天上厕所发现自己流了一整条内裤的血之后,呆在厕所了半小时没有反应过来,脑袋里闪过的唯一念头就是我要死了,流血而亡,这大概是最不浪漫的死法吧。在那之前我对大姨妈唯一的了解就是好奇妈妈抽屉里的那包白白软软的卫生巾是拿来干什么的,真的要原谅那个年代匮乏的生理卫生知识,让我小小年纪就有了种即将流血殆尽的阵亡感。正常情况下,女孩子的初潮应该在12-16岁,现在有提前来初潮的趋势,有碰到过8岁就来的。初潮一般会在乳房开始发育后的两年左右来潮,所以当发现家中有小女孩胸部开始发育的时候,就应该提前给她打预防针,了解关于突然哪一天大姨妈的到访,免得像我一般吓到如今都记忆犹新。极少数的女孩子可能要等到十八岁才来初潮,但是如果超过十八岁,甚至来说十六岁还没有来的话就应该果断带她去医院就诊,排除是否有病理情况了。门诊遇到过很多子宫发育不良的女孩子,预后较好的是那些早期发现及时予以治疗的妹子,在补充外源性激素的作用下子宫甚至能长到正常大小的,以后怀孕生娃都没有问题的,但是也遇到二十几岁还没有来过大姨妈第一次来的女孩子,这时候已经错过了治疗的最佳时机了。真的很遗憾。1.2
初潮前的阴道出血现在越来越多地碰到小女孩性早熟或者在初潮前不规则的阴道出血了。具体原因很多,其中,最主要的是接触了大剂量的外源性雌激素,导致的性早熟和初潮前的不规则阴道出血。但也有是因为疾病原因。有见过小女孩误食了母亲的避孕药导致的不规则阴道出血的(家里有熊孩子,藏好你的避孕药)。所以,一切在初潮前出现的不正常的阴道出血都应该及时带到医院看医生。1.3
记下你的大姨妈其实,妇产科医生在门诊看病,最不原谅的对象就是对自己大姨妈一问三不知的妹子了(请原谅妇产科女汉子一颗放浪不羁 的心)。记录月经周期应该成为一个女孩在生育期一个必做的功课,就好像一日三餐,拉屎撒尿一般的自然。记录,指的是用笔纸或者在电子产品上记下来,不是指的脑袋,因为没有谁可以准确的回忆起上个月的事情。特别是针对青春期的少女和备孕期的女孩,拥有良好的月经周期(不是要求你真的必须28天来一次)是成为一个女孩生活最重要的部分。IT界甚至给广大女同胞研发了众多记录月经周期的软件,下一个何妨?1.4
姨妈来的那几天一般来说,每次持续时间为2~7天,周期在24-35天(可以适当的放宽到20-45天),经量在20-60ml之间。其中不乏有些妹子每次周期到40天,不要太紧张,是可以存在。同时偶尔一次两次大姨妈不听话,原本要来一个星期的姨妈两天就走了,不要忧伤,她还会再回来,下次借住得久点就没关系,或者突然推迟了几天来(怀孕除外),也不必太惊慌,最近是否熬夜了,过度运动了,节食了,还是精神压力大了些?这些都有可能会影响到姨妈的暂住时间。1.5
白带正常吗所谓白带,只是一些分泌物组成而已,正常情况下乳白色,但是分泌到内裤上,洗的时候发现有点偏淡黄色也是正常的,质地较轻,有黏性,无味,可能略带点腥味,因人而异,常常闻一下是有必要的,对它知根知底,有问题的时候自己都可以嗅出异常来,正常的白带并没有什么有害细菌,无需对它嗤之以鼻,嫌弃至深的样子。什么时候它不正常了?如果味道异常,质地浓稠,呈脓状,豆腐渣样,泡沫状,色灰,色黄,色绿等情况下,如果顺带还伴有瘙痒,是时候见一见医生们了。如果白带带血,带血丝,也需要挂个号看一下吧。顺道应该提一下,任何白带问题都应该去医院检查后再治疗,不同的阴道炎治疗并不一样,最忌讳的就是白带一有问题就自己塞药(你到底塞了什么鬼),那还要妇科医生干什么呢?而且,这样很容易导致双重感染和反复复发,用错药了还要加重炎症。1.6
清洗问题正常情况下,不推荐任何市面上的清洁剂。孩子,你没有那么脏,清水洗洗就好了,而且只是清洗外阴就好了,切忌:不要深入,不要深入,不要深入。谢谢热心知友名用提出了的好问题。我一直以为这从来都不是问题,竟然从来都是个大问题。到底清洗哪里?请先自行了解女性外阴结构(我送链接就好了外阴_互动百科)那么在大阴唇的内侧褶皱处是分泌出的白带滞留最多的地方。那么,清洗的时候至少需要清洗到大阴唇内侧褶皱处!1.7
选择卫生巾还是卫生棉有人说用卫生棉是妇女解放的一大标志。其实不用说的那么高尚,哪个好用哪个适合你就选哪个,最重要的是干净就好了。前两年爆出来的新闻是说很多山寨版的卫生巾在市面上,这样的新闻比比皆是:姐妹们,买卫生巾不能图便宜(图)劣质卫生巾厂能造20多种"名牌" 发往全国各地 揭地下窝点造山寨卫生巾黑幕 品牌卫生巾屡遭“李鬼”危害女性健康/图 所以对此,推荐是:最好长期固定一个或两个牌的卫生巾(品牌任意),至少知道你要买的卫生巾大概多少钱,过分便宜的唯一理由只有:假货,而且长期使用同一种牌子之后你就会对它的质感,手感,包装了如指掌,那意味着万一不幸碰到假货,也能鉴别出来。话说,银行人员在培训如何鉴别假币的时候,不是反复去感受假币,而是对正币了如指掌,同理如此,而且亲身试验过(某日在小卖部买了包常用的,打开一摸便知上当了)。另外还需要强调一点的是,并不推荐使用过多功能或者额外功能的卫生用品,比如说活血化瘀的,止痒消炎的……带点薄荷味已经是极限了,能避免就避免吧,人人经过你身边都能闻到一股扑鼻的“香气”,不要认为人人都是纯洁的孩子。关于更换卫生巾的时间,一般情况下是2-3小时需要更换一次(需要的话可以更勤),大姨妈主要是是剥脱的内膜和血液组成,是细菌生长最好的培养基,而是月经期是生殖系统最为脆弱的时候,宫颈微张,很容易引发感染,所以不管量多不多,换勤快点,妹子。1.8
护垫了吗广告词是量少的日子,护垫帮你解决。但是,看好,明明人家广告词都说得很清楚,量少的日子可以选择护垫,不是每天都垫着护垫。垫护垫的妹子,是因为太爱干净呢还是太懒不想洗内裤呢?多数护垫底部都是一层塑料,透气性很差,极容易造成阴部潮湿、出汗,使病原菌滋生。而且很多妹子垫护垫一垫就是一整天也不换(反正也不脏嘛),这样很容易导致局部的湿度温度都增加,这时候细菌或者真菌就要来作祟了,要是遇到因为垫护垫造成的炎症来就诊了,医生们的内心都是咆哮的!所以,扔掉你的护垫,轻松做女人,勤换内裤!1.9
内裤选好了吗作为女人,内心中是真的是不能抗拒这样的诱惑但是,科学的选择内裤的时候你需要倾向于透气的产品。什么叫透气,不是蕾丝好多洞洞好多网网就透气了,特别是内裤最下面的那一部分的面料必须是纯棉透气的!我爱的姑娘们,在需要这么性感诱惑的内裤存在的私密性福时刻尽情的使用它们,穿罢用罢,日常的时候换回那条纯棉透气的内裤,好好爱惜自己的身体。需要强调的一点,内裤并不是越贵越好,因为贵到一定程度之后其价值只体现在广告费用的投入上了,那么,也请远离那些一块钱一条的化纤内裤(一块钱是不是说的太少,只是打比方说你买了十块钱三条的内裤,其中一条内裤的真正价值还真的没有一块钱)顺便还想多一句嘴,内裤天天换,天天洗,不要和其他衣物一起洗,特别是袜子,尤其是刚好还长了脚气。用比较温和一点,容易清洗净的洗涤剂洗,因为它真的没有很脏。如果你恰好买了超强超难清洗掉或者劣质洗涤剂,那你就认真清啊认真清啊认真清。1.10 什么时候要去医院好好调教一下调皮的大姨妈了a. 比如说一个月来了好几次;b. 大姨妈超过你的两个周期还没有来(保守估计),因为那么你怀孕了,要么你病了;c. 大姨妈来了半个多月还没有停的迹象,感觉自己真的要流血殆尽而亡;d. 大姨妈好少,一天就了事,还打湿不了三张卫生巾;e.
大姨妈来的时候痛得要死要活,就算你还是个青春期美少女; 好了,所以我们要讲一讲痛经了。2. 关于痛经2.1
常见的痛经原因痛经分为两种,一种是原发性痛经,大多由于前列腺素的增加导致的,常常找不到原因。另外一种叫继发性痛经,包括了所有可能导致痛经的疾病造成的痛经,常见的有子宫内膜异位症,子宫腺肌症,子宫肌瘤等。2.2
有哪些止痛的办法对于痛经的缓解办法我真的认真的查阅了相关的文献,做了较为详细的解析。如何缓解痛经? - 大力的回答 有需要的可以直接拿去。同时最近关注关于子宫内膜异位症引起的痛经。我并不想要和你谈一场白首到老的恋爱 - 女科玉尺 - 知乎专栏 不要误会,答主并没有在和你谈恋爱。任何痛经都不是每个女孩子活该承受的,特别是每个青春期美少女们,在当他们上课的时候痛得死去活来的时候,常常会被教育到:这是每个女孩子都会经历的过程。其实不然,只是我们没有足够意识到痛经本身所存在的问题。如果是由于器质性的疾病引起的,那么早点发现,早点处理,早点预防则是最好的。如果是原发性的痛经,那么适当是服用止痛药物会让一个女孩子的生活质量大大的提高,何乐而不为。不要把痛经当成你理所当然应该承受的痛苦,只因你是女孩。3. 关于怀孕3.1
怀孕之前如果你准备怀孕,尽可能的完成一些常规的孕前检查:妇科查体子宫附件区的B超宫颈细胞学和白带检查 血常规尿常规肝功能乙肝标志物检查AB0血型如果家里养猫了,至少还应该查一个TORCH(有且不仅这些~)3.2
叶酸到底是什么鬼关于是否服用叶酸,我只想用一张图说明问题Spina bifida 神经管畸形(图片来源:维基百科)或许会有朋友告诉你,他们没有吃叶酸,孩子照样很健康。甚至好多朋友都是这样告诉你的。就像,很多人告诉你,我每天都横穿马路从来都没有被撞到过一样,只是说不准,你去穿,还真的就被撞到了。有人会问,不吃的话发病率有多高,答应是,于你,100%或0。如果你没有吃且孩子健康,恭喜你,但是如果还要再生一个,还是吃几颗也无妨,社区医院免费领的药物未必就是不好的。如果你还没吃,正打算吃,赶快去领两盒回来。世界卫生组织的建议是:请补!当然他们也提到了还有铁的问题,关于怎么补铁的问题请根据个人情况咨询医生怎么补,补多少。3.3
怎么知道排卵萌妹子们常常要问的一个问题,怎么知道自己排卵了吗?最简单的莫过于:基础体温表!随手Google出来的图,只能说声侵权马上删,实际上已经侵权了,无意间发现原网址是日文的!基礎体温表の見方,但是,心中还是默念着:侵权无国界!(示范一个正确的知识版权观的好孩子)姑娘们若能够把基础体温表画成这样也就差不多了,体温上升的前后两天就是排卵期,多啪啪,但是在排卵期前后不要憋卵的同时也不要憋精(我讲清楚了吗?)另外还有其他办法,B超检测排卵,LH排卵试纸。强烈推荐的还是基础体温表怎么测:a. 使用最原始的水银温度计b. 充足睡眠后的清晨,最好每天定时c. 不要任何运动d. 舌下测量e. 绘图,连线(好像有手机APP可以记录了,反正不要报一堆体温的数据给医生就好,会有想敲你的冲动)如果你真的担心自己45天才来一次月经是不是正常的,那么检测一下基础体温,如果是有体温升高,排了卵,那你可以继续安心的逛知乎了。3.4
怀起了怎么办不要自身自灭,去医院找医生!此处不做医疗咨询,不讲黄体酮的血泪史!3.5
孕期建卡和孕期保健妊娠第11-12周左右就应该去正规医院的产科建卡! 孕期保健请根据你的产科医生的指导,认真听话的执行。3.6
什么时候可以再生顺产后,如果一切恢复顺利,至少6个月才能生二胎;剖宫产后,如果一切恢复顺利,至少两年后才能生二胎。注意前提是一切恢复顺利,不指的是特殊情况。那么,这期间,你需要避孕,我们来聊一聊避孕吧。4. 关于避孕4.1
所有热衷于体外射精的男人都应该拖出去斩了刚好前几天有个妹子问我,她寝室有个室友男朋友从来都是体外射精,怎么办,会怀孕吗?我当时怒火攻心,只回了她两个字:分手。然后我告诉她没钱吗?要不要我转点钱给你,你帮我转交给她,嘱托她去买个套,妹子说室友男朋友不爱带套套。有种从此不会再爱,宇宙也拯救不了,撞破脑袋也搞不清这班年轻人怎样的心态!拖出去,斩了。4.2
套套存在的意义避孕,阻断性传播疾病!这是上帝馈赠给人类的拯救人类最好的发明。原本两句话大概就可以阐述完!再加一句:同一时间只用一只,土豪也不要这么任性。因为有人问,大力,你说的人流,宫腔粘连好恐怖,是不是同时用两个套套更保险?诚然不是!要真的两个一起厚点更保险,那么为什么人家公司要费劲心思研究出更薄(bao)更薄(bo)的新产品!你试试大夏天汗流浃背的时候捂两件羽绒服?体验超差的!不仅体验差,反而多事。4.3
我们来聊一聊避孕药这里所说的避孕药均是除紧急避孕药以外的避孕药。年轻的女孩们,不要戴着有色的眼光看到如此美好的药物。国外的女孩子从十八岁开始有性生活就可以常规吃避孕药避孕了,甚至皮下埋植避孕药。所以,不要谈激素就色变!它不是普通的激素,我们常说的增重,导致身材走样的激素不是性激素,而是糖皮质激素,此激素非彼激素。目前国内避孕药的使用很大一部分还在用于治病,比如说调节月经周期等。如果你月经都乱七八糟了,体内激素一塌糊涂,为什么还要抗拒可以治你的病的避孕药呢?如果你已经使用避孕药来避孕的话,那么你已经跟国际接轨了。同时,还需要强调的是:停了避孕药之后就可以马上安心怀孕了。避孕药不是魔鬼,是天使!有萌妹子留言问我紧急避孕药和口服避孕药哪种更好!那天刚好怒而更新了,因为我担心我若不及时更新,当天晚上她又要吃一颗了。请看,避孕这个环节根本就没有提到紧急避孕药,所以紧急避孕药根本就不是拿来常规避孕的!常规避孕,请弃之~当然,如果真的是由于极其特殊情况下被发生了性行为,特别又是刚好在排卵期!那么适当的极其勉强的请使用一次,有且仅这一次!因为如果接下来发生非意愿的妊娠需要做流产的话,那么紧急避孕药带来的副作用当然比流产的危害小。紧急避孕药也不是魔鬼,它只是用于特殊情况下的避孕而已,如非意愿的被性行为了,或者常规避孕失败(套套破了,或者漏服了避孕药的情况下),才会使用。4.4
安个环怎么样对于以后没有生育要求的妹子们来说,可以安个环来避孕,简单有效。4.5
对你的环留个心眼如果你真的安了环,那么以后每年妇科体检的时候,B超应该提示类似这样的语句:宫内环位正常的字眼。不排除安了的环可能会到处乱跑,跑出去或者跑到肚子里去。4.6
等你绝经了以后等你,或者你妈妈绝经了以后,安在子宫里的环是时候取出来了。不能听之任之的把环放在肚子里,感觉它好像反正都已经呆了这么久了就让它呆着吧。绝经后子宫会萎缩,环可不会萎缩,所以不排除它会穿破子宫,甚至游离到盆腹腔里去。曾经做过的很长一台手术,不是妇科肿瘤的手术,竟然是为了找躲在腹腔某个卡卡角角里的环,前前后后折腾了六七个小时,然而顺利的取环术一分钟就可以搞定
4.7 结扎了吗说句真心话,对于结扎这个问题,答主知之甚少。最初的知识来源是计划生育时代,每一个被拖去结扎的女性背后的辛酸史。在我泌尿外科实习,转妇产科的过程,还真的没有遇到过纯粹因避孕要求来结扎的,请原谅我的粗陋寡闻了。相反,遇到过是的因为严重的输卵管问题,要求来结扎后做试管婴儿的。当然这是非常行之有效的办法,如果你们确定今后的人生不要有生育要求(比如说已经生了两三个的),觉得吃避孕药太麻烦,带避孕套影响幸福指数,安环也不能满足你的需求,那么可以去医院咨询一下妇产科医生或泌尿科医生。然而,如果你们单纯的是想当丁克,私以为还是可以选择其他避孕办法的。因为也遇到过,曾经一心想当丁克的夫妻,做了输卵管结扎术后的十年,要求复通怀孕。所以慎重决定,因为不是一扎解千愁。(由于我粗陋寡闻浅薄无知的知识所决定,我对男性输精管结扎的了解知之甚少,所以请原谅我不能硬答 ,待我去找泌尿外科了解一下再做解答,对于其避孕效果,可以肯定是非常有效的!请不要误产生了男女平等诸多问题!怒歉)5. 关于人流5.1
你所不知道的人流手术没有做过人流术的人生才叫完美!谢谢考虑周到的青青妹子好心的提醒。原本想删除这句话的,多有冒昧和不周之处。因为来医院也有很多因为各种不得已的原因行人流术的妹子们,最常见的比如说胚胎停滞发育等原因。只是上帝造人的时候打了个盹,不过他不会老是这么残忍,总是遗忘认真避孕,安心备孕的你。苍天可鉴一颗真心,这里所说的人流术都是指的是那么不好好避孕,想啪就啪不计后果后随意终止意外妊娠的情况,不管你是发乎情还是始于炮!5.2
人流后什么时候开始避孕立刻,马上。当然,人流后手术后事项上一般写的是禁同房一个月!5.3
人流后怎么避孕没有什么差,常见的就是:避孕套或者避孕药。5.4
你必须了解什么叫宫腔粘连为什么我说没有做过人流术的人生才是完美的。因为实在见过太多的年轻妹子做了人流术后,一次或者多次后,月经量减少,月经量少,月经量极少,闭经的。最常见的原因就是因为宫腔粘连。(网图)正常的宫腔应该是这样的。(网图)宫腔粘连的宫腔里纤维增生,正常的内膜内膜很薄,甚至没有。那么它对妹子可能最大的影响就是怀孕了。我想说的是,目前真的没有什么特别有效的办法治它,除了手术分粘,分了粘,粘了分,分了继续粘~而且,对于宫腔粘连的妹子试管婴儿也帮不上你什么忙,因为你装娃的房子坏了,而且补不了。输卵管不通,至少可以直接胚胎种植,不排卵可以促排卵,甚至赠卵,然而子宫不好了,办法是稀缺,有待科学研究。说到宫腔粘连这个问题,其实或多或少是有带一些恐吓性质,原谅大力的苦口婆心!因为真的有人做了七次人流,最后还是生了健康宝宝,过着幸福的生活,但是也有人做了一次人流,就粘得不可开交!所以要看你积攒的人品和运气如何了。只是不要到为时已晚的那一刻,再怎么恐吓也没有用了。6. 妇科体检6.1 “宫颈糜烂”因为有妹子提醒我,你还没有讲宫颈糜烂呢!其实我想,能上知乎的妹子们,应该不至于连现在已经取消宫颈糜烂这个疾病名称都不知道吧。可能真的有。如果你真的认为这是一个很严重的的“疾病”,请到正规医院的妇产科找医生咨询,远离莆……避免蹭热门话题,打住!虽然这样说,但私以为还是不可轻视它,至少定期的常规妇科体检记得问候它。那么什么是常规妇科体检?6.2
常规妇科体检谁应该做:如果一旦开始有幸福的行为(我打错字了吗?),就应该纳入常规妇科体检的必须队伍。如果你还没有过,也可以适当的选取一些检查做。多长时间做一次:1-3年。去哪里做:正规医院的妇产科,远离莆……远离马路上给你发免费体检卡的医院,上面写着:学生免费人流!全套妇科体检原价1888元,现在只要8元!关注女性健康,专家免费做体检……(多年前,大力真的好奇也接过这样的体检卡!只是我拿来在期末妇产科学考试复习的时候拿来当尺子用,划重点用,超级好用!当然已经用划重点的笔把卡片上刺眼字眼涂掉)。做什么:(至少,我说的是至少,有且不仅有)常规的妇科查体;白带和宫颈细胞学检查;妇科B超。如果还有宫颈问题的(如你认为的宫颈糜烂)还应该做HPV检查等。如果,你还没有经历过幸福的(我说清楚的了吗?),请每一次都主动的,大声的,直接的告诉你的接诊医生:你还是个“孩子”(我肯定没有说清楚!)因为请原谅有可能连续看了一天病的妇产科医生们没有听到你发出的弱弱的害羞的声音。6.3 去看妇产科你需要注意什么显然这个内容是被大力强行加进去的,但是我觉得依然很重要,因为妹子你要原谅妇产科医生们那颗内心无时不刻都想咆哮的心。做好充足准备无论你是去看病的,还是去体检的,他们都会问你的最基础的几个问题,可以提前准备好。比如说:a. 什么时候来的第一次大姨妈;答曰:这么久了我怎么记得。咆哮的心:你都不记得,难道我能记得?b. 上次大姨妈是什么时候的;答曰:上个月。咆哮的心:上个月有31天呢,难道我要我从1号猜到31号?c. 大姨妈多久来一次;答曰:有点乱。咆哮的心:乱你还不记得她的好!!!d. 大姨妈一次来几天;答曰:几天。咆哮的心:到底几天?e. 量怎么样;答曰:还可以。咆哮的心终于稍有安慰,还可以就是中量咯。f.
痛经吗?不耐烦道:医生,我是来看月经不调的,你问我这个干什么?咆哮的心:心中默念,让我喝口水,降降火,注意良好的医患沟通,态度要和善~……(以上答曰不是标准的答案,切记!不要挑逗你的妇产科医生)装备请不要穿连体裤!(如果你想让你的医生对着你,看你穿脱衣服裤子十分钟,请便!)请不要穿不易脱的鞋子!请不要穿着鞋子踩上检查床!请不要忘记带走你挂在墙上的包包!请不要忘记拿走你的检查瓶子和检查单!……遇到男医生怎么办?发自内心的告诉你,你在妇产科遇到的男医生,他已经系统的机械性的忽略掉你的性别了(看到你的那一眼,他内心中咆哮的是,“kao”,怎么还没看完,今天挂号处怎么给我挂了这么多号)。请你也选择主动忽略掉医生性别特征,无异。相信你的医生由于最近的医疗界发生的悲恸事件,我想能够看到这里的妹子们真的不容易,虽然我写起来也是不容易(羞愧),希望你们能够尽量的相信你们的医生,当然我指的是你走进了正常的医院,遇到了正常的医生(如果你好奇走进的是小卡片上的医院,就当我没说)。还有,现实中真正给你接诊的医生永远比网上真真假假的医生靠谱(包括大力!)关于房事的欲望(性冲动)看到知乎上有很多关于各种各样的性冲动,很多妹子都不知道怎么回事,所以我认真严肃的答了答,但是由于这个问题实在太大,不方便直接更新在这里。为什么例假前后一周会有特别强烈的性冲动? - 大力的回答写完之后,自己都笑了,哎,这个问题关我屁事呢,干嘛强答。不过,或许能解答你们的疑惑。常常妹子留言说,大力,我例假推迟了十几天,怎么办,诸如此类的问题。其实我想说,我也会偶尔一两次这样,观察一下就好了,但是面对不是自己的妹子们,仅仅是这一句描述,任何医生可能都给不了她答案,因为作为一个医生的本能,我会有无数个疑问,平素月经怎么样,周期规律吗?有性生活吗?安全避孕了吗?是否测过妊娠试验?“喏,去查个尿或抽个血,再说”拉大便的时间早就过了,差不多扯厕纸,冲厕所,洗手出门了,虽然空了还会继续聊。真的还有好多,因为我希望你能更懂你自己,你能更了解疾病是什么,你能够更理解,作为医生,偶尔才是治愈,常常仅仅是帮助,总在做的只是安慰。----------------------------------------------------------前两天专门关于这个做了知乎Live,觉得还没有听够的,还有兴趣的,可以点进去听听让姑娘们受益一生的重要妇科常识最后,珍重,可爱的妹子们和爱妹子们的男孩们!}

我要回帖

更多关于 金证优智怎么样 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信