Linux操作系统管理公共基础——积累

来源:互联网 发布:apt-get install mysql 编辑:程序博客网 时间:2024/05/24 07:07

20170609 16:00

备注:本篇博文,借鉴新浪博客中用博文积累文学知识、英语词汇的好习惯的成功养成,这里同样是一篇知识积累型的博文,用于记录任何、各种关于Linux系统技术的新发现。这些技术多数比较零散,或者只是暂时不知道该怎样科学地、体系地分类,所有的这些琐碎、细小的技术发现都将记录存档到这里,随时更新。此外,因为是学习、实践过程中遇到的问题&处理的积累、集锦,所以会很实用。

20171211  15:26

GTK+(GIMP Toolkit)是一套源码以LGPL许可协议分发、跨平台的图形工具包。最初是为GIMP写的,已成为一个功能强大、设计灵活的一个通用图形库,是GNU/Linux下开发图形界面的应用程序的主流开发工具之一。并且,GTK+也有Windows版本和Mac OS X版。

20171128 10:12

foo到底是什么意思?
https://www.zhihu.com/question/34512213
        foo和bar是计算机图书中最常用的变量名。“英文单词foo,不同的字典对其解释相去甚远,一说来自中国“福”字的发音,又有解释为二战时期的一种武器。然而若把众多的解释放在编程领域,将foo和bar组合在一起所构成的foobar的说法是我认为最为贴切的解释:foobar又为foo-bar,其中bar是beyond all recognition的缩写,通俗点就是无法识别,一塌糊涂的意思。而foo是fu的变体,fu是英语习语fuck-up的缩写,同样是一团糟的意思。于是,若你有些编程经验,我想你应该已经明白了为何如今许多编程实例所涉及的事物均被冠名为foo”。

20171123 16:54

INI,一种文件格式,是某些平台或软件上的配置文件的非正式标准,以节(section)和键(key)构成,常用于微软Windows操作系统中。这种配置文件的文件扩展名多为INI,故名。INI是英文“初始化”(initialization)的缩写。正如该术语所表示的,INI文件被用来对操作系统或特定程序初始化或进行参数设置。

20171115 15:32

XFS,一种高性能的日志文件系统,最早于1993年,由Silicon Graphics为他们的IRIX操作系统而开发,是IRIX 5.3版的默认文件系统。2000年5月,Silicon Graphics以GNU通用公共许可证发布这套系统的源代码,之后被移植到Linux 内核上。XFS 特别擅长处理大文件,同时提供平滑的数据传输。

20171108 10:11

Linux 系统中inode空间已满或数量耗尽的解决

 参考资料:linux inode已满解决方法 (参考整体处理思路和流程)

    http://blog.csdn.net/fdipzone/article/details/41558685

   inode 耗尽处理 (参考其中rsync海量删除文件)

   http://ckl893.blog.51cto.com/8827818/1682278

 彻底解决Linux索引节点(inode)用满导致故障的方法(证实了“rm -rf ./*报错”)

   http://blog.csdn.net/shanhuhau/article/details/51009869 (参考其中的for语句使用)

   首先,通过命令df -h”,查看磁盘的使用情况

   而后,通过命令df -i”,查看inode的使用情况,inode耗尽导致出现系统异常时一般查询结果中“IUse%”百分比会很高,需要清理无效或多余的inode

   再而后,使用命令du -sh”和“du -h”,逐步、渐次地定位到占用磁盘空间较大的系统文件。

   最后,通过<1>命令“rm -rf ./*”或者“find ./ -type f -exec rm {} \;”删除多余的系统文件 <2>或者命令“rsync” 海量删除文件。并在处理完毕后进一步检查当前系统中的inode使用情况。

——备注:似乎与磁盘空间占满的处理方式一致,最终都是清理磁盘中的文件。有待进一步理解。

 1:之所以使用find ./ -type f -exec rm {} \;” ,是因为使用rm *,有可能因为文件数量太多而出现Argument list too long错误。

 1.1:当需要删除的文件太多时,还可以使用的命令为find . -name "*" | xargs rm -rf

 2:除了/tmp的临时文件外,0字节的文件也会占用inode,应该也释放。遍历寻找0字节的文件,并删除:

    sudo find /home -type f -size 0 -exec rm {} \;

20171107 09:17

使用Xshell通过ssh方式访问Linux虚拟机时对话窗口弹出较慢的处理
参考资料:sh访问虚拟机下的centos慢的解决方法
  http://blog.csdn.net/chenghuikai/article/details/53023256
修改sshd的配置文件:/etc/ssh/sshd_config
找到#UseDNS yes这一行,取消注释并把yes改成no,然后重启ssh服务

20171031 a.m.

行业术语:

IPC,Inter-Process Communication,进程间通信。1.在不同进程之间传播或交换信息,那么不同进程之间存在着双方都可以访问的介质是什么呢?进程的用户空间是互相独立的,一般而言是不能互相访问的,唯一的例外是共享内存区。2.是一组编程接口,让程序员能够协调不同的进程,使之能在一个操作系统里同时运行,并相互传递、交换信息。这使得一个程序能够在同一时间里处理许多用户的要求。3.IPC方法包括管道(PIPE)、消息排队、旗语、共用内存以及套接字(Socket)。
RPC,Remote Procedure Call Protocol,远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。

20171103 17:46

Cygwin,是一个在windows平台上运行的类UNIX模拟环境,是cygnus solutions公司开发的自由软件(该公司开发的著名工具还有eCos,不过现已被Redhat收购)。它对于学习UNIX/Linux操作环境,或者从UNIX到Windows的应用程序移植,或者进行某些特殊的开发工作,尤其是使用GNU工具集在Windows上进行嵌入式系统开发,非常有用。

20171026 10:10

运行whatis ls时提示nothing appropriate
https://jingyan.baidu.com/article/fec7a1e5f6882a1191b4e75d.html
  Linux常用的帮助命令:help,man,whatis 其中,(1)help使用时,按照命令本身的类型(分为系统内置命令和外部命令)不同,使用格式也不同。内置命令格式:help COMMAND 例如:help history  外部命令:COMMAND --help (备注:内置命令 一般是系统自带的系统管理常用命令,而外部命令则是通过后续安装应用软件而生成的命令) (2)man是帮助手册,算是命令详解吧!如果Linux是最小安装的话,默认是没有安装man的,需要运行命令安装。安装man:yun install man (3)whatis用于了解命令的概念解释。
  当前的问题是当使用whatis了解命令的概念定义时,会出现“COMMAND:nothing appropriate”的提示。原因在于原来whatis是根据数据库执行查找操作的,这个数据库是定期更新的,新安装的系统,系统还未自动更新,所以可以使用makewhatis命令来手动更新,再次运行whatis COMMAND,就可以成功了解目标命令的定义/概念/用途了。(备注1:这里给出的原因是“新安装的系统 故数据库未自动更新”,认为,新装一个应用软件之后的最初一段时间内,该应用软件所生成的[外部]命令的概念也是无法通过whatis来了解的。备注2:这里的man、whatis两个命令都是man软件包中携带的,此外该软件包还有其他常用的命令,如apropos命令)

20171018 09:31

比起Windows,怎样解读Linux的文件系统与目录结构?
http://www.infoq.com/cn/articles/how-to-read-linux-file-system-and-directory-structure

备注:进一步认识Linux的文件系统基础理论,重点在于了解Linux的“一根定乾坤”(在根目录下能遍历所有文件),和win7的“群雄并起”(C盘、D盘相互隔离)。

在Windows系统中,我们可以把文件大体分为两种: 系统文件和用户文件 。一般来说系统文件(例如Windows操作系统本身,一些系统程序,程序运行所需的库文件,以及一些系统配置文件等)存放的默认位置在 C 盘,当然也可以在安装时候指定在其他盘;其它用户文件,包含用户后来安装的程序以及一些数据文件等,用户可以把它们随意存放在任意的分区。

在 Linux 系统中,主要有两个概念: 虚拟文件系统中的文件和 Linux操作系统内核 本身。逻辑上可以认为前者属于上层,后者在下层,前者基于后者,后者依赖前者而存在。 Linux 把除了它本身( Linux操作系统内核 )以外的一切事物都看作是在 虚拟文件系统中的文件了。无论是键盘,鼠标,数据,程序,CPU,内存,网卡……无论是硬件、软件、数据还是内存中的东西,我们都可以在 虚拟文件系统中的相应子目录对他们进行访问和操作,操作统一。而实现这些管理的幕后就是 Linux操作系统内核 本身:启动 Linux 系统的时候,首先电脑把 Linux操作系统内核 加载到内存中,内核本身提供了文件管理,设备管理,内存管理,CPU进程调度管理,网络管理等功能,等内核运行起来之后,就在内存中建立起相应的 虚拟文件系统,最后就是内核利用它提供的那些功能,通过管理文件的方式,来管理 虚拟文件系统中的硬件软件等各种资源了。

20171012

看完这几个问题 你还敢说你懂电脑吗?
http://biz.51cto.com/art/201709/552371.htm###
私有云将迎来春天?
http://cloud.51cto.com/art/201707/545737.htm
做一个月薪3万的Linux云计算工程师的纠结与迷茫
http://os.51cto.com/art/201709/552487.htm
虚拟化与云计算的关系
http://www.chinacloud.cn/show.aspx?id=15921&cid=81

20171010 18:01

关于自动化部署的研究之参考资料
自动化工具Ansible:基于Jenkins+Ansible+GitLab的部署实践
http://blog.csdn.net/u012411480/article/details/75333154
jenkins结合ansible用shell实现自动化部署和回滚(图文并茂)
http://www.cnblogs.com/rwxwsblog/p/5667772.html
Jenkins+Ansible+Gitlab自动化部署三剑客(更图文并茂)
http://www.showerlee.com/archives/1880

关于容器(docker、mesos、kubernetes)、云平台(openstack)、虚拟化(xen、kvm)、物理机作为服务器的优劣对比了解之参考资料
一个“优雅”技术人眼中,容器与虚拟化的相爱相杀
https://www.leiphone.com/news/201612/4juGZ8u6ZYjZldOi.html?viewType=weixin
容器将完全颠覆虚拟化
http://www.360doc.com/content/16/0706/08/30947760_573443610.shtml
虚拟化与Docker容器:云计算旧爱新欢的博弈
http://cloud.51cto.com/art/201508/488210.htm
云计算/大数据   >  Docker那些事
http://blog.csdn.net/column/details/dockerthings.html
资源管理系统Apache Mesos
http://dongxicheng.org/apache-mesos/meso-architecture/

20170927 17:59

当前了解到的分布式文件系统有:NFS、HDFS(hadoop子项目)、MFS(moosefs)、Ceph
20170927 16:45——17:37

2.关于容器的管理工具Mesos与Kubernetes

备注:这里的新术语新技术由搜索mesos而触发关联发现
新技术之术语释义
Swarm是一个基于Docker的原生集群工具,Swarm使用的是标准Docker API。
Fleet是一个来自CoreOS的集群管理工具,自诩为低级别的集群引擎。也就意味着,它可支持从基础层到高层解决方案如Kubernetes。
Kubernetes是一个由google推出的容器管理工具,基于他们上个世纪基于容器产品化管理的经验,它的几个概念比较特殊需要理解。如Pods、Flat Networking Space、Labels 和Services。
Apache Mesos是一个开源集群管理器,是为大型集群入数百数千台主机规模而设计,支持在多租户之间分发工作负载,一个用户的Docker容器运行另外一个用户的Hadoop 任务。
注1(总结比较):
Swarm的优点和缺点都是使用标准的Docker接口,使用简单,容易集成到现有系统,但是更困难支持更复杂的调度,比如以定制接口方式定义的调度。
Fleet是低层次且相当简单的管理指挥层,能作为运行高级别管理工具如Kubernetes 的基础。
Kubernetes 是自成体系的管理工具,有自己的服务发现和复制,需要对现有应用的重新设计,但是能支持失败冗余和扩展系统。
Mesos是低级别 battle-hardened调度器,支持几种容器管理框架如Marathon, Kubernetes, and Swarm,现在Kubernetes 和 Mesos稳定性超过Swarm,在扩展性方面,Mesos已经被证明支持超大规模的系统,比如数百数千台主机,但是,如果你需要小的集群,比如少于一打数量的节点服务器数量,Mesos也许过于复杂了。
注2
Mesos的框架有Marathon和Aurora

  参考资料:
  Swarm、Fleet、Kubernetes和Mesos的比较
  http://www.jdon.com/47645
  巅峰对决之Swarm、Kubernetes、Mesos
  http://dockone.io/article/1138
  Kubernetes和Mesos有啥区别
  https://www.zhihu.com/question/53751176?from=profile_question_card
  使用Mesos和Marathon管理Docker集群
  http://www.jdon.com/artichect/managing-docker-clusters-using-mesos-and-marathon.html
  水土不服 什么Docker 、Mesos还是开源(浏览即可,无实质,额外讲了点微服务技术)
  http://cloud.51cto.com/art/201512/501284.htm

1.Kubernetes 别于 Kerberos
Kubernetes是一个由google推出的容器管理工具;
Kerberos是一个基于共享密钥对称加密的安全网络认证系统,它避免了将密码(包括密码hash)在网上传输,而是将密码作为对称加密的密钥,通过能不能解密来验证用户的身份。

20170927 14:26

LVS:三种负载均衡方式比较
http://soft.chinabyte.com/25/13169025.shtml
LVS集群之十种调度算法及负载均衡——理论
http://blog.csdn.net/scape1989/article/details/21085659
LVS负载均衡的三种模式和八种算法总结
http://blog.csdn.net/xad707348125/article/details/46744161

20170926 17:26

2.认为,负载均衡集群形式的服务,是“一个应用或服务由数个物理服务器提供”即“多个物理服务器向外提供一个相同的应用服务(每个服务器运行的都是相同的一个应用服务)”而LVS集群中对RealServer的描述就是“拥有相同的内容,提供相同的服务”,分布式形式的服务,是“多台或多个集群分别实现/提供不同的功能服务,对外整合表现为是一项服务”。而在实际应用场景中,通常是负载均衡集群形式与分布式形式,这样两种形式的结构并存的。即大体上是分布式的,而具体到整体的某一项子应用服务上的时候,会采用负载均衡集群形式,这样最终保证高可用、高性能、可扩展等特性。17:38

 另外,LVS+keepalived集群中,可以让Director提供多个VIP,这样对应RealServer中的不同内容的Server便可以不必绝对地“拥有相同的内容,提供相同的服务”,而是可以提供不同的服务,具体由相应的VIP来进行区别(Director具备多个VIP以对应集群内的多种应用服务,所有RealServer的VIP不再全部相同,而是只绑定与提供的服务相对应的VIP,即所有的RealServer具备与提供的服务相对应的VIP,当用户访问到Director上的相应服务的VIP后将会被转发到具备相应VIP的RealServer上——简言之,Director具备多个VIP以对应集群内的多种应用服务,集群内RealServer各自绑定与自身提供的应用服务相对应的VIP)。20170927 13:53

1.行业新术语 释义
SOA,面向服务的体系结构(Service-Oriented Architecture,SOA),将面向服务的体系结构定义为一种体系结构风格,以促进将与业务保持一致的企业服务作为设计和构建解决方案的基本单元。

Dubbo,分布式服务框架,DubboAlibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)

  RPCRemote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。

Solr,是一个独立的企业级搜索应用服务器,它对外提供类似于Web-serviceAPI接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。

FQDN(Fully Qualified Domain Name)完全合格域名/全称域名,是指主机名加上全路径,全路径中列出了序列中所有域成员。全域名可以从逻辑上准确地表示出主机在什么地方,也可以说全域名是主机名的一种完全表示形式。

MFS, MooseFS(Moose File Systemmfs)是一种分布式文件系统,它将数据分布在网络中的不同服务器上,支持FUSE(用户空间文件系统Filesystem in Userspace,简称FUSE),客户端挂载后可以作为一个 普通的Unix文件系统使用MooseFS

Ceph是一种为优秀的性能、可靠性和可扩展性而设计的统一的、分布式的存储系统。

GrafanaNo matter where your data is, or what kind of database it lives in, you can bring it together with Grafana. Beautifully.

Pinpoint,开源的 APM (Application Performance Management/应用性能管理)工具,一个分布式事务跟踪系统的平台,思路基于google Dapper,用于基于java的大规模分布式系统,通过跟踪分布式应用之间的调用来提供解决方案,以帮助分析系统的总体结构和内部模块之间如何相互联系。Pinpoint的目标就是为n(n>=1)层架构开发新的跟踪平台,为n层架构的系统提供解决方案。pinpoint3个主要组件组成:日志收集器[Collector]、控制台[Web]、代理[Agent],采用HBase进行存储。CollectorWeb都是WAR,Agent采用一个JAVA应用程序加载。

CDH5,其中CDH,指代Cloudera's Distribution Including Apache Hadoop,“5”则指代的是版本序号。CDH5大数据平台应用的一种。

CloudStack是一个开源的具有高可用性及扩展性的云计算平台,同时是一个开源云计算解决方案。可以加速高伸缩性的公共和私有云(IaaS)的部署、管理、配置。



20170925 10:00——10:06

关于RabbitMQ与Redis
源地址:http://www.cnblogs.com/chinaboard/p/3819533.html

RabbitMQ是实现AMQP(高级消息队列协议)的消息中间件的一种,最初起源于金融系统,用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。
Redis是一个Key-Value的NoSQL数据库,开发维护很活跃,虽然它是一个Key-Value数据库存储系统,但它本身支持MQ功能,所以完全可以当做一个轻量级的队列服务来使用。

具体对比:
可靠消费
Redis:没有相应的机制保证消息的消费,当消费者消费失败的时候,消息体丢失,需要手动处理
RabbitMQ:具有消息消费确认,即使消费者消费失败,也会自动使消息体返回原队列,同时可全程持久化,保证消息体被正确消费

可靠发布
Reids:不提供,需自行实现
RabbitMQ:具有发布确认功能,保证消息被发布到服务器

高可用
Redis:采用主从模式,读写分离,但是故障转移还没有非常完善的官方解决方案
RabbitMQ:集群采用磁盘、内存节点,任意单点故障都不会影响整个队列的操作

持久化
Redis:将整个Redis实例持久化到磁盘
RabbitMQ:队列,消息,都可以选择是否持久化

消费者负载均衡
Redis:不提供,需自行实现
RabbitMQ:根据消费者情况,进行消息的均衡分发

队列监控
Redis:不提供,需自行实现
RabbitMQ:后台可以监控某个队列的所有信息,(内存,磁盘,消费者,生产者,速率等)

流量控制
Redis:不提供,需自行实现
RabbitMQ:服务器过载的情况,对生产者速率会进行限制,保证服务可靠性

关于squid与memcache的初步认识

squid理解为前端缓存,memcache则为后端缓存。(squid是文件缓存, memcache 是数据库缓存)

squid介于web server和客户端之间。
memcache则介于web server和database之间。

20170829 21:37

Linux 打开文件数 too many open files 解决方法
参考资料:http://blog.csdn.net/fdipzone/article/details/34588803
ulimit -a   #查看每个用户最大允许打开文件数量
lsof | wc -l   #查看当前系统打开的文件数量,即时显示的方式
watch "lsof | wc -l"  #查看当前系统打开的文件数量,持续观察的方式
lsof -p pid | wc -l    #查看某一进程的打开文件数量
lsof -p 1234 | wc -l 
ulimit -n 2048   #临时设置open files数值方法
vim /etc/security/limits.conf  #永久设置方法
在最后加入  
* soft nofile 4096  #最前的 * 表示所有用户,可根据需要设置为某一用户
* hard nofile 4096  
改完后注销一下就能生效。

20170824 21:05

Tomcat与Weblogic、webSphere、JBoss
参考资料:tomcat体积小,weblogic非常庞大,为什么公司要用那么大weblogic,却不用tomcat呢?
http://bbs.csdn.net/topics/390247394

TomcatApache基金会提供的Servlet容器,它支持JDBC, ServletJSPJ2EE关键技术,所以用户可以用Tomcat开发基于数据库,ServletJSP页面的Web应用,这是没有问题的。

但是,Tomcat却不是EJB容器,即Tomcat不支持作为J2EE的重要技术之一的EJB。而,众所周知,EJB是分布式应用程序的核心技术。

那么,使用EJB组件开发的Web应用程序就无法在Tomcat下面运行,所以说凡是需要使用EJB来开发的[分布式]应用(例如,银行、电信等大型的分布式应用系统)就不能用Tomcat了。这也就是很多公司不选择Tomcat的原因。

至于支持EJB的应用服务器,Weblogic( Oracle), WebSphereIBM)JBoss( Redhat)都是符合J2EE规范的EJB容器,所以都可以用来开发大型的分布式应用程序。

所以,原则上来说,只要你要开发基于EJB组件的应用,上述三种任选一个都是可以的。唯一的区别是,WeblogicWebSphere都是付费的,JBoss是开源免费的。


20170719 15:36——15:45

apache2.x修改默认端口后报 Starting httpd: (13)Permission denied: make_sock: could not bind to address
http://blog.csdn.net/bjbs_270/article/details/6948074

1.快速解决(不推荐)——禁用selinux

(1)临时禁用,执行命令“setenforce 0”      (2)永久禁用vi /etc/sysconfig/selinux  将SELINUX=enforcing 修改为=>SELINUX=disabled  而后reboot  
2.从根上解决(推荐)——根据自己的需求在selinux中添加需要指定的端口
 (1)安装semanage工具,yum -y install policycoreutils-python (可以通过yum provides */semanage 查找)  
 (2)查看现在的支持http的端口有哪些,semanage port -l|grep http
          为http服务添加新的端口,如81,semanage port -a -t http_port_t -p tcp 81
          查看添加的结果,semanage port -l|grep http

20170628 11:06——12:06;20170630 10:39

关于mysql数据库的各个rpm安装包的认识

 备注:(1)先前在2015年初次yum方式搭建LAMP服务框架之初,只知道mysql安装部分存在mysql、mysql-server以及有备无患最好安装上的mysql-devel。但是也仅仅是基于名称层次的认识,当时好奇各自的用途与区别,但是道行不深,知之甚少,也不知道如何了解到更多。再而后,熟视无睹,若素。(2)今日趁着源码编译安装数据库的一股尽头,忽然探求欲再度萌生,于是特意了解一番,以上述三个关键字搜索找到了相关资料 (3)再而后是新的认识:有别于windows系统的所见即所得,Linux中是很有必要区分数据库服务端与客户端的。在windows中安装mysql-server之后,打开运行之,有图形界面,便于了解服务端的信息(此论述为主管臆测),但是在Linux中只是能将server运行起来,并无界面可视,所以只有安装客户端才能实现对server的登录、查看。——即是说,Linux中那种登录mysql的实现是基于mysql客户端rpm软件包在Linux中的安装(在系统自带yum源中该客户端软件包名为“mysql”,在mysql yum源中该软件包名为“mysql-community-client”,这一点可以参考mysql官方站点的2.5.7 Installing MySQL on Linux from theNative Software Repositories和2.5.1 Installing MySQL on Linux Using the MySQL Yum Repository,其中相关的内容分别为如下:

  For Red Hat and similar distributions, the MySQL distribution is divided into a number of separate packages,mysql for the client tools,mysql-server for the server and associated tools, andmysql-libs for the libraries. The libraries are required if you want to provide connectivity from different languages and environments such as Perl, Python and others. (通过系统自身yum源安装mysql服务时要用到的相关rpm软件包)
 This installs the package for MySQL server (mysql-community-server) and also packages for the components required to run the server, including packages for the client (mysql-community-client), the common error messages and character sets for client and server (mysql-community-common), and the shared client libraries (mysql-community-libs).     (通过mysql的yum源安装mysql服务时要用到的相关rpm软件包)   )。

  参考资料:

  MySQL 5.7 Reference Manual
  https://dev.mysql.com/doc/refman/5.7/en/
  mysql-server,mysql-devel...各有什么不同呢?
  http://bbs.chinaunix.net/thread-411429-1-1.html

   关于mysql服务安装的各个rpm软件包详情如下:

  For Red Hat and similar distributions, the MySQL distribution is divided into a number of separate packages:

  mysql for the client tools, mysql-server for the server and associated tools, and mysql-libs for the libraries. The libraries are required if you want to provide connectivity from different languages and environments such as Perl, Python and others. (似乎5.1.7的及之前的版本该rpm软件包名为mysql-devel,之后的改为mysql-libs),另外,关于通过rpm软件包进行mysql服务的安装时需要用到的相关软件包的详细信息,可以参考mysql官方站点的:2.5.5 Installing MySQL on Linux Using RPM Packages from Oracle,内容如下:

     

  另外,作为与rpm软件包相对应的另一种常见软件包是源码包,这两种软件包关联到两大类软件安装方式(1)rpm软件包之yum或rpm命令的安装方式 (2)源码包之编译安装方式。要说的是,软件包的源码包,源码编译之后会产生与通过rpm方式安装中的相同的各个分块的rpm软件包如mysql的mysql、mysql-server、mysql-devel等,或者会产生与rpm方式安装中各个分块功能一致的文件。——基于一定经验的结论,有待进一步核实。这一点结论,可以参考mysql官方站点的“2.9.1 MySQL Layout for Source Installation”和“2.2 Installing MySQL on Unix/Linux Using Generic Binaries”,(如下表格所示,源码编译安装后会产生mysql的server、client等最基本应用,这与通过rpm方式安装mysql、mysql-server这样的rpm软件包的效果一样)内容如下:

  By default, when you install MySQL after compiling it from source, the installation step installs files under /usr/local/mysql.The component locations under the installation directory are the same as for binary distributions. See Table 2.3, “MySQL Installation Layout for Generic Unix/Linux Binary Package”

 

 

20170628 14:00——18:30

阅读资料:

  Chapter 2 Installing and Upgrading MySQL
  https://dev.mysql.com/doc/refman/5.7/en/installing.html
  2.5 Installing MySQL on Linux
  https://dev.mysql.com/doc/refman/5.7/en/linux-installation.html
  2.5.5 Installing MySQL on Linux Using RPM Packages from Oracle
  https://dev.mysql.com/doc/refman/5.7/en/linux-installation-rpm.html
  2.5.7 Installing MySQL on Linux from the Native Software Repositories
  https://dev.mysql.com/doc/refman/5.7/en/linux-installation-native.html
  2.9 Installing MySQL from Source
  https://dev.mysql.com/doc/refman/5.7/en/source-installation.html
  2.9.2 Installing MySQL Using a Standard Source Distribution
  https://dev.mysql.com/doc/refman/5.7/en/installing-source-distribution.html


20170626 18:12

关于软件依赖性问题的双向查看

 rpm -qR centos-release-scl #查看已经安装的软件所依赖的其他软件,若是未安装的软件包在安装之前想要确认依赖关系,那么添加选项“p”即可。

 rpm -q --whatrequires centos-release-scl-rh #查看已经安装了的软件被哪些软件所依赖

  PS:CSDN存在一个严重的问题,本段落先前是在一个窗口打开的编辑页面中编辑并保存好的,但是因为同时有两个窗口打开了该博文,所以后者在保存之后,就把先前的内容移除或覆盖掉了。——同时打开两个编辑窗口属于误操作,而竟然没有这样的防护机制。

20170626 11:20

Linux Atomic Host ——由Atomic软件源之关键字“Atomic”关联了解到的新技术(关于原子主机的新闻最早见于2015.3.30)

Linux Atomic Host is a lean operating system designed to run Docker containers.

参考资料:

  Getting Started with Red Hat Enterprise Linux Atomic Host
  https://access.redhat.com/articles/rhel-atomic-getting-started
  Building the Next Generation Container OS
  http://www.projectatomic.io/
  Get Started with CentOS Atomic Host
  https://wiki.centos.org/SpecialInterestGroup/Atomic/Download/

Getting Started with Red Hat Enterprise Linux Atomic Host
https://access.redhat.com/articles/rhel-atomic-getting-started
  Red Hat Enterprise Linux Atomic host is a variation of Red Hat Enterprise Linux 7 optimized to run Linux containers in the Docker format. It has been designed to take advantage of the powerful technology available in Red Hat Enterprise Linux 7. Red Hat Enterprise Linux Atomic Host uses SELinux to provide strong safeguards in multi-tenant environments, and provides the ability to perform atomic upgrades and rollbacks, enabling quicker and easier maintenance with less downtime. Red Hat Enterprise Linux Atomic Host uses the same upstream projects delivered via the same RPM packaging as Red Hat Enterprise Linux 7.
Red Hat Enterprise Linux Atomic Host is pre-installed with the following tools to support Linux containers:
   docker - For more information, see Running Containers on Red Hat Enterprise Linux Atomic Host
   Kubernetes - For more information, see Orchestrating Containers on Red Hat Enterprise Linux Atomic Host
Red Hat Enterprise Linux Atomic Host makes use of the following technologies:
  OSTree and rpm-OSTree - These projects provide atomic upgrades and the ability to roll back upgrades.
  systemd - The powerful new init system for Linux systems that enables faster boot times and easier system orchestration.
  SELinux - Enabled by default to provide complete multi-tenant security. You'll also find Integrity Measurement Architecture (IMA), audit and libwrap available from systemd.
IMPORTANT: Red Hat Enterprise Linux Atomic Host is not managed in the same way that other Red Hat Enterprise Linux 7 variants are managed.

Building the Next Generation Container OS
http://www.projectatomic.io/
Use immutable infrastructure to deploy and scale your containerized applications. Project Atomic builds OSes, tools, and containers for cloud native platforms.

Get Started with CentOS Atomic Host
https://wiki.centos.org/SpecialInterestGroup/Atomic/Download/
CentOS Atomic Host is a lean operating system designed to run Docker containers, built from standard CentOS 7 RPMs, and tracking the component versions included in Red Hat Enterprise Linux Atomic Host.

20170623 16:58;20170626 11:10

CentOS中常见的第三方软件源

 #软件源及其所属安装包

 epel.repo-------epel-release-6-8.noarch

 remi.repo-------remi-release-6.8-2.el6.remi.noarch

 CentOS-SCLo-scl.repo-------centos-release-scl-7-3.el6.centos.noarch

 CentOS-SCLo-scl-rh.repo-------centos-release-scl-rh-2-3.el6.centos.noarch

#软件源的基础介绍信息

参考资料:

   RHEL/CentOS/Fedora各种源(EPEL、Remi、RPMForge、RPMFusion)配置
   http://www.cnblogs.com/mawanglin2008/p/3532247.html
   http://blog.csdn.net/ccfxue/article/details/53884017
   RHEL/CentOS 5.x使用yum安装zend-optimizer(atomic软件源)
   http://www.ha97.com/4154.html
   How to Add Atomic Repository to RHEL 6
   http://www.ehowstuff.com/how-to-add-atomic-repository-to-rhel-6/
   Can't add atomic repo to CentOS
   https://serverfault.com/questions/225773/cant-add-atomic-repo-to-centos
   在CentOS或者RHEL上安装REMI仓库
   http://www.linuxidc.com/Linux/2014-11/109240.htm
   如何使用MySQL yum源来安装更新MySQL相关软件包
   http://www.ttlsa.com/mysql/a-quick-guide-to-using-the-mysql-yum-repository/
   安装yum-plugin-priorities (最后的命令有待研究)
   http://blog.csdn.net/purplezzh/article/details/6687513
   在centos中yum-priorities这个是什么文件?
   https://zhidao.baidu.com/question/2137711566019083988.html

EPEL源
EPEL(epel-release),即Extra Packages for Enterprise Linux,是由 Fedora 社区创建维护,为 RHEL 及衍生发行版如 CentOS、Scientific Linux 等提供高质量软件包的项目。EPEL中含有大量的软件,对官方标准源是一个很好的补充。
“EPEL (Extra Packages for Enterprise Linux  ) is a Fedora Special Interest Group that creates, maintains, and manages a high quality set of additional packages for Enterprise Linux, including, but not limited to, Red Hat Enterprise Linux (RHEL), CentOS and Scientific Linux (SL).”

Remi源
Remi源(remi-release)大家或许很少听说,但强烈推荐remi源,尤其对于不想编译最新版的linux使用者,因为Remi源中的软件几乎都是最新稳定版。或许您会怀疑稳定不?放心吧,这些都是Linux骨灰级的玩家编译好放进源里的,他们对于系统环境和软件编译参数的熟悉程度毋庸置疑。
REMI 仓库提供了CentOS和RHEL的核心包的更新版本,尤其是最新的PHP/MySQL系列(LCTT 译注:当你需要一个更新包,而 CentOS/RHEL 没有及时提供更新时, REMI 仓库可以帮助你)。
注意:(1)安装REMI仓库要记住的一件事是不要在启用了REMI仓库时运行yum update。因为REMI仓库的包名与RHEL/CentOS中的相同,运行yum update可能会触发意外的更新。一个好办法是禁用REMI仓库,在你需要安装RMEI仓库中独有的包时再启用。(2)安装REMI仓库之前,你首先需要启用EPEL仓库,因为REMI中的一些包依赖于EPEL。

RPMForge源
RPMForge(rpmforge-release)是CentOS系统下的软件仓库,拥有4000多种的软件包,被CentOS社区认为是最安全也是最稳定的一个软件仓库。

RPMFusion源
rpmfusion(rpmfusion-free-release、rpmfusion-nonfree-release)如果您现在正在使用Fedora 15,对RPMFusion一定不陌生吧,各种音频软件如MPlayer在标准源中是没有的,一般先安装RPMFusion源,之后就可以放便地yum install各种需要的软件啦。
CentOS官方说RPMFusion软件库里面的软件稳定性不如rpmforge。认为这是有道理的,因为相同的软件,rpmfusion中的软件版本一般会比rpmforge中的版本要新。(经过vlc编译安装之前依赖软件和库的安装实践发现相同的软件在rpmfusion中要比rpmforge中的版本高,如ffmpeg-devel)
注意:在安装RPMFusion源之前需要先安装 epel-release

Atomic软件源
Atomic,(atomic-release),暂无相关概况介绍。只是从资料介绍中了解到,应用于zend-optimizer的yum方式安装需要借助该软件源。

MySQL软件源
MySQL软件源或MySQL yum库(mysql-community-release)提供了一个简单的和方便的方法来安装和更新MySQL相关的软件包到最新版本。

avrc6-tejas-barot-linux.x86_64

Repository to Install VLC Player on RHEL/CentOS 6.x


关于yum-plugin-priorities
  安装CentOS yum源优先级插件yum-priorities(软件包为yum-plugin-priorities),用于设定各个软件源的优先级别,比如你在centos下有centos,epel,rpmfusion三个yum源。三个yum源中可能含有相同的软件,补丁之类的东西。yum管理器为了分辨更新系统或者安装软件的时候用那个yum源的软件所以才有这么个东西。
  如果说,设置centos官方的yum源优先级最高,epelyum源第二,rpmfusion第三。(用1到99来表示,1最高)那在安装程序的时候,先寻找centos的yum源,如果源里面有要的程序,那就停止寻找,直接安装找到的,如果没有找到,就依次寻找epel和rpmfusion的源。
  如果说三个yum源都含有同一个软件,那就安装优先级最高的yum源的。这种情况下,存在一种情况,即是,即使优先级低的软件源与高优先级的软件源有相同的软件,且是较新版本的,那因为优先级的存在,软件安装时会采用高优先级软件源中的低版本软件包进行安装,而不会安装低优先级软件源中的较高版本的软件包。
  关于软件包yum-plugin-priorities安装之后yum-priorities的使用:(1)软件包安装之后yum-priorities会存在于/etc/yum/pluginconf.d/下,保证其中enabled=1即为启用状态 (2)之后的操作就是编辑各个软件源的库配置文件,在启用着的软件源的名称节点下添加字段“priority=N”并保存退出即可(需要注意,这只是设定了优先级,若软件源本身是被禁用的,那级别再高也无用,即若要该软件源在特定优先级中生效,需要确保自身是启用状态(即软件源中不存在enabled=0,或者是存在enabled=1))。
  其中N=1~99,默认的权限为99,N越小权限越高。官方建议出于安全考虑应将CentOS官方源设为最高优先:
    [base], [addons], [updates], [extras] ... priority=1  
    [centosplus] priority=1 (same priority as base and updates) but should be left disabled  
    [contrib] ... priority=2  
    Third Party Repos ... priority=N  (where N is > 10 and based on your preference) 


20170623 15:00——16:28

关于yum源之优先级及其设定
参考资料:
 在centos中yum-priorities这个是什么文件? (介绍说明)
 https://zhidao.baidu.com/question/2137711566019083988.html
 yum更新源优先级设置(安装与配置)
 http://blog.sina.com.cn/s/blog_13b5be5f30102vdnn.html
 CentOS安装Yum源优先级插件Yum Priorities(安装和配置)
 http://www.linuxidc.com/Linux/2016-08/133865.htm
 安装yum-plugin-priorities (最后的命令很神奇)
 http://blog.csdn.net/purplezzh/article/details/6687513
  yum源优先级的一个文件。是yum-plugin-priroites这个插件的一个文件。用来给yum源分优先级的。
  比如你在centos下有centos,epel,rpmfusion三个yum源。三个yum源中可能含有相同的软件,补丁之类的东西。yum管理器为了分辨更新系统或者安装软件的时候用那个yum源的软件所以才有这么个东西。(实现方法就是在原记录下面(参照其中“enable”等的写法)添加“priority=1”这样的级别)
   如果说,设置centos官方的yum源优先级最高,epelyum源第二,rpmfusion第三。(用1到99来表示,1最高)那在安装程序的时候,先寻找centos的yum源,如果源里面有要的程序,那就停止寻找,直接安装找到的,如果没有找到,就依次寻找epel和rpmfusion的源。如果说三个yum源都含有同一个软件,那就安装优先级最高的yum源的。

  推荐的设置为:
  [base], [addons], [updates], [extras] … priority=1
  [centosplus],[contrib] … priority=2
  Third Party Repos such as rpmforge … priority=N   (where N is > 10 and based on your preference)
  数字越大,优先级越低

20170621 10:16——10:51

关于rpm -qa 与rpm -qa |grep 两种查看已安装软件方式的区别

参考资料:rpm -qa 和 rpm -qa | grep 什么区别? 

                 http://bbs.chinaunix.net/thread-4163688-1-1.html

(1)rpm -qa 后面要跟上包的名字才能搜索到(包名指代的是不带有版本号、OS版本标志、后缀名的剩余的完整包名)
    比如,rpm -qa yum-metadata-parser-1.1.2-16搜不到是因为包名后加了版本号
    比如,rpm -qa http 搜不到,是因为包的名字叫做 httpd
(2)rpm -qa | grep 后面要跟上包名中的相关字符串。是把搜索到的全部包的名字交给 grep 去过滤,只要包含那个字符串就会被显示出来(这里的包名指代的是不带有后缀名(包括后缀名前面的“.”)的其他任何有效字符)
    总言之,rpm -qa命令查找已安装软件包信息时使用的参数只能是确切的完整软件包名rpm -qa | grep命令则使用的不一定是完整包名(只要是实际包名中的一部分即可,不区分是开头的字符串还是中间的字符串,即不计较字符串所在包名中位置),(或简言之,qa要匹配包的名字,grep 匹配关键字就可以了),另外,二者均不能使用通配符进行模糊查找如上所述结论见下图示:

   

   

   

    

20170619 16:05

关于Linux|CentOS系统中两个时间选项的设定

 1.date的设定,记忆口诀:月日时分年

 2.crond计划任务的设定,记忆口诀:分时日月周


20170616 17:17——17:47

关于虚拟主机中的LInux联网失败的处理

 备注:虚拟机中的Linux是采用的网络连接模式是“桥接模式(B):直接连接物理网络”;重置,意指将网路设备恢复出厂,重新配置

 在重置了路由器之后,发现Windows的虚拟机中的Linux无法上网了,主要表现就是无法ping通路由器即网关IP。这之后尝试了如下操作:

 1.重启网络服务:service network   restart

 2.重启Linux网卡:ifconfig eth0 down;ifconfig eth0 up

 3.重启Linux系统:shutdown -r now

 但是均未奏效,于是尝试了将虚拟机所在寄宿主机windows中的网卡VMware Virtual Ethernet Adapter for VMnet1、VMware Virtual Ethernet Adapter for VMnet8 和寄宿主机的网卡“iDRAC Virtual NIC USB Device”分别进行了重启(三者先后单独重启的过程中并未发现有效,直到全部重启一遍才发现ping通了网关IP),发现终于奏效。——即是说,针对将虚拟机寄宿的主机所联网的路由器重置之后,而虚拟机系统无法联网(无法ping测通网关IP)的情况,若重启虚拟机系统的网卡和网络服务无效,则问题的关键处理很可能在于需要重启VMware的虚拟网卡和寄宿主机的网卡!


 此外,关于VMware的虚拟网卡VMnet1、VMnet8,是有相关理论基础的,如下:

  参考资料:网络原理,以及对VMware Workstation虚拟网络VMnet0、VMnet1、VMnet8的图解
                     http://blog.csdn.net/adultf/article/details/7290999

                    虚拟机里的vmnet1 和vmnet8
                    http://blog.sina.com.cn/s/blog_5f283b430100joyt.html
    vmnet1是hostonly的接口,而Vmnet8是就是我们要使用的NAT的网络接口。
    HostOnly,在某些特殊的网络调试环境中,要求将真实环境和虚拟环境隔离开,这时你就可采用Host-only模式。在Host-only模式中,所有的虚拟系统是可以相互通信的,但虚拟系统和真实的网络是被隔离开的。
    NAT,在NAT网络中,会使用到VMnet8虚拟交换机,Host上的VMware Network Adapter VMnet8虚拟网卡被连接到VMnet8交换机上,来与VPC(Virtual Personal Computer)进行通信,但是VMware Network Adapter VMnet8虚拟网卡仅仅是用于和VMnet8虚拟交换机网段通信用的,它并不为VMnet8网段提供路由功能,处于虚拟NAT网络下的VPC是使用虚拟的NAT服务器连接的Internet的。


20170615 10:11

关于Linux系统中服务安装配置正常但运行异常的两点常用排查

 selinux、iptables

  selinu,查看该功能状态的命令是"getenforce",  selinux的临时禁用方式是执行命令“setenforce 0”,开启的方式是执行命令“setenforce 1”;永久关闭方式是编辑配置文件/etc/sysconfig/selinux,将其中的SELINUX参数值修改为“disabled”,开启则是将该参数值修改为“enforcing”

  iptables,查看防火墙状态的命令是service iptables status ,关闭的命令是service iptables stop,开启命令是service iptables start

 备注1:针对上两项功能限制进行排查的方式,就是将他们临时关闭来发现问题所在。

 备注2:selinux、iptables两项功能是Linux系统中服务安装配置正常但运行异常的两点常用排查。当功能没有如约生效时,可以尝试暂时将这两项功能关闭来排查制约因素的所在,一般来说,配置正常而未生效的话,问题一般就在于iptables或者selinux上面了。举例来说,如ssh的由公私密钥方式实现两台主机免密登录访问时,准备工作正确执行完毕(1.生成密钥对儿(生成过程中不填写密码),2.将公钥信息存储到目标主机的对等目录下)后,若发现无法实现免密访问,那么很可能是因为selinux所限,将selinux临时禁用掉将会发现问题解除。


20170614 15:53

关于Linux|CentOS中环境变量的设置方式

参考资料:

       Linux 下三种方式设置环境变量
       http://www.linuxidc.com/Linux/2015-01/111459.htm
       Linux操作系统下三种配置环境变量的方法
       http://www.cnblogs.com/lidabo/p/4344184.html
       Linux系统下修改环境变量PATH路径的三种方法(含有source命令的进一步说明)
       http://www.jb51.net/LINUXjishu/150167.html

Linux下环境变量设置的三种方法:
  如想将一个路径加入到$PATH中,可以像下面这样做:
 1、控制台中设置——临时生效,不赞成这种方式,因为他只对当前的shell 起作用,换一个shell设置就无效了:
 $PATH="$PATH":/NEW_PATH  (关闭shell Path会还原为原来的path)

 2、修改 /etc/profile 文件——系统级别永久生效,如果你的计算机仅仅作为开发使用时推存使用这种方法,因为所有用户的shell都有权使用这个环境变量,可能会给系统带来 安全性问题。这里是针对所有的用户的,所有的shell在/etc/profile的最下面添加:  export  PATH="$PATH:/NEW_PATH" #需要注意的是配置文件修改保存完成后,需要执行“source /etc/profile”使之立即生效!
如常见的java环境的设定:
export JAVA_HOME=/usr/java/jdk1.8.0_121 #这里对应适当的版本号
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin

 3、修改~/.bash_profile文件——用户级别永久生效,这种方法更为安全,它可以把使用这些环境变量的权限控制到用户级别,这里是针对某一特定的用户,如果你需要给某个用户权限使用这些环境变量,你只需要修改其个人用户主目录下的 .bashrc文件就可以了。
在下面添加:
export  PATH="$PATH:/NEW_PATH"


20170613 11:20

关于Linux系统中执行常见主机硬件配置的查询命令

   参考资料:Linux 查看系统硬件信息(实例详解)
                       http://www.cnblogs.com/ggjucheng/archive/2013/01/14/2859613.html

 内存:概要查看内存情况——free -m (这里的单位是MB,-b,-k,-m,-g show output in bytes, KB, MB, or GB)

             查看内存详细使用—— cat /proc/meminfo

             查看内存硬件信息——dmidecode -t memory

 CPU:(1)cat /proc/cpuinfo ,还可以有针对性的筛选查看信息,如:cat /proc/cpuinfo |grep "vendor_id"  (2) lscpu

 主板:dmidecode |grep -A16 "System Information$"

 硬盘:df  -h

             查看硬盘和分区分布——lsblk

             查看硬盘和分区的详细信息——fdisk -l

 网卡:ifconfig  -a

             查看系统的所有网络接口——ifconfig -a 或 ip link show
             查看某个网络接口的详细信息,例如eth0的详细参数和指标——ethtool eth0

查看bios信息:dmidecode -t bios     


关于根目录的挂载点是/dev/mapper/XYZ_root

为什么我的根目录挂载点是/dev/mapper/centos-root
https://zhidao.baidu.com/question/489514382949609572.html
因为你用了LVM逻辑卷管理,根文件系统建立在卷组(VG)centos上的逻辑卷(LV)上,逻辑卷名是root而不是直接建在硬盘分区上
/dev/mapper/vg_test-lv_root 占用到达100%的解决方法
http://blog.csdn.net/luoxiaojuan2/article/details/49929393
1、查看这个目录
du -sh ~/.local/share/Trash
或者root/.cache/drag_and_drop
看看是否是回收站满了
2、查看/tmp目录和/var目录是否有大文件
3、看看这个目录加下面的文件是否很大
/var/lib/mlocate/
删除mlocate.db文件
修改/etc/updatedb.conf
在PRUNEPATHS 参数后面增加不需要进行locate的目录,修改完成后执行
执行这个命令: updatedb
mlocate.db 会明显减少。

20170612

记录与主机名设定相关的两个配置文件的理论基础

 简要: /etc/hosts与 /etc/sysconfig/network,其实在安装Linux系统的过程中修改的是/etc/sysconfig/network文件。前者 /etc/hosts,提供本机本地的域名解析的功能。

20170609 16:00——16:25——16:34

关于环境变量$releasever、$basearch的一点新发现

参考资料:

yum中$releasever、 $basearch等变量含义
http://blog.csdn.net/taiyang1987912/article/details/46890997
yum的$releasever真是太反动了
http://julyclyde.org/?p=275

在 /etc/yum.repos.d/ 目录下的软件库定义文件中,常常会在 baseurl 的路径中提到 $releasever 这个变量,表示当前发行版的大版本号,这个变量是在yum.conf 文件里 distroverpkg 选项定义的。distroverpkg 的值,并不是明文,而是“redhat-release”。不知道大家看到这个会有什么想法,反正我是首先想到了 /etc/redhat-release 文件,但我错了。实际上指的是 redhat-release 这个RPM包。所谓“distroverpkg=redhat-release”的意思,其实是将 $releasever 设置为 redhat-release 这个RPM包的版本号。

备注:(1)但是,很多时候,$releasever似乎并不能正确读取到当前发行版的版本号,所以很多时候需要手动的将/etc/yum.repos.d/ 目录下的软件库定义文件中的该变量全数替换为与当前发行版本号一致的具体数值。这里所说的版本库定义文件,(基于实践所知,至少在将yum工具套件(yum工具和yum源)替换为CentOS版本的ReHL系统中)目前主要有CentOS-Base.repo、epel.repo、pgdg-93-redhat.repo 这些库文件都需要进行如上操作,在线软件源才能正确使用,否则报错“$releasever”变量无法识别。(2)在将yum工具套件(yum工具和yum源)替换为CentOS版本的ReHL系统中,/etc/yum.conf文件中,distroverpkg的参数值是centos-release,这或许就是shell全局环境变量的魅力,联动机制,检测到某处的变动而后体现到这里(但是,并没有卸载redhat-release、安装centos-release)。——这一点,有待深入。


20170519 17:33; 20170909 10:05(夯实基础,检验+完善)

据说如下命令可以找到Linux系统中所有的具有特殊权限的文件

find -perm +6000 -type f -exec ls -ld {} \ ; > setuid.txt &  #参考资料的原命令——至少错在没有指定查找路径

find / -perm /4000 -type f -exec ls -ld {} \ ; > setuid.txt &  #1.补充查找路径“/”,2.改用“/mode”模式并指定查找suid权限的系统程序文件

find / -path /proc -prune -perm /4000 -type f -exec ls -ld {} \; > setuid.txt &  #在上条命令的基础上,略去对/proc/目录的搜索,完善了搜索机制

备注:如上内容参考于《防线企业Linux安全运维理念和实战》P132.


20161213

linux操作系统管理常用命令之进一步记录总结:

more /etc/ppp/options.pptpd |grep -v ^#  #该命令语句只查看文件中有效信息

cp bin/{xtrabackup,innobackupex} /usr/bin/ #1)复制目录下若干指定文件到别处 (2)除了在profile设定全局环境变量外,第二种全局环境变量的设定方法

cp -rf 复制并强制覆盖文件

  -f, –force
  if an existing destination file cannot be opened, remove it and try again

  如果要覆盖时没有提示,是使用–reply=yes

20161209 15:09——15:27

linux[CentOS]忘记root密码的解决方法:

1.[New][Easy]

 参考:http://www.2cto.com/os/201411/348545.html

     http://blog.csdn.net/linruonan90/article/details/26883699

 (1)重启服务器,在读秒的时候按任意键,就会出现引导开机界面,在此界面中按下键盘中的‘e’,从而进入grub模式

 (2)在grub界面,将光标移动到kernel那一行,然后再一次按‘e’,进入kernel该行的编辑界面

 (3)在kernel编辑界面,按一下空格键然后在后面输入single(实践中是按“End”键跳转到行尾然后输入single),同时按下回车键enter退出kernel编辑界面

 (4)退出kernel界面后会回到grub模式界面,在此界面再次将光标移动到kernel那一行,然后按下‘b’来启动系统

 (5)系统启动后,这个时候系统就会启来到单用户模式,不需要输入任何密码就可以直接进入系统,直接输入passwd回车就是修改的root用户的口令。修改完毕,重启服务器即进入正常模式。

2.[Old]

 1.在grub选项菜单'Debian GNU/Linux,...(recovery mode)',按e进入编辑模式
 2.编辑kernel那行最后面的 ro single 改成 rw single init=/bin/bash,按b执行重启

20160606  15:30——

Linux系统的其他附属配置

1./etc/motdmessage of the day的缩写,意思是当天的提示信息,通常在用户成功登录到Linux Shell(非交互登录)时出现,显示登录提示信息

2./etc/issue 文件设置,在tty1-tty6没有登录的情况下显示登录前提示信


20161012 14:41——15:39

关于Linux编程之vim使用技巧

  模式切换(命令模式、插入模式、编辑模式)

  a   在光标后插入;A 在光标所在行的行尾插入

  i   在光标所在位置插入(相比a就是在光标前插入);I 在光标所在行的行首插入

  o/O 在光标所在位置的下一行/上一行插入

  Esc 进入命令模式

  :   进入命令行/编辑模式

  备注:编辑模式下常用的命令有:

  参考资料:强大的vim配置文件
  http://www.cnblogs.com/ma6174/archive/2011/12/10/2283393.html

  set hlsearch——高亮显示搜索中的关键字(注意“hlsearch”之间没有空格)

  nohl——去掉高亮显示(注意“nohl”之间没有空格)

  set nu——为文件内容每行前缀行号

  set nonu——去掉文件内容的行号

  光标移动

  h 光标向左移动一格

  l 光标向右移动一格

  j 光标向下移动一格

  k 光标向上移动一格

  ^ 移动光标到行首

  $ 移动光标到行位

  G 移动光标到文件尾(Ubuntu或许是“g”)(文件最后一行)

  gg 移动光标到文件头(文件第一行)

  w 移动光标到下一个单词

  b 移动光标到前一个单词

  Ctrl+f 向前翻动一页(朝文件尾)

  Ctrl+b 向后翻动一页(朝文件头)

  yyp/YP 将光标所在行复制并粘贴到下/上一行

  u  撤销一次操作

  Ctrl+R 重做被撤销的操作(“Ctrl+r”也可以)

  查找替换

  “/character” 向前(文件结尾)查找;“?character”向后(文件开头)查找

   “n”,继续上一个命令的查找

  “:[range]s/pattern/string/[c,e,g,i]”   #常用的全文查找替换为“:1,$s/$releasever/6/g

   备注

    [range] “1,$”从第一行到最后一行等效于全文标志“%”

    [c、e、g、i]  c,每次替换前询问;e,不显示错误信息;g,替换一行中的所有匹配项(常用);i,不区分大小写

  “:%s/o/0/gi”可以将文件中全部的字母o替换为数字0.

   

进阶参考:

   linuxvim的使用快捷键之删除、复制、粘贴

   http://www.2cto.com/os/201412/365724.html

     x 小写的x表示向后删除一个字符,也就是删除光标所在字符

    nx n表示数字,表示向后删除每个字符,例如:10x表示删除包括光标在内的后面10个字符

    X 大写的X表示删除光标前的一个字符,不包括光标所在字符

    nX n表示数字,表示向前删除每个字符,例如:10X表示删除光标前的10个字符,不包括光标所在字符

    dd 删除光标所在的行,其实也是剪切

    ndd n表示数字,删除光标所在的向下n行

    d1G 删除光标所在行到第一行数据

    dG 删除光标所在行到最后一行数据

    d0 删除光标所在到该行第一个字符

    d$ 删除光标所在到该行最后一个字符

    yy 复制光标所在的行

    nyy n表示数字,复制光标所在的向下n行

    y1G 复制光标所在行到第一行数据

    yG 复制光标所在行到最后一行数据

    y0 复制光标所在到该行第一个字符

    y$ 复制光标所在到该行最后一个字符

    p 小p表示将已复制的数据粘贴在光标的下一行

    P 大P表示将已复制的数据粘贴在光标的上一行

    J 将光标所在的行与下一行的数据合并为一行

    u 小u表示撤销上一步操作(特别重要,类似于windows里面的word里面的crtl+y)

    ctrl+r 与u相反,表示重做前一步操作(特别重要,类似于windows里面的word里面的crtl+y)

    . 点,表示重复前一个操作,例:想多次复制,一直按这个点就行了

    注:以上删除、复制和粘贴均是在非编辑模式下的操作

 

vim中如何复制当前文件内容粘贴到另外一个文件的命令

 http://blog.csdn.net/lcj_cjfykx/article/details/18805703

  vim里复制一行用yy,复制n行用nyy,但是这都是在同一文件内拷贝粘贴,那该如何在不同的文件内复制粘贴呢?其实也很简单,只需要在yy后面添加一个"+"号即可,比如复制一行就敲下"yy+",同理,复制N行就敲下"nyy+".

  其实这里是调用了vim的寄存器(好像是这样的),VIM里面的寄存器可以用来保存拷贝的文本、记录的宏、设置的书签等等.你只要在敲下':reg',就可以看到最近保存的记录,每条记录都类似于' "1   #define  COMMON_PLAY 2^J ',你只要敲下'"1p',就可以将这一行复制到当前文件中了.

 更新下:更快捷的复制粘贴内容可以用下面的命令:

打开一个文件file_one,复制n+1行用'"ayn+'(不包含单引号,下面同),然后敲命令转到文件file_two,':ex file_two',然后敲命令'"ap'就搞定了

如果复制多行,比如复制100,1000行的话,你可能怕出错,可以这样做

打开文件file_one,做标记'mk',然后移动到要复制的内容的最后一行,敲命令'  "ap'k  ',然后敲命令':ex file_two',然后敲命令'"ap' 到此搞定,效率绝对比用鼠标复制快得多,不信试试看.

 vim虽然学习曲线很陡,但是绝对是文本编辑利器,不管你是win用户,还是linux用户,只要你写程序,用上vim绝对是腰不酸,腿不痛,节省宝贵的时间,把妹,睡觉.(^-^).


原创粉丝点击