Shell常用命令小结
1、ls:这是linux里最常用的命令,像数学里的1一样,简单但很重要。类似于dos里的dir命令,该命令的功能是列出目录下的文件或子目录。 -a:显示所有文件和目录,包括以.开头的隐藏文件 -l:以长格式的形式显示 例如: kelvin@kelvin-laptop:~$ ls examples.desktop 公共的 模板 视频 图片 文档 下载 音乐 桌面 kelvin@kelvin-laptop:~$ ls -a . .gconfd .pulse-cookie .. .gksu.lock .recently-used.xbel .bash_history .gnash .sudo_as_admin_successful .bash_logout .gnome2 .themes .bashrc .gnome2_private .thumbnails .bogofilter .gstr ...
插入法排序
何谓算法?算法就是计算机解决问题的方法和步骤。之所以强调计算机三个字,是因为计算机处理问题的方式和我们人类解决问题的方式有所不同。比如,在电视剧《宫》里看到一个智力题:把一头大象放进骄子里需要哪几个步骤?答案是:第一步,掀开轿帘;第二步,把大象放进去;第三步,放下轿帘。当然,可行性我们暂时不去考虑。然而,对于计算机来说,它没法去掀开轿帘,或者把大象放进轿子里。它只能通过计算机系统特有的指令去处理数据,以此来解决问题。 知道了什么是算法,那么如何去描述问题和算法呢? 以排序问题为例,描述一个问题可以用以下的方式: 输入:n个整数,存放于一个数组a之中。 输出:这n个数在数组a之中按从小到大的顺序存放。 给出了一个问题的输入和要求的输出,这个问题就确定了。描述一种算法,可以用伪代码或者是计算机语言。 对于排序问题,有多种算法。下面谈谈Insertion sort——插入法排序: 插入法排序的大概思想和摸扑克牌类似:当然,我们要求只有一个人摸牌,初始的数组就是放在桌上的一堆牌,而拿到手上的牌是排好序的。当我们摸起一张牌时,会按大小插入到已排好序的手牌之中。下面是基于linux系统,用C语言对 ...
Kobject浅析
面向对象的思想的确在应用软件的开发中颇具优势,它让一个个纯逻辑的函数和数据变成了一个个有生命的个体。鉴于性能的考虑,系统软件的实现(例如linux kernel)并没有采用面向对象的语言(如C++、Java)。但这丝毫没有影响到用小c找对象。 简单来说,一个对象包含数据以及对这些数据的操作。如果把银行比作一个对象的话,银行里的RMB就是数据、而银行的工作人员就相当于对象中方法(即操作数据的结构)。如果,我们想打劫银行的话,我们只需要拿着枪指着工作人员说,“亲,给我拿500万出来”。当然,如果你是一个比较牛逼的劫匪你可能要1000万,或者更多。这没有关系,因为无论你要多少钱,你都不必亲自动手去取,工作人员会帮你办好这一切。当你拎着一袋子钱溜走的时候,你可能会想说,“自从有了面向对象,腰不酸了、腿不疼了,打劫也更有效率了”。 这个例子只是想说明面向对象的一个显而易见的优点——给劫匪,哦不,给用户提供了可直接使用的接口。当然,面向对象的优点可不只这一点。 kobject是Linux设备驱动模型的核心部分,它的作用是简单点说就是嵌入到设备和驱动相关的结构体之中。既可以将这些设备和驱动组织成树形 ...
Kubernetes复习笔记
Kubernetes要解决什么问题?手动部署容器难以维护,使用容器编排技术可以解决如下问题: 容器崩溃的时候可以自动部署新的容器来代替 可以自动增加或者减少容器的数量来满足高可用和自动伸缩的需求 可以使用负载均衡来将流量分配到不同的容器中 不依赖于云服务提供商的通用配置 Kubernetes核心概念及架构Kubernetes架构图 Work node架构图 Master node架构图 Pod: kubernetes管理的主要对象,可以由一个或者共享资源的一组容器组成kubelet: 管理worker node和master node之间的通信kube-proxy: 运行在work node上,用于管理Node和Pod的网络通信API Server: 提供API服务Scheduler: 选择worker node运行PodController: 监控Pod数量,控制worker nodeWorker node: 运行Pod的机器或者虚拟机Master node: 运行Control Plane的机器或者虚拟机 Kubernetes核心对象 Pod: Kubernetes管理的最小单 ...
为虚拟机vCPU绑定物理CPU
为了提高缓存命中率,提高虚拟机性能,可以将vCPU绑定到指定的物理CPU去执行。具体设置步骤如下: 在宿主机操作系统启动时将用于虚拟机的CPU独立出来,使其上只运行vCPU线程,QEMU进程和少数的管理进程。设置方法即是在内核启动参数中加入: isolcpus=0,1 例如在grub.cfg下面的配置如下: menuentry 'Fedora (3.13.6-200.fc20.x86_64) 20 (Heisenbug)' --class fedora --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.13.4-200.fc20.x86_64-advanced-5bcef32f-430b-4d74-beaa-4fcfccc438f9' { ...... linux /vmlinuz-3.13.6-200.fc20.x86_64 root=UUID=5bcef32f-430b-4d74-beaa-4fcfccc438f9 ...
bash配置文件的执行顺序
Linux用户在登陆系统之后会启动shell,并按照一定顺序读取shell的配置文件。以bash为例,配置文件的读取顺序如下: /etc/profile 如果是图形界面登陆系统,读取~/.profile,bash配置完毕。 如果是命令行或者ssh登陆系统,读取~/.bash_profile,bash配置完毕。 如果是命令行或者ssh登陆系统,且/.bash_profile不存在,读取/.bash_login,bash配置完毕。 如果是命令行或者ssh登陆系统,且/.bash_profile,/.bash_login不存在,读取~/.profile,bash配置完毕。 图形界面启动后,用户可能会再启动一个shell,该shell的配置文件是~/.bashrc,用户自定义的配置一般会放到这里。
使用mock来编译和管理RPM软件包
buildroot 在打包时用到的spec文件中包含一些tag,这些对大小写不敏感的tag用冒号来定义。BuildRoot就是其中的一个tag。例如,在libvirt的spec文件中BuildRoot的定义如下: BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root BuildRoot设置的目录会被当作临时的根目录,%install部分安装的文件都会被临时安装到这里。之所以引入BuildRoot是为了在打包过程中不影响现在的系统。 RPM宏设定的BuildRoot默认值是~/rpmbuild/BUILDROOT, 可以在spec文件中设置该tag,或者在rpmbuild命令执行时使用- -buildroot选项来指定。 mock的功能 mock不只是将文件安装到Buildroot指定的根目录,而是创建一个打包的沙盒(sandbox),挂载一些必要的文件系统(proc,sys等),将打包过程所用到的软件包(BuildRequires指定)都安装到沙 ...
RPM软件包管理机制之旅
Linux下的man命令十分实用,可以查看Linux命令的手册。但这些手册只适用于忘记命令的选项时查询之用,如果用来学习Linux下类似于Git, RPM这样庞大的工具就有点吃力了,可谓事倍功半。我在学习Git的时候读过一篇文档——gittutorial,使用: 1$man gittutorial 命令可以调出该文档。这篇文档并不涵盖git的方方面面,只是介绍了Git管理项目的常规用法,非常适合初学者快速入门。所以本文试图仿照该文档的写法,并不会详细地介绍RPM包的方方面面,而是介绍RPM包最常用的一些功能,这些功能将会在我们对红帽系列发行版系统的日常管理中非常重要。 软件包管理机制与RPM开源软件可以用Tarball的方式来从源代码安装软件(1),这样的安装方式对普通用户来说很麻烦。比如要升级软件,还需要先更新源代码,再重新编译、安装。Linux采用了RPM和DPKG等软件包管理机制来管理软件,直接给用户提供二进制软件包,并且将整个系统的软件包信息建立成数据库,以便于软件的升级、验证和卸载。RedHat、Fedora、SUSE、CentOS等发行版采用RPM包管理机制,而Debia ...





