Linux使用
文章平均质量分 95
Linux基础使用
Vincent's Blog
A bug machine made in HUST
展开
-
C语言单元测试框架unit的使用
针对C语言的测试框架相比其他语言要少一些,本文简单介绍一下Cunit框架的基本使用方法,权当备忘吧。Cunit的组织框架如下图所示:将单个测试用例打包到一个suite中,这些suite在Registry中注册。registry中的所有suite/tests可以使用单个函数调用运行,也可以运行选定的套件或测试。下面看一个例子首先我们新建文件,写一个待测试函数,这里以一个字符串转换数字函数为例,...原创 2018-11-12 17:26:30 · 12260 阅读 · 0 评论 -
read和write系统调用以及getchar的实现
输入和输出是由read和write两个系统调用实现的。在C语言程序中,可以通过函数read和write访问这两个系统调用。 这两个函数原型为:int n_read = read(int fd,char *buf,int n);int n_written = write(int fd,char *buf,int n); 这两个函数的第一个参数都是文件描述符,第二个参数是程序中存放读或者写的原创 2016-06-15 11:34:56 · 2240 阅读 · 0 评论 -
【Linux】搭建ftp服务器
1.ftp服务配置文件windows下的ftp程序有IIS、Serv-U等,linux下有wu-ftpd(已被淘汰)、proftpd和vsftp,后两个是主流。主要配置文件:/etc/vsftpd/vsftpd.conf 用户控制列表文件 /etc/vsftpd/ftpusers(用户黑名单,root、bin、daemon、mail等用户就在这个里面) /etc/vsftpd/user_li原创 2016-06-13 17:40:53 · 405 阅读 · 0 评论 -
【Linux】Linux系统各个目录的作用
Linux系统根目录下有很多文件夹,各个文件夹的基本作用如下: 序号 目录 作用 1 /bin 执行文件存放目录,这里面的命令可以被root用户和普通用户使用,如cat、chmod、chown、date、mv、echo、kill等 2 /sbin 也是执行文件存放目录,这里面的指令只能被root用户使用,如mkfs、ifup、shutdown、arp、fdisk、i原创 2016-06-13 11:45:34 · 437 阅读 · 0 评论 -
【Linux】tar指令用法
关于tar的指令相当多,记住几个常用的指令即可:1*.tar.bz2解压缩tar -jxv -f *.tar.bz2 -C 目录 -C 目录如果不加则在当前目录下解压。2.*.tar.gz解压缩tar -zxv -f *.tar.bz2 -C 目录 3.压缩tar -jcv -f filename.tar.bz2 要被压缩的文件或目录名称4.查询tar -jtv -f filen原创 2016-06-12 23:21:12 · 389 阅读 · 0 评论 -
【Linux】SSH实现虚拟机与主机文件互传
虚拟机与主机之间文件互传的方法又很多,下面介绍一下通过SSH实现的虚拟机系统与主机之间的文件互传。 首先在主机上安装SSH Secure Shell,这个软件的下载地址是:http://ccm.net/download/download-1423-ssh-secure-shell-windows,如果打不开,请自行百度解决。 打开软件,点击quick connect 输入Host na原创 2016-06-05 11:59:59 · 7299 阅读 · 0 评论 -
【Linux】引导扇区(boot sector)的结构
Boot sector是硬盘(严格来说是所有可引导的存储介质)上的第一个扇区,大小为512字节,这个扇区对于计算机启动来说至关重要。 这个小小的512字节包含了很多内容,主要分为三个部分,分别是: MBR(master boot record,主引导记录)446字节DPT(disk partition table,磁盘分区表)64字节BRID(boot record ID引导记录标原创 2016-06-07 12:22:19 · 6265 阅读 · 0 评论 -
【Linux】U盘安装Centos6.3遇到的两个重要问题及其解决方法
之前装过无数遍windows系统,对系统分区神马的也算比较了解,以为安装CentOS的过程应该也差不多,但是没想到遇到两个比较重要的问题,百度了一番才恍然大悟,特此记录一下,对初学者应该有多帮助。 第一个问题:boot loader的安装位置(由于安装系统的时候没法截图,只好在网上找相同的图片。) 到了这一步,网上的很多教程都说直接点击下一步就行,但是实际上这个地方很关键,不是所有人原创 2016-06-07 13:14:19 · 2980 阅读 · 0 评论 -
【Linux】启动引导程序--grub及其配置文件
1.硬盘和分区在grub中的表示方法 在Linux当中,磁盘和分区的表示方法为: 设备 设备在Linux中的文件名 IDE硬盘 /dev/hd[a-d] SCSI/SATA/USB硬盘 /dev/sd[a-p]分区表示为sda1,sda2…等等。 但是在GRUB当中,以启动顺序来作为硬盘的编号,第一个找到的硬盘为0好,第二个为1号,以此类推。每块硬盘的第一个主分区为0原创 2016-06-07 20:22:29 · 3415 阅读 · 0 评论 -
【Linux】ssh--linux远程连接
前面一直在用XShell工具连接虚拟机里的centos,这次,我们用XShell连接实体机里的Linux。 在实验室的电脑上安装了centos6.3,我们现在终端上配置一下IP、子网掩码等信息。由于我的笔记本跟实验室电脑连在了同一个交换机上,我们将两台电脑配置到同一网段。1.配置IP,子网掩码 首先,配置centos的IP,在终端命令行输入setup(如果没有安装setup工具,请先搭建本地原创 2016-06-09 14:29:20 · 1028 阅读 · 0 评论 -
【Linux】硬盘格式化--mkfs
硬盘格式化命令: mkdfs -t 文件类型名 设备名() 例如:mkfs -t ext3 /dev/sdb1原创 2016-06-12 11:43:27 · 1349 阅读 · 0 评论 -
【Linux】ACL权限管理
1.ACL权限的作用 ACL是Access Conrol List的缩写,ACL权限的主要作用是为了解决Linux系统当中,owner、group和others的权限不够用的问题。假设有这样一个目录/home/work,它的所有者是root,所属组是sN,所有者和所属组拥有的权限均为rwx,others什么权限也没有。那么如果还有一个用户st需要查看和执行这个目录下的文件,那该怎么设定权限呢?这个原创 2016-06-16 17:37:59 · 396 阅读 · 0 评论 -
【Linux】gdb调试程序基本用法
1.编译加上参数-g首先,要使用gdb调试程序,必须在程序编译的时候加上参数-g 比如: gcc -g cat.c2.开始调试输入gdb +程序名,如 gdb a.out 此时,出现gdb提示符 输入l可以查看代码,一次显示10行,接着按enter显示下10行。 输入start开始进入单步调试,屏幕显示即将运行的那行代码 此时输入n运行这行代码,同时显示下一行要运行的代码原创 2016-06-16 20:49:39 · 469 阅读 · 0 评论 -
【C】变长参数表及printf函数简化版的实现
每一个程序员写的第一个程序大概鼎鼎大名的hello world了,一个简简单单,就那么几行的小程序开启了另一个世界的大门,从此,我们发现了更广阔的世界。而每一个C程序员接触到的第一个函数(除去main函数不算)大概就是printf函数了。这个函数用法很简单灵活,然而里面暗藏玄机,包含了C语言诸多的内容。 不知道大家发现没有,printf函数的参数个数是可变的。下面这三个函数都可以完美运行。原创 2016-06-17 11:55:31 · 1937 阅读 · 1 评论 -
查看系统头文件包含路径
cpp -v命令可以查看头文件包含路径,记录一下。linux下执行结果:Using built-in specs.COLLECT_GCC=cppTarget: x86_64-unknown-linux-gnuConfigured with: ../configure --enable-checking=release --enable-languages=c,c++ --disable-...原创 2018-11-09 10:55:59 · 2314 阅读 · 0 评论 -
进程通信(1)管道
进程之间通信的方式有很多种,主要包括管道命名管道信号消息队列共享内存信号量套接字其中,管道是最早的一种进程间通信机制,主要适用于具有亲缘关系之间的进程间通信,比如,父进程与子进程之间,或者同一个父进程的两个子进程之间。同时,管道是一中半双工的通信,数据只能单向流动,从一段写入,另外一段读出。下面通过几个例子来看一下管道如何使用。1. 函数原型 #include <un...原创 2018-10-31 14:35:42 · 338 阅读 · 0 评论 -
【Linux/C】程序的编译和链接--例子
上一篇文章已经讲过了程序从源文件到可执行文件之间的实现过程,这篇文章讲一个简单的例子。 首先准备三个文件。//main.c文件内容#include<stdio.h>#include "fun.h"int main(){ printf("the answer is %d\n",calc(5,6)); printf("hello,world.\n"); return 0原创 2016-06-23 16:44:53 · 952 阅读 · 0 评论 -
【Linux/C】如何编译和使用库文件
1. 库文件分类库文件可以分为两类,静态库和动态库。 链接静态库的程序特点:1. 程序较大;2.不容易升级;3.容易部署 链接动态库的程序特点:1. 程序较小;2.容易升级;3.不容易部署2. 存档文件(静态库)存档文件(Archive),也就是静态库,就是一系列目标文件的集合(大致相当于windows下的*.LIB文件)。当你提供一个存档文件给链接器的时候,链接器会在存档文件中寻找所需原创 2016-06-21 20:55:50 · 5830 阅读 · 0 评论 -
汇编基础
1. 几个重要的寄存器 寄存器 EIP Instruction Pointer,存储CPU要执行的下一条指令,自动加1,程序员不能修改EIP的值,但是可以被CALL、RET、JUMP、conditional JUMP指令修改 EAX 累加寄存器,通常存储临时变量值或者函数的返回值 EBX 基地址寄存器 EDX 数据寄存器 EBP 堆栈基地址,指向原创 2017-03-29 17:18:00 · 568 阅读 · 0 评论 -
【C】标准输入/输出
看一个简单的程序#include<stdio.h>#include<ctype.h>int main(){ int c; while((c = getchar()) != EOF) putchar(tolower(c)); return 0;}这个程序把输入字符转换成大写输出。 运行结果: 也可以使用<符号实现输入重定向 还可以用>实现原创 2016-06-01 21:17:27 · 354 阅读 · 0 评论 -
【Linux】计算机的启动过程
计算机启动是一个非常复杂的过程,大致可以分为四个步骤。 1.第一阶段:BIOS BIOS是固化到计算机主板上一个ROM芯片上的一段程序,这段程序的主要作用有两个。1.硬件自检Power-On Self-Test 按下电源键后,计算机首先会读取BIOS,然后BIOS检查计算机硬件有没有问题,是否满足运行条件,这个过程叫做“硬件自检”。如果硬件有问题,会报错。如果没有问题,则会在屏幕上显示CPU、原创 2016-06-07 16:36:59 · 717 阅读 · 0 评论 -
【C】程序的编译与链接--简单介绍
程序由源文件编译得到可执行文件看起来好像是很简单的过程,windows的IDE环境下,点一下bulid就可以生成可执行文件,在Linux环境下,gcc编译器也提供了很多选项可以很方便的从源文件生成可执行文件。但是实际上程序的编译和链接是一个比较复杂的过程。大致可以分为四步:1.预处理;2.编译;3.汇编;4.链接。我们以最经典的hello,world程序来下面来分析一下各个步骤的作用分别是什么。//原创 2016-06-23 16:14:13 · 509 阅读 · 0 评论 -
DNS基础知识
1.DNS是什么 DNS是英文“Domain Name System”的缩写,直译过来就是“域名系统”。其作用简单来说就是将域名翻译为IP地址。这个翻译的过程术语叫“域名解析/DNS解析”。2.域名解析/DNS解析 举个简单的例子,比如我们要上百度,打开浏览器,在地址栏输入www.baidu.com回车就可以跳到百度的页面。这里的www.baidu.com就是域名。浏览器会向本地DNS服务器发出原创 2016-05-24 22:00:15 · 753 阅读 · 1 评论 -
【Linux】关于理解fork()函数的简单例子
1.fork()函数fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,这个新产生的进程称为子进程。一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来的进程的值不同。相当于克隆了一个自己。需要注意的一点:就是调用fork函数之后,一定是两个进程同时执行的代码段是fork函数之后的代码,而之前原创 2016-06-19 00:13:18 · 29320 阅读 · 2 评论 -
【Linux】搭建本地yum源
在实验室的电脑上最小化安装了CentOS6.3之后,发现很多工具都没有安装,vim、setup等都不能用,而电脑暂时又不能联网,yum在线安装也用不了。百度之后,发现我们可以自己搭建本地yum源。 如果电脑有光驱的话,那就很好办,将CentOS-6.3-i386-bin-DVD1写进光盘,然后挂载光盘,之后的事情就很好办了,可惜的是电脑没有光驱,那么只好通过挂载U盘来实现了。 前两天用U原创 2016-06-05 20:02:52 · 1244 阅读 · 0 评论 -
【Linux】samba服务器的安装和配置
1.安装samba(rpm包安装) 首先,检查一下系统中有没有安装samba的RPM包。输入rpm -qa|grep samba没有显示,则表示samba没有安装。 输入yum install samba-3.5.10-125.el6.i686.rpm安装samba samba安装完成!2.samba相关配置文件(这部分内容来自鸟哥的私房菜) 与samba服务器相关的配置文件有:/原创 2016-06-09 23:00:57 · 40628 阅读 · 2 评论 -
【Linux】Shell编程之条件判断
1.按文件类型判断例子: test -e /root/install.log 或 [-e /root/install.log]2.按文件权限判断3.两个文件之间判断原创 2016-05-18 10:48:01 · 481 阅读 · 0 评论 -
【Linux】shell之正则表达式
正则表达式1.什么是正则表达式正则表达式就是一种语法规则,用于字符串的分割,匹配(这是最主要的功能),查找和替换操作。2.正则表达式和通配符通配符有以下这些,主要用于搜索文件名,通配符是完全匹配,ls,find,cp等指令支持通配符* 匹配任意字符? 匹配一个任意字符[] 匹配[]中的一个字符...正则表达式用于匹配文件中的字符串,正则是包含匹配,grep,awk,sed等指令支持正原创 2016-05-16 22:38:49 · 479 阅读 · 0 评论 -
【Linux】shell--批量处理压缩包
下面是用for批量处理压缩包的实现#!/bin/bash#跳到压缩包所在目录cd /home/zk#输出重定向,把后缀为tar.gz的文件写入ls.logls *.tar.gz > ls.log#追加后缀为tgz的文件到ls.logls *.tgz >> ls.logfor i in $( cat ls.log ) do #解压缩 tar -zxf原创 2016-05-30 15:29:37 · 757 阅读 · 0 评论 -
【Linux】shell---判断用户输入的是否为文件
编写一个shell文件,判断用户输入的是否为一个文件,如果是文件的话是个什么样的文件(普通文件,目录还是别的?) 首先介绍一下test命令常用选项 选项 含义 -e 该文件名是否存在 -f 该文件名是否存在且为文件(file) -d 该文件名是否为目录 -z 改文件名是否为空除了使用test命令之外,这些命令也可以用[]来代替(注意,’[‘和’]’两遍两原创 2016-05-30 10:20:40 · 6443 阅读 · 1 评论 -
【Linux】bash的登陆和欢迎信息:/etc/issue,etc/motd
bash登陆界面和欢迎信息可以在/etc/issue文件里面设置。 首先看一下文件内容 可以使用man issue配合man mingetty 命令查看issue内各代码的含义 代码 含义 \d 本地端日期 \l 显示第几个终端机接口 \m 显示硬件等级 \n 显示主机网络名称 \o 显示domain name \r 显示操作系统版本 \原创 2016-05-16 09:27:57 · 1376 阅读 · 0 评论 -
【Linux】Shell的变量
1.变量显示和设置set //查看所有的变量 env //显示当前shell环境下所有的环境变量和内容 变量显示可以用echo命令,显示方式为: echo $变量名 或者echo ${变量名} 变量设置直接用“=”赋值,等号两侧不能有空格,如果要赋予的值中间有空格,则要用“”将变量内容括起来。 NAME=zhengkang 如果希望变量在其他子进程中执行原创 2016-05-15 21:08:32 · 266 阅读 · 0 评论 -
【Linux】makefile文件编写
在window环境下,一个程序从编译到链接全部由IDE一手包办,编程者无需关心makefile文件是如何生成的,但是在linux环境下,则需要自己动手写makefile文件。 下面以一个小例子来说明makefile文件如何编写。 要求: 1.写三个文件,main.cpp ,calc_area.cpp,calc_area.h; 2.在calc_area.h中声明函数 flo原创 2016-05-12 10:20:55 · 1620 阅读 · 0 评论 -
【Linux】文件读写及cat命令的实现
在linux中cat命令是将某个文件的内容显示在标准输出(即屏幕)上。命令格式为:cat 文件名,例如:下面是cat命令的实现: 版本一:#include<stdio.h>void copyfile(FILE *to,FILE *from);int main(int argc,char *argv[]){ FILE *fp; if(argc==1)原创 2016-05-27 15:55:47 · 3231 阅读 · 1 评论 -
【Linux】U盘挂载与取消挂载
在Linux当中,使用mount指令就可以完成U盘的挂载,十分方便,下面是具体步骤。 命令格式: mount [-t vfstype] [-o options] device dir umount device1.首先在命令行中输入fdisk -l指令,可以看到各个设备的分区情况2.插上U盘,设置U盘与虚拟机连接插上U盘后,虚拟机会弹出以下提示框,点确定 又弹出一个原创 2016-05-25 14:05:10 · 11014 阅读 · 1 评论 -
【Linux】NAT模式下关于主机ping不通虚拟机的问题
今天打开虚拟机,然后用Xshell远程连接,发现连接不上。按照以下顺序检查了一遍。1.虚拟机网络连接采用的是NAT模式2.虚拟机IP采用的是自动获取。 IP:192.168.191.130子网掩码:255.255.255.0默认网关:192.168.191.23.虚拟机ping主机,可以ping通主机IP地址为:192.168.1.244 4.主机ping虚拟机,请求超时5.原因分析最大的原原创 2016-05-24 15:20:37 · 59802 阅读 · 43 评论 -
【Linux】sed命令
sed是非交互式的编辑器。它不会修改文件,除非使用shell重定向来保存结果。默认情况下,所有的输出行都被打印到屏幕上。 sed编辑器逐行处理文件(或输入),并将结果发送到屏幕。具体过程如下:首先sed把当前正在处理的行保存在一个临时缓存区中(也称为模式空间),然后处理临时缓冲区中的行,完成后把该行发送到屏幕上。sed每处理完一行就将其从临时缓冲区删除,然后将下一行读入,进行处理和显示。处理完输入原创 2016-05-31 16:21:22 · 354 阅读 · 0 评论 -
【Linux】shell---函数的简单例子
Shell脚本语言中也有函数功能,可以帮助我们简化很多代码。下面看一个例子。 创建一个文件,输入一下内容#!/bin/bashfunction printit(){ echo -n "Your choice is $1" #echo -n表示不输出换行符}function help(){ cat<< HELP echo "this is help manua原创 2016-06-01 17:27:59 · 1232 阅读 · 0 评论 -
为什么主引导记录的内存地址是0x7C00?
作者: 阮一峰 日期: 2015年9月28日原文地址:http://www.ruanyifeng.com/blog/2015/09/0x7c00.html转载 2016-06-07 14:20:42 · 485 阅读 · 0 评论 -
【Linux】软件安装
1.软件包分类Linux下软件包分为两类:源码包 文件名如httpd-2.2.9.tar.gz(这是Apache服务的压缩包),里面包含的是诸如.c文件之类的文件,可以看到源代码,需要编译安装。卸载十分方便,只需要将安装目录删掉即可。不过安装步骤较多,安装时间比较长,容易出错。二进制包 如RPM包,系统默认包,看不到源代码,安装管理简单,安装速度快。还有一种所谓脚本安装包,实际上就是将繁琐原创 2016-06-05 18:27:21 · 297 阅读 · 0 评论