
Linux
文章平均质量分 89
为幸福写歌
热爱编程
展开
-
遇到的常用shell脚本
set -e: 如果任何语句的执行结果不是true则应该退出cmd1 ; cmd2 cmd1 和 cmd2都会被执行 cmd1 && cmd2 如果 cmd1 执行成功则执行 cmd2 cmd1 || cmd2 如果 cmd1 执行失败则执行 cmd2 ...原创 2020-03-16 17:47:39 · 419 阅读 · 0 评论 -
CentOS 7 配置iSCSI
iSCSI技术在工作形式上分为服务端(target)与客户端(initiator)。iSCSI服务端即用于存放硬盘存储资源的服务器,它作为前面创建的RAID磁盘阵列的存储端,能够为用户提供可用的存储资。iSCSI客户端则是用户使用的软件,用于访问远程服务端的存储资源。能够完成 iSCSI target/initiator 设定的项目非常多,这里使用的是targetcli项目。iSCSI Targe...原创 2018-06-06 17:55:04 · 13801 阅读 · 0 评论 -
CentOS 7配置网络
一、配置IP地址进入到 目录, 修改ifcfg-em1文件:[root@ccrfox141 ye]# cd /etc/sysconfig/network-scripts[root@ccrfox141 network-scripts]# lsifcfg-em1 ifcfg-em4 ifcfg-p5p2 ifdown-eth ifdown-isdn ifdown-routes ...原创 2018-06-03 21:49:23 · 2308 阅读 · 0 评论 -
Linux中expect自动交互脚本的使用
最近在一台物理机上同时运行64个虚拟机进行测试,但每台虚拟机的操作都是一样的,所以用脚本来操作会方便很多,但唯一的问题就是要自动登录64台虚拟机后再进行操作,利用expect能解决这个问题。expect是用来进行自动化控制和测试的工具,在Ubuntu14的安装方法是:# apt-get install expectexpect常用命令:spawn:spawn命令原创 2018-01-31 22:10:40 · 893 阅读 · 0 评论 -
Ubuntu14配置Bonding多网卡
Installationsudo apt-get install ifenslaveInterface ConfigurationStep 1: Ensure kernel supportBefore Ubuntu can configure your network cards into a NIC bond, you need to ensure that the corr原创 2017-11-27 17:08:34 · 4783 阅读 · 0 评论 -
ubuntu中vi编辑器键盘错乱的问题
Ubuntu安装完成后vi编辑器键盘不能正常使用,使用下面方法解决:编辑文件/etc/vim/vimrc.tiny,将“compatible”改成“nocompatible”非兼容模式;并添加一句:set backspace=2转载 2017-11-27 16:53:21 · 13781 阅读 · 5 评论 -
Ubuntu 14配置网络
一、配置IP地址通过修改文件/etc/network/interfaces可以设置为DHCP或手动设置静态ip,前面auto eth0是指让网卡开机自动挂载:root@ccrfox141:/home/ye/xen-4.6.3# cat /etc/network/interfaces# This file describes the network interfaces availab原创 2017-11-20 10:58:31 · 1118 阅读 · 0 评论 -
在Ubuntu14上为Xen设置桥接网络
Xen安装成功以后,需要对网络进行配置,这里介绍的是使用桥接方式进行网络配置。Ubuntu14配置网桥跟CentOS6稍微有些不同,如果想对CentOS配置网桥请看这里。Bridge(桥)是 Linux 上用来做 TCP/IP 二层协议交换的设备,与现实世界中的交换机功能相似。Bridge 设备实例可以和 Linux 上其他网络设备实例连接,既 attach 一个从设备,类似于在现实世界中的交原创 2017-11-20 15:08:12 · 719 阅读 · 0 评论 -
Ubuntu14安装gcc4.4.7
最近要将项目从CentOS 6移植到Ubuntu 14,配置好环境后编译源代码却总是报报“undefined reference to“错误,本来以为是库路径的问题,折腾半天发现是gcc版本不一样导致出错。在Ubuntu 14中的默认的gcc版本是4.8.4root@ccrfox141:/home/test# gcc -vUsing built-in specs.COLLECT原创 2017-11-20 10:24:32 · 4529 阅读 · 0 评论 -
CentOS 6升级Linux内核
本文参考自:http://elrepo.org/tiki/tiki-index.php1. 导入public keyrpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org2. 安装ELReporpm -Uvh http://www.elrepo.org/elrepo-release-6-8.el6.elrepo.noarch.rpm3....原创 2018-05-30 22:44:38 · 906 阅读 · 0 评论 -
从源代码到可执行文件(编译链接全过程解析)
程序的生命周期从一个高级C语言程序开始,这种形式能够被人读懂,却不能被机器读懂,为了在系统上运行这个程序,该源程序需要被其他程序转化为一系列低级机器语言指令,然后将这些指令按照可执行目标程序的格式打包并以二进制磁盘文件形式存储起来。在Linux系统下,可用以下指令完成源程序到目标程序的转化:gcc -o hello hello.c main.cgcc 编译器驱动程序读取源文件hello.c和mai...转载 2018-07-03 21:49:27 · 4181 阅读 · 0 评论 -
CentOS 6配置Bonding多网卡
1. 关闭和停止NetworkManager服务# service NetworkManager stop# chkconfig NetworkManager off2、加载bonding模块# modprobe --first-time bonding没有提示说明加载成功, 如果出现modprobe: ERROR: could not insert 'bonding':...原创 2018-07-18 21:25:01 · 1746 阅读 · 0 评论 -
多线程pthread_join()和pthread_detach()函数的比较
pthread_join()函数:int pthread_join(pthread_t thread, void **retval);args: pthread_t thread: 被连接线程的线程号 void **retval : 指向一个指向被连接线程的返回码的指针的指针return: 线程连接的状态,0是成功,非0是失败当调用 pthread_join() 时,当前线...原创 2018-07-03 21:24:00 · 2010 阅读 · 1 评论 -
多线程pthread_join()的两种作用
pthread_join()函数原型:int pthread_join(pthread_t thread, void **retval);args: pthread_t thread: 被连接线程的线程号 void **retval : 指向一个指向被连接线程的返回码的指针的指针return: 线程连接的状态,0是成功,非0是失败当调用 pthread_join() 时,当...原创 2018-07-03 21:24:16 · 43058 阅读 · 6 评论 -
fork函数和vfork函数的区别
fork函数:子进程是父进程的一个拷贝,即子进程从父进程得到数据段和堆、栈段的拷贝,这些需要分配新的内存(不是与父进程共享,而是单独分配内存);而对于只读的代码段,通常使用共享内存的方式访问;fork返回后,子进程和父进程都从调用fork函数的下一条语句开始执行;由于子进程与父进程的运行是无关的,所以,父进程可先于子进程运行,子进程也可以先于父进程运行。vfork函数:vfork创建新进程的主要目...转载 2018-07-08 23:27:23 · 700 阅读 · 0 评论 -
进程创建详解与父子进程资源的管理
1. 父子进程执行顺序问题父进程在使用fork函数创建子进程后父进程与子进程互相不关联,以独立身份抢占CPU 资源,具体谁先执行由调度算法决定,用户空间没有办法干预。子进程执行代码的位置是fork/vfork 函数返回的位置。2. 子进程资源申请问题在使用fork函数创建子进程后,子进程重新申请新的物理内存空间,复制父亲进程地址空间所有的信息,子进程复制父亲进程的代码段,数据段,BSS 段,堆,栈...原创 2018-07-08 23:17:25 · 1639 阅读 · 0 评论 -
静态库与动态库的区别
什么是库库是写好的现有的,成熟的,可以复用的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常。本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。库有两种:静态库(.a、.lib)和动态库(.so、.dll)。所谓静态、动态是指链接。回顾一下,将一个程序编译成可执行程序的步骤:静态库之所以成为【静态库】,是因为在链接阶段,会将汇...转载 2018-07-03 21:27:28 · 5336 阅读 · 0 评论 -
Linux常用命令
本文记录的都是我经常遇到的Linux命令,以便以后查阅。一、关机重启命令shutdown -h now 关机poweroff 关机shutdown -r now 重启reboot 重启logout 注销二、vi编辑器比如编辑原创 2017-05-04 15:51:58 · 263 阅读 · 0 评论 -
Linux中的分段机制
为了能将操作系统移植到不同的平台上,操作系统的设计者必须在硬件相关的代码与硬件无关的代码之间划出界限,Linux是把硬件相关的代码全部放在arch(architecture的缩写)目录下,在这个目录下可以找到Linux最新版本支持的所有平台。Linux作为现代通用操作系统,使用了分页机制(X86叫保护模式,arm叫MMU机制)来对用户态与内核态进行隔离,也对进程与进程之间进行隔离。无奈在X原创 2017-11-14 15:31:42 · 1558 阅读 · 0 评论 -
Linux之用户态与内核态
本文转载自:http://www.cnblogs.com/bakari/p/5520860.html一、 Unix/Linux的体系架构如上图所示,从宏观上来看,Linux操作系统的体系架构分为用户态和内核态(或者用户空间和内核)。内核从本质上看是一种软件——控制计算机的硬件资源,并提供上层应用程序运行的环境。用户态即上层应用程序的活动空间,应用程序的执行必须依托于内核提供转载 2017-09-01 22:06:52 · 815 阅读 · 0 评论 -
Linux中fork()函数的使用
进程在执行过程中,可以通过系统调用的方式创建多个新进程。Linux系统提供了两种创建进程的方式:函数fork()用来创建一个新进程,该进程几乎是当前进程的一个完全副本;函数exec()函数用来启动另外的进程以取代当前运行的进程。这里主要介绍如何利用fork()函数创建新的进程以及fork()函数的工作机制。fork在英中有“分叉”的含义,在Linux系统中,这个名字比较形象,因为一个进程在运行原创 2017-08-31 15:57:34 · 502 阅读 · 0 评论 -
Linux中Makefile的使用
本文转载自陈皓的《跟我一起写 Makefile》。在Linux中,一段C语言程序代码要经过编译、汇编、链接得到可执行文件后才能够运行。对于只有几个程序文件的小型程序而已,仅使用gcc就可以方便地将程序代码编译链接成可执行文件。而一些大型的应用程序通常都有几十甚至上百成千个程序文件组成,为了解决大型应用程序开发中的代码维护问题,Linux提供了一种工程管理工具make。makefile 介绍转载 2017-08-30 17:15:22 · 386 阅读 · 0 评论 -
CentOS安装内核源代码
本文参考于CentOS官网的《I need the Kernel Source》。1. 或许你不需要整个内核的源代码如果你只是需要编译一个内核的驱动程序(模块),很可能你并不需要安装整个内核源代码。只需要安装 kernel-devel 这个组件即可(然而,假若你需要完整的源代码目录树,请看第二部分)。运行下面的命令即可安装 kernel-devel 组件:[root@host]原创 2017-08-30 10:29:35 · 6527 阅读 · 0 评论 -
Linux中fstat、stat和lstat的用法与区别
stat系统调用系列包括了fstat、stat和lstat,它们都是用来返回“相关文件状态信息”的,三者的不同之处在于设定源文件的方式不同。struct stat结构体首先隆重介绍的是一个非常重要的”VIP”人物,他是fstat, stat和lstat三者都要用到的一个结构体类型,名字叫做struct stat。可以说,没有这个struct stat的支持,上述三个系统调用将寸步难行。转载 2017-09-07 10:52:01 · 21213 阅读 · 0 评论 -
Linux中目录proc/net/dev详解
在Linux系统中,系统调用是操作系统提供给应用程序使用操作系统服务的重要接口,但同时也正是通过系统调用机制,操作系统屏蔽了用户直接访问系统内核的可能性。幸运的是Linux提供了LKM机制可以使我们在内核空间工作,在LKM机制中一个重要的组成部分就是proc伪文件系统,它为用户提供了动态操作Linux内核信息的接口,是除系统调用之外另一个重要的Linux内核空间与用户空间交换数据的途径。而pr原创 2017-09-05 10:32:59 · 31936 阅读 · 0 评论 -
CentOS7安装配置Samba
转载自:https://www.howtoforge.com/samba-server-installation-and-configuration-on-centos-7First I will explain the methodology to install the samba with the anonymous sharing. To install samba run,转载 2017-08-05 16:57:32 · 373 阅读 · 0 评论 -
Linux内存模型
在linux内核中支持3中内存模型,分别是flat memory model,Discontiguous memory model和sparse memory model。一、和内存模型相关的术语1、page frame在linux操作系统中,物理内存是按照page size来管理的,具体page size是多少是和硬件以及linux系统配置相关的,4k是最经典的设定。因此,对于物理内转载 2017-07-24 22:19:02 · 394 阅读 · 0 评论 -
Linux中的文件描述符
概述文件描述符在形式上是一个非负整数。实际上,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。在程序设计中,一些涉及底层的程序编写往往会围绕着文件描述符展开。但是文件描述符这一概念往往只适用于UNIX、Linux这样的操作系统。习惯上,标准输入(standard input)的文件描述符是 0,标转载 2017-09-11 10:07:53 · 763 阅读 · 0 评论 -
Linux中对文件描述符的操作
fd_set结构体在Linux中,内核利用文件描述符(File Descriptor)即文件句柄,来访问文件。文件描述符在形式上是一个非负整数。实际上,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。打开现存文件或新建文件时,内核会返回一个文件描述符。读写文件也需要使用文件描述符来指定待读写的文件。宏FD_ZERO、FD_SET、FD_CLR、FD_ISSET中“FD”即为原创 2017-09-11 10:48:18 · 1287 阅读 · 0 评论 -
Linux中的Bonding技术
将多块网卡虚拟成为一块网卡,使其具有相同的ip地址,来实现提升主机的网络吞吐量或者是提高可用性等作用,这种技术被称作BondingLinux下支持七种模式的网卡绑定,这里列出常用的两种:模式0:平衡轮训 使用这种模式来进行多网卡绑定时我们可以提高网络的带宽,其流量是从绑定的多块网卡上平均分配的模式1:主动备份 使用这种模式来进行多网卡绑定时我们可以提高网络的稳定性,这种模式不会原创 2017-11-04 17:36:39 · 802 阅读 · 0 评论 -
CentOS 6源码编译安装Xen4.6
因为要修改Xen的源码,所以不得不要源码编译安装Xen,这真是体力活啊。其实编译一个 Xen 内核和编译一个普通 Linux 内核没有什么不同,如果发现编译后的内核启动不了,出现 kernel panic 的情况,多半是内核与机器的硬件没有配置好的原因,和 Xen 没有关系。本文使用的环境是:CentOS 6.5 + linux-3.16.49内核 + xen-4.6.3安装前的配置和安装原创 2017-11-02 21:13:13 · 1885 阅读 · 0 评论 -
Linux中VNC的安装与配置
服务端环境:CentOS 6.9客户端环境:CentOS6.91.服务器安装VNC服务端yum install tigervnc-server2.编辑vnc配置文件编辑/etc/sysconfig/vncservers,添加以下内容:VNCSERVERS="1:root"VNCSERVERARGS[1]="-geometry 800x600 -alwaysshared原创 2017-08-18 17:18:14 · 4964 阅读 · 0 评论 -
LVM逻辑卷管理命令
逻辑卷的概念和理论可以参考另外一篇博客《Linux逻辑卷管理》,这里只介绍逻辑卷管理的命令,以便以后查阅。显示分区信息:[root@localhost /]# fdisk -l显示磁盘使用情况:[root@localhost /]# df -h物理卷(PV):物理硬盘格式化为物理卷(PV):[root@localhost /]# pvcreate /dev/原创 2017-11-10 11:16:06 · 523 阅读 · 0 评论 -
Linux磁盘分区
一、磁盘分区的基本概念硬盘的分区主要分为主分区(primary partion)和扩展分区(extension partion)两种,主分区和扩展分区的数目之和不能大于四个。主分区可以马上被使用但不能再分区,扩展分区必须再进行分区后才能使用,由扩展分区再分下去的是逻辑分区(logical partion),逻辑分区原则上没有数量的限制。二、Linux对分区的管理在windows原创 2017-05-06 15:40:18 · 1080 阅读 · 0 评论 -
Linux中的yum命令与配置
yum( Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。yum 语法原创 2017-11-01 17:12:10 · 466 阅读 · 0 评论 -
Linux编译内核
编译内核不难,按部就班的来一个上午就能搞定(编译内核的过程要花费很多时间)。本文使用的环境是:CentOS 6.9(linux-4.9.39-29.el6.x86_64),要编译的内核是linux-3.16.49准备内核内核可以到Linux内核官网下载,下载完整内核包(后缀是tar.xz)即可,但这要注意内核版本是否适用于你的开发版本,比如我用最新的linux-4.13.10就安装不成原创 2017-10-30 15:22:14 · 533 阅读 · 0 评论 -
Linux逻辑卷管理
因为之前安装系统的时候没考虑使用逻辑卷管理(logical volume management,LVM),现在要用Xen安装多台虚拟机导致分区混乱,所以现在才想到使用逻辑卷管理的好处。本文基本上是参照IBM中国社区的逻辑卷管理这篇文章。逻辑卷管理(LVM)指系统将物理卷管理抽象到更高的层次,常常会形成更简单的管理模式。通过使用 LVM,所有物理磁盘和分区,无论它们的大小和分布方式如原创 2017-08-16 17:38:18 · 878 阅读 · 2 评论 -
Linux的目录结构与文件权限
一、Linux的目录结构在Linux中,所有的文件都是由根目录开始的,然后再一个一个分支下来,有点像树枝状,因此我们也成这种目录配置方式为“目录树”。下面列出了根目录(/)下子目录的功能:root:存放root用户的相关文件home:存放普通用户的相关文件bin:存放常用命令的目录sbin:要有一定权限才能使用的命令etc:存放配置相关的文件mnt:默认挂载原创 2017-05-04 15:34:39 · 688 阅读 · 0 评论